diff options
author | Tom Wood <wood@gnu.org> | 1992-04-13 10:58:19 +0000 |
---|---|---|
committer | Tom Wood <wood@gnu.org> | 1992-04-13 10:58:19 +0000 |
commit | 77f934bbbf75bddbe4f31482025c68d627fedda7 (patch) | |
tree | 2d76bfd6162561702e92e4852a638d3bbc4f389a | |
parent | 4af3895e739fefe2d158ab1c632d7d860abd4705 (diff) | |
download | gcc-77f934bbbf75bddbe4f31482025c68d627fedda7.zip gcc-77f934bbbf75bddbe4f31482025c68d627fedda7.tar.gz gcc-77f934bbbf75bddbe4f31482025c68d627fedda7.tar.bz2 |
*** empty log message ***
From-SVN: r732
-rw-r--r-- | gcc/c-decl.c | 11 | ||||
-rw-r--r-- | gcc/objc/objc-act.c | 4 | ||||
-rw-r--r-- | gcc/stor-layout.c | 2 | ||||
-rw-r--r-- | gcc/tree.h | 19 |
4 files changed, 21 insertions, 15 deletions
diff --git a/gcc/c-decl.c b/gcc/c-decl.c index 1117958..4890d88 100644 --- a/gcc/c-decl.c +++ b/gcc/c-decl.c @@ -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; diff --git a/gcc/objc/objc-act.c b/gcc/objc/objc-act.c index a92406c..943024c 100644 --- a/gcc/objc/objc-act.c +++ b/gcc/objc/objc-act.c @@ -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); } diff --git a/gcc/stor-layout.c b/gcc/stor-layout.c index c2cdae5..dc62a6d 100644 --- a/gcc/stor-layout.c +++ b/gcc/stor-layout.c @@ -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; @@ -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; |