diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1995-04-26 08:35:12 -0400 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1995-04-26 08:35:12 -0400 |
commit | 4160009ff82996166b12cd9dd5b00228ccf28e91 (patch) | |
tree | feb69da4380143623031b2783d8e36b397fc765f | |
parent | e4376e63ac291d3e6f651162f6af464fe3eca563 (diff) | |
download | gcc-4160009ff82996166b12cd9dd5b00228ccf28e91.zip gcc-4160009ff82996166b12cd9dd5b00228ccf28e91.tar.gz gcc-4160009ff82996166b12cd9dd5b00228ccf28e91.tar.bz2 |
(output_init_element): Constructor is not simple if a bitfield is
being assigned a non-integer.
From-SVN: r9472
-rw-r--r-- | gcc/c-typeck.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/gcc/c-typeck.c b/gcc/c-typeck.c index fd0eae0..1873613 100644 --- a/gcc/c-typeck.c +++ b/gcc/c-typeck.c @@ -5707,7 +5707,10 @@ output_init_element (value, type, field, pending) constructor_erroneous = 1; else if (!TREE_CONSTANT (value)) constructor_constant = 0; - else if (initializer_constant_valid_p (value, TREE_TYPE (value)) == 0) + else if (initializer_constant_valid_p (value, TREE_TYPE (value)) == 0 + || ((TREE_CODE (constructor_type) == RECORD_TYPE + || TREE_CODE (constructor_type) == UNION_TYPE) + && DECL_BIT_FIELD (field) && TREE_CODE (value) != INTEGER_CST)) constructor_simple = 0; if (require_constant_value && ! TREE_CONSTANT (value)) |