OSDN Git Service

(output_init_element): Call default_conversion here.
authorrms <rms@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 6 Aug 1993 07:08:12 +0000 (07:08 +0000)
committerrms <rms@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 6 Aug 1993 07:08:12 +0000 (07:08 +0000)
Set constructor_erroneous, etc., here.
(process_init_element): Not here.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@5086 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/c-typeck.c

index a08b723..ec9d44e 100644 (file)
@@ -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",