aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1995-04-26 08:35:12 -0400
committerRichard Kenner <kenner@gcc.gnu.org>1995-04-26 08:35:12 -0400
commit4160009ff82996166b12cd9dd5b00228ccf28e91 (patch)
treefeb69da4380143623031b2783d8e36b397fc765f
parente4376e63ac291d3e6f651162f6af464fe3eca563 (diff)
downloadgcc-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.c5
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))