re PR c++/51219 (ICE with empty bit-fields)
authorPaolo Carlini <paolo.carlini@oracle.com>
Sat, 1 Feb 2014 09:24:42 +0000 (09:24 +0000)
committerPaolo Carlini <paolo@gcc.gnu.org>
Sat, 1 Feb 2014 09:24:42 +0000 (09:24 +0000)
/cp
2014-02-01  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/51219
* typeck2.c (process_init_constructor_record): Just skip unnamed
bit-fields.

/testsuite
2014-02-01  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/51219
* g++.dg/init/bitfield5.C: New.

From-SVN: r207383

gcc/cp/ChangeLog
gcc/cp/typeck2.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/init/bitfield5.C [new file with mode: 0644]

index c10c2942b1ccd697b1b4035c1854f6a9431e909e..2e09c8849745db5a5da039948b9124eb493b2622 100644 (file)
@@ -1,3 +1,9 @@
+2014-02-01  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/51219
+       * typeck2.c (process_init_constructor_record): Just skip unnamed
+       bit-fields.
+
 2014-01-31  Jason Merrill  <jason@redhat.com>
 
        PR c++/59469
index a3fe2e39820697c0cf46b9670fce24d6b3fc14bc..546b83fed7209cb028499fa6e40e598654d610e7 100644 (file)
@@ -1268,11 +1268,7 @@ process_init_constructor_record (tree type, tree init,
       tree type;
 
       if (!DECL_NAME (field) && DECL_C_BIT_FIELD (field))
-       {
-         flags |= picflag_from_initializer (integer_zero_node);
-         CONSTRUCTOR_APPEND_ELT (v, field, integer_zero_node);
-         continue;
-       }
+       continue;
 
       if (TREE_CODE (field) != FIELD_DECL || DECL_ARTIFICIAL (field))
        continue;
index 302425935df9e0372ecf228b39df4454b0cd1b92..5cee1feb7da8872196ccc829fdd8cb5164e5112f 100644 (file)
@@ -1,3 +1,8 @@
+2014-02-01  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/51219
+       * g++.dg/init/bitfield5.C: New.
+
 2014-02-01  Jakub Jelinek  <jakub@redhat.com>
 
        PR tree-optimization/60003
diff --git a/gcc/testsuite/g++.dg/init/bitfield5.C b/gcc/testsuite/g++.dg/init/bitfield5.C
new file mode 100644 (file)
index 0000000..58f686d
--- /dev/null
@@ -0,0 +1,12 @@
+// PR c++/51219
+
+struct A
+{
+  int i;
+  int : 8;
+};
+
+void foo()
+{
+  A a = { 0 };
+}