(struct tree_type): New field transparent_union_flag.
authorRichard Kenner <kenner@gcc.gnu.org>
Fri, 19 Aug 1994 21:32:29 +0000 (17:32 -0400)
committerRichard Kenner <kenner@gcc.gnu.org>
Fri, 19 Aug 1994 21:32:29 +0000 (17:32 -0400)
(struct tree_decl): New field transparent_union.
({DECL,TYPE}_TRANSPARENT_UNION): New macros.

From-SVN: r7946

gcc/tree.h

index dbe5ff9cf5cadd8d1c1dc6a9a90238a5d182e0fc..14ed555876e299acf80bccfc4778764b102dd0c9 100644 (file)
@@ -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;