Commit 77f934bb by Tom Wood

*** empty log message ***

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