OSDN Git Service

* config/sparc/sparc.md (setjmp): Rewrite.
authorebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 16 Feb 2006 21:41:23 +0000 (21:41 +0000)
committerebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 16 Feb 2006 21:41:23 +0000 (21:41 +0000)
(setjmp_32): Delete.
(setjmp_64): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@111154 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/sparc/sparc.md

index f9961f9..127e35c 100644 (file)
@@ -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
index 10727cb..0adb300 100644 (file)
   [(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