*** empty log message ***
authorTom Wood <wood@gnu.org>
Mon, 13 Apr 1992 10:58:19 +0000 (10:58 +0000)
committerTom Wood <wood@gnu.org>
Mon, 13 Apr 1992 10:58:19 +0000 (10:58 +0000)
From-SVN: r732

gcc/c-decl.c
gcc/objc/objc-act.c
gcc/stor-layout.c
gcc/tree.h

index 1117958dd4f1d87f5667688a784b57a952f77ba2..4890d8871b685acb7b8d0c8f3b4e67055b76fec2 100644 (file)
@@ -2552,8 +2552,9 @@ init_decl_processing ()
   /* In an ANSI C program, it is okay to supply built-in meanings
      for these functions, since applications cannot validly use them
      with any other meaning.
-     However, a traditional C program can do so.  */
-  if (!flag_traditional)
+     However, a traditional C program can do so.
+     Also, honor the -fno-builtin option.  */
+  if (!flag_traditional && !flag_no_builtin)
     {
       builtin_function ("abs", int_ftype_int, BUILT_IN_ABS, 0);
       builtin_function ("fabs", double_ftype_double, BUILT_IN_FABS, 0);
@@ -4431,7 +4432,7 @@ finish_struct (t, fieldlist)
 
   /* Install struct as DECL_CONTEXT of each field decl.
      Also process specified field sizes.
-     Set DECL_FRAME_SIZE to the specified size, or 0 if none specified.
+     Set DECL_FIELD_SIZE to the specified size, or 0 if none specified.
      The specified size is found in the DECL_INITIAL.
      Store 0 there, except for ": 0" fields (so we can find them
      and delete them, below).  */
@@ -4439,7 +4440,7 @@ finish_struct (t, fieldlist)
   for (x = fieldlist; x; x = TREE_CHAIN (x))
     {
       DECL_CONTEXT (x) = t;
-      DECL_FRAME_SIZE (x) = 0;
+      DECL_FIELD_SIZE (x) = 0;
 
       /* If any field is const, the structure type is pseudo-const.  */
       if (TREE_READONLY (x))
@@ -4514,7 +4515,7 @@ finish_struct (t, fieldlist)
        {
          register int width = TREE_INT_CST_LOW (DECL_INITIAL (x));
 
-         DECL_FRAME_SIZE (x) = width;
+         DECL_FIELD_SIZE (x) = width;
          DECL_BIT_FIELD (x) = 1;
          DECL_INITIAL (x) = NULL;
 
index a92406cc4adca847ab0cbf2a8731c196ef500f64..943024c74d41986be1ccad9eb7eba6ee7d3426aa 100644 (file)
@@ -1282,7 +1282,7 @@ objc_copy_list (list, head)
         I create the situation it expects...s.naroff (7/23/89).
         */
       if (DECL_BIT_FIELD (tail) && DECL_INITIAL (tail) == 0)
-       DECL_INITIAL (tail) = build_int_2 (DECL_FRAME_SIZE (tail), 0);
+       DECL_INITIAL (tail) = build_int_2 (DECL_FIELD_SIZE (tail), 0);
 
       newlist = chainon (newlist, tail);
       list = TREE_CHAIN (list);
@@ -3866,7 +3866,7 @@ encode_field_decl (field_decl, str, format)
      int format;
 {
   if (DECL_BIT_FIELD (field_decl))
-    encode_bitfield (DECL_FRAME_SIZE (field_decl), str, format);
+    encode_bitfield (DECL_FIELD_SIZE (field_decl), str, format);
   else
     encode_type (TREE_TYPE (field_decl), str, format);
 }
index c2cdae5ddc9f6e8dd79f8f266c5fbc95d3ca267b..dc62a6d58521060468fe45982dd72d3e6e41662a 100644 (file)
@@ -150,7 +150,7 @@ layout_decl (decl, known_align)
 {
   register tree type = TREE_TYPE (decl);
   register enum tree_code code = TREE_CODE (decl);
-  int spec_size = DECL_FRAME_SIZE (decl);
+  int spec_size = DECL_FIELD_SIZE (decl);
 
   if (code == CONST_DECL)
     return;
index dd01f6e967c75196e796fe161182748733b55f1a..f4970863aeb6c0dc6d7c2da3791e035b805b995b 100644 (file)
@@ -673,9 +673,9 @@ struct tree_type
 #define DECL_RTL(NODE) ((NODE)->decl.rtl)
 /* For PARM_DECL, holds an RTL for the stack slot or register
    where the data was actually passed.  */
-#define DECL_INCOMING_RTL(NODE) ((NODE)->decl.saved_insns)
+#define DECL_INCOMING_RTL(NODE) ((NODE)->decl.saved_insns.r)
 /* For FUNCTION_DECL, if it is inline, holds the saved insn chain.  */
-#define DECL_SAVED_INSNS(NODE) ((NODE)->decl.saved_insns)
+#define DECL_SAVED_INSNS(NODE) ((NODE)->decl.saved_insns.r)
 /* For FUNCTION_DECL for built-in function.  */
 #define DECL_FUNCTION_CODE(NODE) \
  ((enum built_in_function) (NODE)->decl.frame_size)
@@ -684,6 +684,8 @@ struct tree_type
 /* For FUNCTION_DECL, if it is inline,
    holds the size of the stack frame, as an integer.  */
 #define DECL_FRAME_SIZE(NODE) ((NODE)->decl.frame_size)
+/* For a FIELD_DECL, holds the size of the member as an integer.  */
+#define DECL_FIELD_SIZE(NODE) ((NODE)->decl.saved_insns.i)
 
 /* The DECL_VINDEX is used for FUNCTION_DECLS in two different ways.
    Before the struct containing the FUNCTION_DECL is laid out,
@@ -801,12 +803,15 @@ struct tree_decl
   struct rtx_def *rtl; /* acts as link to register transfer language
                                   (rtl) info */
   /* For a FUNCTION_DECL, if inline, this is the size of frame needed.
-     If built-in, this is the code for which built-in function.
-     For any other kind of decl, this is the alignment.  */
+     If built-in, this is the code for which built-in function.  */
   int frame_size;
-  struct rtx_def *saved_insns; /* For FUNCTION_DECLs: points to insn that
-                                  constitutes its definition on the
-                                  permanent obstack.  */
+  /* For FUNCTION_DECLs: points to insn that constitutes its definition
+     on the permanent obstack.  For any other kind of decl, this is the
+     alignment.  */
+  union {
+    struct rtx_def *r;
+    int i;
+  } saved_insns;
   union tree_node *vindex;
   /* Points to a structure whose details depend on the language in use.  */
   struct lang_decl *lang_specific;