/cp
2012-01-01 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/16603
* decl.c (build_enumerator): Don't call perform_integral_promotions
on the value.
/testsuite
2012-01-01 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/16603
* g++.dg/parse/enum8.C: New.
From-SVN: r182776
+2012-01-01 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/16603
+ * decl.c (build_enumerator): Don't call perform_integral_promotions
+ on the value.
+
2012-01-01 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/51379
{
value = cxx_constant_value (value);
- if (TREE_CODE (value) == INTEGER_CST
- && INTEGRAL_OR_ENUMERATION_TYPE_P (TREE_TYPE (value)))
+ if (TREE_CODE (value) != INTEGER_CST
+ || ! INTEGRAL_OR_ENUMERATION_TYPE_P (TREE_TYPE (value)))
{
- value = perform_integral_promotions (value);
- }
- else
- {
- error ("enumerator value for %qD is not an integer constant", name);
+ error ("enumerator value for %qD is not an integer constant",
+ name);
value = NULL_TREE;
}
}
+2012-01-01 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/16603
+ * g++.dg/parse/enum8.C: New.
+
2012-01-01 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/51379
--- /dev/null
+// PR c++/16603
+
+char const c = 'q';
+
+enum
+ {
+ x = c,
+ y = sizeof(x)
+ };
+
+int test[y == sizeof(char) ? 1 : -1];