diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1994-08-25 11:30:29 -0400 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1994-08-25 11:30:29 -0400 |
commit | ea3373cd2d2da9752daf0679351945a3b49fd6ee (patch) | |
tree | 5fb722ec35acc163c1d96607141e4a25736db4ac /gcc | |
parent | e0a920510371119420a09281f5858786cd427334 (diff) | |
download | gcc-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.c | 6 |
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)))) |