(build_c_cast): When casting to union, if value is array
authorRichard Stallman <rms@gnu.org>
Thu, 15 Jul 1993 05:40:42 +0000 (05:40 +0000)
committerRichard Stallman <rms@gnu.org>
Thu, 15 Jul 1993 05:40:42 +0000 (05:40 +0000)
or function, do default_conversion.

From-SVN: r4926

gcc/c-typeck.c

index 8ff4da5524fc130e296b1650904747a7951165a6..85d2058f9005328cf3a1735e4d4ba5a4340f6b53 100644 (file)
@@ -3854,6 +3854,10 @@ build_c_cast (type, expr)
   else if (TREE_CODE (type) == UNION_TYPE)
     {
       tree field;
+      if (TREE_CODE (TREE_TYPE (value)) == ARRAY_TYPE
+         || TREE_CODE (TREE_TYPE (value)) == FUNCTION_TYPE)
+       value = default_conversion (value);
+
       for (field = TYPE_FIELDS (type); field; field = TREE_CHAIN (field))
        if (comptypes (TYPE_MAIN_VARIANT (TREE_TYPE (field)),
                       TYPE_MAIN_VARIANT (TREE_TYPE (value))))