diff options
author | Eric Botcazou <ebotcazou@libertysurf.fr> | 2006-02-16 22:41:23 +0100 |
---|---|---|
committer | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2006-02-16 21:41:23 +0000 |
commit | e1e835dcbb12e0d0dc889c38be204597f6fe9301 (patch) | |
tree | c02653a0622668cb1790884e9c2cad275447cfa3 | |
parent | 6b9ac6fcad7db28ce5337b232883e8dbca673f42 (diff) | |
download | gcc-e1e835dcbb12e0d0dc889c38be204597f6fe9301.zip gcc-e1e835dcbb12e0d0dc889c38be204597f6fe9301.tar.gz gcc-e1e835dcbb12e0d0dc889c38be204597f6fe9301.tar.bz2 |
sparc.md (setjmp): Rewrite.
* config/sparc/sparc.md (setjmp): Rewrite.
(setjmp_32): Delete.
(setjmp_64): Likewise.
From-SVN: r111154
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/sparc/sparc.md | 27 |
2 files changed, 17 insertions, 16 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f9961f9..127e35c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2006-02-16 Eric Botcazou <ebotcazou@libertysurf.fr> + + * config/sparc/sparc.md (setjmp): Rewrite. + (setjmp_32): Delete. + (setjmp_64): Likewise. + 2006-02-16 Daniel Berlin <dberlin@dberlin.org> * 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 10727cb..0adb300 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 |