From 4244ec23df13380a2e1e5377b9e7dc54b3bf7c8b Mon Sep 17 00:00:00 2001 From: Paolo Carlini Date: Sat, 1 Feb 2014 09:24:42 +0000 Subject: [PATCH] re PR c++/51219 (ICE with empty bit-fields) /cp 2014-02-01 Paolo Carlini PR c++/51219 * typeck2.c (process_init_constructor_record): Just skip unnamed bit-fields. /testsuite 2014-02-01 Paolo Carlini PR c++/51219 * g++.dg/init/bitfield5.C: New. From-SVN: r207383 --- gcc/cp/ChangeLog | 6 ++++++ gcc/cp/typeck2.c | 6 +----- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/g++.dg/init/bitfield5.C | 12 ++++++++++++ 4 files changed, 24 insertions(+), 5 deletions(-) create mode 100644 gcc/testsuite/g++.dg/init/bitfield5.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index c10c2942b1c..2e09c884974 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2014-02-01 Paolo Carlini + + PR c++/51219 + * typeck2.c (process_init_constructor_record): Just skip unnamed + bit-fields. + 2014-01-31 Jason Merrill PR c++/59469 diff --git a/gcc/cp/typeck2.c b/gcc/cp/typeck2.c index a3fe2e39820..546b83fed72 100644 --- a/gcc/cp/typeck2.c +++ b/gcc/cp/typeck2.c @@ -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; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 302425935df..5cee1feb7da 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2014-02-01 Paolo Carlini + + PR c++/51219 + * g++.dg/init/bitfield5.C: New. + 2014-02-01 Jakub Jelinek 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 index 00000000000..58f686d9cec --- /dev/null +++ b/gcc/testsuite/g++.dg/init/bitfield5.C @@ -0,0 +1,12 @@ +// PR c++/51219 + +struct A +{ + int i; + int : 8; +}; + +void foo() +{ + A a = { 0 }; +} -- 2.30.2