aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@libertysurf.fr>2006-02-16 22:41:23 +0100
committerEric Botcazou <ebotcazou@gcc.gnu.org>2006-02-16 21:41:23 +0000
commite1e835dcbb12e0d0dc889c38be204597f6fe9301 (patch)
treec02653a0622668cb1790884e9c2cad275447cfa3 /gcc
parent6b9ac6fcad7db28ce5337b232883e8dbca673f42 (diff)
downloadgcc-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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/sparc/sparc.md27
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