aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1994-08-19 17:33:13 -0400
committerRichard Kenner <kenner@gcc.gnu.org>1994-08-19 17:33:13 -0400
commit3f46679a3cf93a8755c10ba7ab10774112d9f28d (patch)
tree39a140228a25f593d0798eed3031aed12e479316
parentec83f2b3818ca1f7b8520e9c0577b719db92b952 (diff)
downloadgcc-3f46679a3cf93a8755c10ba7ab10774112d9f28d.zip
gcc-3f46679a3cf93a8755c10ba7ab10774112d9f28d.tar.gz
gcc-3f46679a3cf93a8755c10ba7ab10774112d9f28d.tar.bz2
(assign_parms): If parm is transparent union, use type of first field.
From-SVN: r7948
-rw-r--r--gcc/function.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/gcc/function.c b/gcc/function.c
index 947972f..9efbc41 100644
--- a/gcc/function.c
+++ b/gcc/function.c
@@ -3150,6 +3150,13 @@ assign_parms (fndecl, second_time)
continue;
}
+ /* If the parm is to be passed as a transparent union, use the
+ type of the first field for the tests below. We have already
+ verified that the modes are the same. */
+ if (DECL_TRANSPARENT_UNION (parm)
+ || TYPE_TRANSPARENT_UNION (passed_type))
+ passed_type = TREE_TYPE (TYPE_FIELDS (passed_type));
+
/* See if this arg was passed by invisible reference. It is if
it is an object whose size depends on the contents of the
object itself or if the machine requires these objects be passed