summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/print-tree.c8
-rw-r--r--gcc/tree.c3
-rw-r--r--gcc/tree.h8
3 files changed, 13 insertions, 6 deletions
diff --git a/gcc/print-tree.c b/gcc/print-tree.c
index 50983a9e76b..9001373cd81 100644
--- a/gcc/print-tree.c
+++ b/gcc/print-tree.c
@@ -343,8 +343,12 @@ print_node (file, prefix, node, indent)
print_node (file, "size", DECL_SIZE (node), indent + 4);
indent_to (file, indent + 3);
- fprintf (file, " align %d", DECL_ALIGN (node));
- fprintf (file, " frame_size %d", DECL_FRAME_SIZE (node));
+ if (TREE_CODE (node) != FUNCTION_DECL)
+ fprintf (file, " align %d", DECL_ALIGN (node));
+ else if (TREE_INLINE (node))
+ fprintf (file, " frame_size %d", DECL_FRAME_SIZE (node));
+ else if (DECL_BUILT_IN (node))
+ fprintf (file, " built-in code %d", DECL_FUNCTION_CODE (node));
if (TREE_CODE (node) == FIELD_DECL)
print_node (file, "bitpos", DECL_FIELD_BITPOS (node), indent + 4);
print_node_brief (file, "context", DECL_CONTEXT (node), indent + 4);
diff --git a/gcc/tree.c b/gcc/tree.c
index 9485332f538..c6a74a11c6d 100644
--- a/gcc/tree.c
+++ b/gcc/tree.c
@@ -859,7 +859,8 @@ make_node (code)
break;
case 'd':
- DECL_ALIGN (t) = 1;
+ if (code != FUNCTION_DECL)
+ DECL_ALIGN (t) = 1;
DECL_SOURCE_LINE (t) = lineno;
DECL_SOURCE_FILE (t) = (input_filename) ? input_filename : "<built-in>";
break;
diff --git a/gcc/tree.h b/gcc/tree.h
index 2569128b9ee..dd01f6e967c 100644
--- a/gcc/tree.h
+++ b/gcc/tree.h
@@ -666,7 +666,7 @@ struct tree_type
Need not be constant. */
#define DECL_SIZE(NODE) ((NODE)->decl.size)
/* Holds the alignment required for the datum. */
-#define DECL_ALIGN(NODE) ((NODE)->decl.align)
+#define DECL_ALIGN(NODE) ((NODE)->decl.frame_size)
/* Holds the machine mode of a variable or field. */
#define DECL_MODE(NODE) ((NODE)->decl.mode)
/* Holds the RTL expression for the value of a variable or function. */
@@ -771,7 +771,6 @@ struct tree_decl
#else
enum machine_mode mode : 8;
#endif
- unsigned char align;
unsigned external_flag : 1;
unsigned nonlocal_flag : 1;
@@ -801,7 +800,10 @@ struct tree_decl
union tree_node *assembler_name;
struct rtx_def *rtl; /* acts as link to register transfer language
(rtl) info */
- int frame_size; /* For FUNCTION_DECLs: size of stack frame */
+ /* 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. */
+ int frame_size;
struct rtx_def *saved_insns; /* For FUNCTION_DECLs: points to insn that
constitutes its definition on the
permanent obstack. */