aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1994-08-25 11:30:29 -0400
committerRichard Kenner <kenner@gcc.gnu.org>1994-08-25 11:30:29 -0400
commitea3373cd2d2da9752daf0679351945a3b49fd6ee (patch)
tree5fb722ec35acc163c1d96607141e4a25736db4ac /gcc
parente0a920510371119420a09281f5858786cd427334 (diff)
downloadgcc-ea3373cd2d2da9752daf0679351945a3b49fd6ee.zip
gcc-ea3373cd2d2da9752daf0679351945a3b49fd6ee.tar.gz
gcc-ea3373cd2d2da9752daf0679351945a3b49fd6ee.tar.bz2
(type_lists_compatible_p): Treat transparent unions just like unnamed
ones. From-SVN: r7979
Diffstat (limited to 'gcc')
-rw-r--r--gcc/c-typeck.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/gcc/c-typeck.c b/gcc/c-typeck.c
index bb638dc..d828ce7 100644
--- a/gcc/c-typeck.c
+++ b/gcc/c-typeck.c
@@ -655,7 +655,8 @@ type_lists_compatible_p (args1, args2)
/* Allow wait (union {union wait *u; int *i} *)
and wait (union wait *) to be compatible. */
if (TREE_CODE (TREE_VALUE (args1)) == UNION_TYPE
- && TYPE_NAME (TREE_VALUE (args1)) == 0
+ && (TYPE_NAME (TREE_VALUE (args1)) == 0
+ || TYPE_TRANSPARENT_UNION (TREE_VALUE (args1)))
&& TREE_CODE (TYPE_SIZE (TREE_VALUE (args1))) == INTEGER_CST
&& tree_int_cst_equal (TYPE_SIZE (TREE_VALUE (args1)),
TYPE_SIZE (TREE_VALUE (args2))))
@@ -669,7 +670,8 @@ type_lists_compatible_p (args1, args2)
return 0;
}
else if (TREE_CODE (TREE_VALUE (args2)) == UNION_TYPE
- && TYPE_NAME (TREE_VALUE (args2)) == 0
+ && (TYPE_NAME (TREE_VALUE (args2)) == 0
+ || TYPE_TRANSPARENT_UNION (TREE_VALUE (args2)))
&& TREE_CODE (TYPE_SIZE (TREE_VALUE (args2))) == INTEGER_CST
&& tree_int_cst_equal (TYPE_SIZE (TREE_VALUE (args2)),
TYPE_SIZE (TREE_VALUE (args1))))