re PR c++/53661 (Wrong narrowing conversion warning with -std=c++11)

PR c++/53661
	* typeck2.c (check_narrowing): Avoid false positives on conversion
	from enumeral type.

From-SVN: r191395
This commit is contained in:
Jason Merrill 2012-09-17 12:06:03 -04:00 committed by Jason Merrill
parent f57f20bb75
commit 5e23183b93
4 changed files with 23 additions and 0 deletions

View File

@ -1,3 +1,9 @@
2012-09-14 Jason Merrill <jason@redhat.com>
PR c++/53661
* typeck2.c (check_narrowing): Avoid false positives on conversion
from enumeral type.
2012-09-14 Marc Glisse <marc.glisse@inria.fr>
PR c++/54427

View File

@ -787,6 +787,9 @@ check_narrowing (tree type, tree init)
else if (INTEGRAL_OR_ENUMERATION_TYPE_P (ftype)
&& CP_INTEGRAL_TYPE_P (type))
{
if (TREE_CODE (ftype) == ENUMERAL_TYPE)
/* Check for narrowing based on the values of the enumeration. */
ftype = ENUM_UNDERLYING_TYPE (ftype);
if ((tree_int_cst_lt (TYPE_MAX_VALUE (type),
TYPE_MAX_VALUE (ftype))
|| tree_int_cst_lt (TYPE_MIN_VALUE (ftype),

View File

@ -1,3 +1,8 @@
2012-09-14 Jason Merrill <jason@redhat.com>
PR c++/53661
* g++.dg/init/aggr9.C: New.
2012-09-17 Eric Botcazou <ebotcazou@adacore.com>
* gnat.dg/loop_optimization12.ad[sb]: New test.

View File

@ -0,0 +1,9 @@
// PR c++/53661
enum Code {
SUCCESS = 0
};
Code a;
int r[] = {a};