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/tree.h | |
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/tree.h')
-rw-r--r-- | gcc/tree.h | 12 |
1 files changed, 3 insertions, 9 deletions
@@ -2199,12 +2199,11 @@ struct tree_decl_common GTY(()) /* In LABEL_DECL, this is DECL_ERROR_ISSUED. In VAR_DECL and PARM_DECL, this is DECL_REGISTER. */ unsigned decl_flag_0 : 1; - /* In FIELD_DECL, this is DECL_PACKED - In PARM_DECL, this is DECL_TRANSPARENT_UNION. */ + /* In FIELD_DECL, this is DECL_PACKED. */ unsigned decl_flag_1 : 1; /* In FIELD_DECL, this is DECL_BIT_FIELD In VAR_DECL and FUNCTION_DECL, this is DECL_EXTERNAL. - In TYPE_DECL, this is TYPE_DECL_SUPRESS_DEBUG*/ + In TYPE_DECL, this is TYPE_DECL_SUPRESS_DEBUG. */ unsigned decl_flag_2 : 1; /* In FIELD_DECL, this is DECL_NONADDRESSABLE_P In VAR_DECL and PARM_DECL, this is DECL_HAS_VALUE_EXPR. */ @@ -2386,12 +2385,6 @@ struct tree_const_decl GTY(()) where the data was actually passed. */ #define DECL_INCOMING_RTL(NODE) (PARM_DECL_CHECK (NODE)->parm_decl.incoming_rtl) -/* Used in PARM_DECLs whose type are unions to indicate that the - argument should be passed in the same way that the first union - alternative would be passed. */ -#define DECL_TRANSPARENT_UNION(NODE) \ - (PARM_DECL_CHECK (NODE)->decl_common.decl_flag_1) - struct tree_parm_decl GTY(()) { struct tree_decl_with_rtl common; @@ -3989,6 +3982,7 @@ extern bool debug_find_tree (tree, tree); /* This is in tree-inline.c since the routine uses data structures from the inliner. */ extern tree unsave_expr_now (tree); +extern tree build_duplicate_type (tree); /* In emit-rtl.c */ extern rtx emit_line_note (location_t); |