diff options
author | Richard Stallman <rms@gnu.org> | 1993-08-06 07:08:12 +0000 |
---|---|---|
committer | Richard Stallman <rms@gnu.org> | 1993-08-06 07:08:12 +0000 |
commit | d3ab975391c98188899c1519703af44995d47c53 (patch) | |
tree | b2bf95e9cccfdb9056549073ba377223530d114b /gcc | |
parent | fda59a9a3fbfd129dbe3869e7aef5530e6ac0229 (diff) | |
download | gcc-d3ab975391c98188899c1519703af44995d47c53.zip gcc-d3ab975391c98188899c1519703af44995d47c53.tar.gz gcc-d3ab975391c98188899c1519703af44995d47c53.tar.bz2 |
(output_init_element): Call default_conversion here.
Set constructor_erroneous, etc., here.
(process_init_element): Not here.
From-SVN: r5086
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/c-typeck.c | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/gcc/c-typeck.c b/gcc/c-typeck.c index a08b723..ec9d44e 100644 --- a/gcc/c-typeck.c +++ b/gcc/c-typeck.c @@ -5734,6 +5734,18 @@ output_init_element (value, type, field, pending) { int duplicate = 0; + if (TREE_CODE (TREE_TYPE (value)) == FUNCTION_TYPE + || (TREE_CODE (TREE_TYPE (value)) == ARRAY_TYPE + && comptypes (TREE_TYPE (value), type))) + value = default_conversion (value); + + if (value == error_mark_node) + constructor_erroneous = 1; + else if (!TREE_CONSTANT (value)) + constructor_constant = 0; + else if (initializer_constant_valid_p (value, TREE_TYPE (value)) == 0) + constructor_simple = 0; + if (require_constant_value && ! TREE_CONSTANT (value)) { error_init ("initializer element%s is not constant", @@ -6026,18 +6038,6 @@ process_init_element (value) return; } - if (value != 0) - value = default_conversion (value); - - if (value == 0) - ; - else if (value == error_mark_node) - constructor_erroneous = 1; - else if (!TREE_CONSTANT (value)) - constructor_constant = 0; - else if (initializer_constant_valid_p (value, TREE_TYPE (value)) == 0) - constructor_simple = 0; - if (constructor_stack->replacement_value != 0) { error_init ("excess elements in struct initializer%s", |