From e1e835dcbb12e0d0dc889c38be204597f6fe9301 Mon Sep 17 00:00:00 2001 From: Eric Botcazou Date: Thu, 16 Feb 2006 22:41:23 +0100 Subject: [PATCH] sparc.md (setjmp): Rewrite. * config/sparc/sparc.md (setjmp): Rewrite. (setjmp_32): Delete. (setjmp_64): Likewise. From-SVN: r111154 --- gcc/ChangeLog | 6 ++++++ gcc/config/sparc/sparc.md | 27 +++++++++++---------------- 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f9961f978ca..127e35ccadf 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2006-02-16 Eric Botcazou + + * config/sparc/sparc.md (setjmp): Rewrite. + (setjmp_32): Delete. + (setjmp_64): Likewise. + 2006-02-16 Daniel Berlin * tree-ssa-operands.c (access_can_touch_variable): Fix typo in diff --git a/gcc/config/sparc/sparc.md b/gcc/config/sparc/sparc.md index 10727cb3416..0adb300c338 100644 --- a/gcc/config/sparc/sparc.md +++ b/gcc/config/sparc/sparc.md @@ -7244,25 +7244,20 @@ [(const_int 0)] "" { - if (TARGET_ARCH64) - emit_insn (gen_setjmp_64 ()); - else - emit_insn (gen_setjmp_32 ()); + rtx mem; + + mem = gen_rtx_MEM (Pmode, + plus_constant (stack_pointer_rtx, + SPARC_STACK_BIAS + 14 * UNITS_PER_WORD)); + emit_insn (gen_rtx_SET (VOIDmode, mem, frame_pointer_rtx)); + + mem = gen_rtx_MEM (Pmode, + plus_constant (stack_pointer_rtx, + SPARC_STACK_BIAS + 15 * UNITS_PER_WORD)); + emit_insn (gen_rtx_SET (VOIDmode, mem, gen_rtx_REG (Pmode, 31))); DONE; }) -(define_expand "setjmp_32" - [(set (mem:SI (plus:SI (reg:SI 14) (const_int 56))) (match_dup 0)) - (set (mem:SI (plus:SI (reg:SI 14) (const_int 60))) (reg:SI 31))] - "" - { operands[0] = frame_pointer_rtx; }) - -(define_expand "setjmp_64" - [(set (mem:DI (plus:DI (reg:DI 14) (const_int 112))) (match_dup 0)) - (set (mem:DI (plus:DI (reg:DI 14) (const_int 120))) (reg:DI 31))] - "" - { operands[0] = frame_pointer_rtx; }) - ;; Special pattern for the FLUSH instruction. ; We do SImode and DImode versions of this to quiet down genrecog's complaints -- 2.30.2