Commit 540eaea8 by Bob Wilson Committed by Bob Wilson

xtensa.c (xtensa_build_va_list): Use lang_hooks.types.make_type instead of…

xtensa.c (xtensa_build_va_list): Use lang_hooks.types.make_type instead of make_node; set up __va_list_tag type decl.

        * config/xtensa/xtensa.c (xtensa_build_va_list): Use
        lang_hooks.types.make_type instead of make_node; set up
        __va_list_tag type decl.
        (xtensa_builtin_saveregs): Remove broken use of
        RTX_UNCHANGING_P and unnecessary use of MEM_IN_STRUCT_P
        for saved registers; add varargs alias set.

From-SVN: r54288
parent d89e380b
2002-06-05 Bob Wilson <bob.wilson@acm.org>
* config/xtensa/xtensa.c (xtensa_build_va_list): Use
lang_hooks.types.make_type instead of make_node; set up
__va_list_tag type decl.
(xtensa_builtin_saveregs): Remove broken use of
RTX_UNCHANGING_P and unnecessary use of MEM_IN_STRUCT_P
for saved registers; add varargs alias set.
2002-06-05 Neil Booth <neil@daikokuya.demon.co.uk> 2002-06-05 Neil Booth <neil@daikokuya.demon.co.uk>
config: config:
......
...@@ -47,6 +47,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA ...@@ -47,6 +47,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#include "ggc.h" #include "ggc.h"
#include "target.h" #include "target.h"
#include "target-def.h" #include "target-def.h"
#include "langhooks.h"
/* Enumeration for all of the relational tests, so that we can build /* Enumeration for all of the relational tests, so that we can build
arrays indexed by the test type, and not worry about the order arrays indexed by the test type, and not worry about the order
...@@ -2303,9 +2304,10 @@ xtensa_function_epilogue (file, size) ...@@ -2303,9 +2304,10 @@ xtensa_function_epilogue (file, size)
tree tree
xtensa_build_va_list (void) xtensa_build_va_list (void)
{ {
tree f_stk, f_reg, f_ndx, record; tree f_stk, f_reg, f_ndx, record, type_decl;
record = make_node (RECORD_TYPE); record = (*lang_hooks.types.make_type) (RECORD_TYPE);
type_decl = build_decl (TYPE_DECL, get_identifier ("__va_list_tag"), record);
f_stk = build_decl (FIELD_DECL, get_identifier ("__va_stk"), f_stk = build_decl (FIELD_DECL, get_identifier ("__va_stk"),
ptr_type_node); ptr_type_node);
...@@ -2318,6 +2320,8 @@ xtensa_build_va_list (void) ...@@ -2318,6 +2320,8 @@ xtensa_build_va_list (void)
DECL_FIELD_CONTEXT (f_reg) = record; DECL_FIELD_CONTEXT (f_reg) = record;
DECL_FIELD_CONTEXT (f_ndx) = record; DECL_FIELD_CONTEXT (f_ndx) = record;
TREE_CHAIN (record) = type_decl;
TYPE_NAME (record) = type_decl;
TYPE_FIELDS (record) = f_stk; TYPE_FIELDS (record) = f_stk;
TREE_CHAIN (f_stk) = f_reg; TREE_CHAIN (f_stk) = f_reg;
TREE_CHAIN (f_reg) = f_ndx; TREE_CHAIN (f_reg) = f_ndx;
...@@ -2344,9 +2348,7 @@ xtensa_builtin_saveregs () ...@@ -2344,9 +2348,7 @@ xtensa_builtin_saveregs ()
/* allocate the general-purpose register space */ /* allocate the general-purpose register space */
gp_regs = assign_stack_local gp_regs = assign_stack_local
(BLKmode, MAX_ARGS_IN_REGISTERS * UNITS_PER_WORD, -1); (BLKmode, MAX_ARGS_IN_REGISTERS * UNITS_PER_WORD, -1);
MEM_IN_STRUCT_P (gp_regs) = 1; set_mem_alias_set (gp_regs, get_varargs_alias_set ());
RTX_UNCHANGING_P (gp_regs) = 1;
RTX_UNCHANGING_P (XEXP (gp_regs, 0)) = 1;
/* Now store the incoming registers. */ /* Now store the incoming registers. */
dest = change_address (gp_regs, SImode, dest = change_address (gp_regs, SImode,
......
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