diff options
author | Richard Henderson <rth@redhat.com> | 2005-10-12 16:34:09 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2005-10-12 16:34:09 -0700 |
commit | 52dd234b210c06bea54ef726995e1fce035329be (patch) | |
tree | e0ba09b20b9401b57ddfd7bb96ac65cafde86a0b /gcc/function.c | |
parent | 6deb03391308dcffb9bb4a4155cd27d7e60329f9 (diff) | |
download | gcc-52dd234b210c06bea54ef726995e1fce035329be.zip gcc-52dd234b210c06bea54ef726995e1fce035329be.tar.gz gcc-52dd234b210c06bea54ef726995e1fce035329be.tar.bz2 |
re PR c/24255 (__transparent_union__ mishandled)
PR c/24255
* tree.h (DECL_TRANSPARENT_UNION): Remove.
* function.c (assign_parm_find_data_types): Don't support it.
* print-tree.c (print_node): Likewise.
* c-common.c (handle_transparent_union_attribute): Likewise.
Use build_duplicate_type.
* tree-inline.c (remap_type_1): Split out of remap_type;
properly remap aggregate fields.
(build_duplicate_type): New.
* doc/extend.texi (Variable Attributes): Remove documentation
for transparent_union.
From-SVN: r105338
Diffstat (limited to 'gcc/function.c')
-rw-r--r-- | gcc/function.c | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/gcc/function.c b/gcc/function.c index 2df1eff..7cff2a0 100644 --- a/gcc/function.c +++ b/gcc/function.c @@ -2013,9 +2013,8 @@ assign_parm_find_data_types (struct assign_parm_data_all *all, tree parm, /* 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) - || (TREE_CODE (passed_type) == UNION_TYPE - && TYPE_TRANSPARENT_UNION (passed_type))) + if (TREE_CODE (passed_type) == UNION_TYPE + && TYPE_TRANSPARENT_UNION (passed_type)) passed_type = TREE_TYPE (TYPE_FIELDS (passed_type)); /* See if this arg was passed by invisible reference. */ |