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: r191398
This commit is contained in:
Jason Merrill 2012-09-17 12:41:41 -04:00 committed by Jason Merrill
parent 7861a8cc95
commit 953c3983ff
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-13 Jason Merrill <jason@redhat.com>
PR c++/53839

View File

@ -786,6 +786,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-13 Tobias Burnus <burnus@net-b.de>
PR fortran/54556

View File

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