diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1994-08-19 17:33:13 -0400 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1994-08-19 17:33:13 -0400 |
commit | 3f46679a3cf93a8755c10ba7ab10774112d9f28d (patch) | |
tree | 39a140228a25f593d0798eed3031aed12e479316 | |
parent | ec83f2b3818ca1f7b8520e9c0577b719db92b952 (diff) | |
download | gcc-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.c | 7 |
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 |