diff options
author | Jonathan Wakely <jwakely.gcc@gmail.com> | 2013-02-16 01:07:11 +0000 |
---|---|---|
committer | Paolo Carlini <paolo@gcc.gnu.org> | 2013-02-16 01:07:11 +0000 |
commit | 4d0648ac8ff3df5e4525fe8da00906493742c72c (patch) | |
tree | 85717b2a33befec7e492adbd43dfb94183fd701a | |
parent | 7102a358e3dce77c1fb1cc19b998a8505e637e58 (diff) | |
download | gcc-4d0648ac8ff3df5e4525fe8da00906493742c72c.zip gcc-4d0648ac8ff3df5e4525fe8da00906493742c72c.tar.gz gcc-4d0648ac8ff3df5e4525fe8da00906493742c72c.tar.bz2 |
re PR c++/51242 ([C++11] Unable to use strongly typed enums as bit fields)
/cp
2013-02-15 Jonathan Wakely <jwakely.gcc@gmail.com>
Paolo Carlini <paolo.carlini@oracle.com>
PR c++/51242
* decl2.c (grokbitfield): Allow scoped enumeration types.
/testsuite
2013-02-15 Jonathan Wakely <jwakely.gcc@gmail.com>
Paolo Carlini <paolo.carlini@oracle.com>
PR c++/51242
* g++.dg/cpp0x/enum23.C: New.
Co-Authored-By: Paolo Carlini <paolo.carlini@oracle.com>
From-SVN: r196100
-rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/decl2.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/enum23.C | 9 |
4 files changed, 22 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 921c6a4..52fac3a 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2013-02-15 Jonathan Wakely <jwakely.gcc@gmail.com> + Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/51242 + * decl2.c (grokbitfield): Allow scoped enumeration types. + 2013-02-15 Jason Merrill <jason@redhat.com> PR c++/54276 diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c index 4496395..82bc6f7 100644 --- a/gcc/cp/decl2.c +++ b/gcc/cp/decl2.c @@ -1028,7 +1028,7 @@ grokbitfield (const cp_declarator *declarator, if (TREE_CODE (value) == VOID_TYPE) return void_type_node; - if (!INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P (TREE_TYPE (value)) + if (!INTEGRAL_OR_ENUMERATION_TYPE_P (TREE_TYPE (value)) && (POINTER_TYPE_P (value) || !dependent_type_p (TREE_TYPE (value)))) { diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 1e260eb..d2e1e57 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2013-02-15 Jonathan Wakely <jwakely.gcc@gmail.com> + Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/51242 + * g++.dg/cpp0x/enum23.C: New. + 2013-02-15 Oleg Endo <olegendo@gcc.gnu.org> PR target/54685 diff --git a/gcc/testsuite/g++.dg/cpp0x/enum23.C b/gcc/testsuite/g++.dg/cpp0x/enum23.C new file mode 100644 index 0000000..b2378e1 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/enum23.C @@ -0,0 +1,9 @@ +// PR c++/51242 +// { dg-do compile { target c++11 } } + +enum class MyEnum { A = 1 }; + +struct MyClass +{ + MyEnum Field1 : 3; // { dg-bogus "warning: 'MyClass::Field1' is too small" "" { xfail *-*-* } } +}; |