aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Stallman <rms@gnu.org>1993-07-15 05:40:42 +0000
committerRichard Stallman <rms@gnu.org>1993-07-15 05:40:42 +0000
commit0c16ddf7006c4d440a3a8840b7ed41dbed080be0 (patch)
treee4a0ac07cea0fad564f6a789d2a440c30f3d6093
parentc8ab446488fa0117562e03f78682c1e8f1b2eafa (diff)
downloadgcc-0c16ddf7006c4d440a3a8840b7ed41dbed080be0.zip
gcc-0c16ddf7006c4d440a3a8840b7ed41dbed080be0.tar.gz
gcc-0c16ddf7006c4d440a3a8840b7ed41dbed080be0.tar.bz2
(build_c_cast): When casting to union, if value is array
or function, do default_conversion. From-SVN: r4926
-rw-r--r--gcc/c-typeck.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/gcc/c-typeck.c b/gcc/c-typeck.c
index 8ff4da5..85d2058 100644
--- a/gcc/c-typeck.c
+++ b/gcc/c-typeck.c
@@ -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))))