mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-01-13 15:34:48 +08:00
sh.md (UNSPECV_SP_SWITCH_B): New.
* config/sh/sh.md (UNSPECV_SP_SWITCH_B): New. (UNSPECV_SP_SWITCH_E): New. (sp_switch_1): Change to an unspec. (sp_switch_2): Change to an unspec. Don't use post-inc when we replace $r15. * config/sh/sh.c (sh_expand_prologue): Use the constant pool to reference the new stack's address From-SVN: r150306
This commit is contained in:
parent
e60d414986
commit
20e19db49e
@ -1,3 +1,13 @@
|
||||
2009-07-31 DJ Delorie <dj@redhat.com>
|
||||
|
||||
* config/sh/sh.md (UNSPECV_SP_SWITCH_B): New.
|
||||
(UNSPECV_SP_SWITCH_E): New.
|
||||
(sp_switch_1): Change to an unspec.
|
||||
(sp_switch_2): Change to an unspec. Don't use post-inc when we
|
||||
replace $r15.
|
||||
* config/sh/sh.c (sh_expand_prologue): Use the constant pool to
|
||||
reference the new stack's address
|
||||
|
||||
2009-07-30 Sebastian Pop <sebastian.pop@amd.com>
|
||||
|
||||
* Makefile.in (OBJS-common): Added dependence on graphite-blocking.o,
|
||||
|
@ -6743,13 +6743,19 @@ sh_expand_prologue (void)
|
||||
/* If we're supposed to switch stacks at function entry, do so now. */
|
||||
if (sp_switch_attr)
|
||||
{
|
||||
rtx lab, newsrc;
|
||||
/* The argument specifies a variable holding the address of the
|
||||
stack the interrupt function should switch to/from at entry/exit. */
|
||||
tree arg = TREE_VALUE ( TREE_VALUE (sp_switch_attr));
|
||||
const char *s
|
||||
= ggc_strdup (TREE_STRING_POINTER (TREE_VALUE (sp_switch_attr)));
|
||||
= ggc_strdup (TREE_STRING_POINTER (arg));
|
||||
rtx sp_switch = gen_rtx_SYMBOL_REF (Pmode, s);
|
||||
|
||||
emit_insn (gen_sp_switch_1 (sp_switch));
|
||||
lab = add_constant (sp_switch, SImode, 0);
|
||||
newsrc = gen_rtx_LABEL_REF (VOIDmode, lab);
|
||||
newsrc = gen_const_mem (SImode, newsrc);
|
||||
|
||||
emit_insn (gen_sp_switch_1 (newsrc));
|
||||
}
|
||||
|
||||
d = calc_live_regs (&live_regs_mask);
|
||||
|
Loading…
Reference in New Issue
Block a user