aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1994-08-19 17:32:29 -0400
committerRichard Kenner <kenner@gcc.gnu.org>1994-08-19 17:32:29 -0400
commitadb230612706c2ae934ad2b5432078b0d8596655 (patch)
tree5689db88efbbe7efe5a1173c34f1c5bfa5e619c4
parent17c962890433bdadc7228dbe967c97f9e38581c4 (diff)
downloadgcc-adb230612706c2ae934ad2b5432078b0d8596655.zip
gcc-adb230612706c2ae934ad2b5432078b0d8596655.tar.gz
gcc-adb230612706c2ae934ad2b5432078b0d8596655.tar.bz2
(struct tree_type): New field transparent_union_flag.
(struct tree_decl): New field transparent_union. ({DECL,TYPE}_TRANSPARENT_UNION): New macros. From-SVN: r7946
-rw-r--r--gcc/tree.h15
1 files changed, 13 insertions, 2 deletions
diff --git a/gcc/tree.h b/gcc/tree.h
index dbe5ff9..14ed555 100644
--- a/gcc/tree.h
+++ b/gcc/tree.h
@@ -619,6 +619,10 @@ struct tree_block
function when they are created. */
#define TYPE_NEEDS_CONSTRUCTING(NODE) ((NODE)->type.needs_constructing_flag)
+/* Indicates that objects of this type (a UNION_TYPE), should be passed
+ the same way that the first union alternative would be passed. */
+#define TYPE_TRANSPARENT_UNION(NODE) ((NODE)->type.transparent_union_flag)
+
struct tree_type
{
char common[sizeof (struct tree_common)];
@@ -637,6 +641,7 @@ struct tree_type
unsigned string_flag : 1;
unsigned no_force_blk_flag : 1;
unsigned needs_constructing_flag : 1;
+ unsigned transparent_union_flag : 1;
unsigned lang_flag_0 : 1;
unsigned lang_flag_1 : 1;
unsigned lang_flag_2 : 1;
@@ -644,7 +649,7 @@ struct tree_type
unsigned lang_flag_4 : 1;
unsigned lang_flag_5 : 1;
unsigned lang_flag_6 : 1;
- /* room for 6 more bits */
+ /* room for 5 more bits */
unsigned int align;
union tree_node *pointer_to;
@@ -928,6 +933,11 @@ struct tree_type
so it should not be output now. */
#define DECL_DEFER_OUTPUT(NODE) ((NODE)->decl.defer_output)
+/* 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) ((NODE)->decl.transparent_union)
+
/* Additional flags for language-specific uses. */
#define DECL_LANG_FLAG_0(NODE) ((NODE)->decl.lang_flag_0)
#define DECL_LANG_FLAG_1(NODE) ((NODE)->decl.lang_flag_1)
@@ -963,7 +973,8 @@ struct tree_decl
unsigned in_system_header_flag : 1;
unsigned common_flag : 1;
unsigned defer_output : 1;
- /* room for five more */
+ unsigned transparent_union : 1;
+ /* room for four more */
unsigned lang_flag_0 : 1;
unsigned lang_flag_1 : 1;