re PR target/6496 (Sparc backend clobbers call-return stack of UltraSparc)
authorJakub Jelinek <jakub@redhat.com>
Sun, 28 Apr 2002 20:37:05 +0000 (22:37 +0200)
committerJakub Jelinek <jakub@gcc.gnu.org>
Sun, 28 Apr 2002 20:37:05 +0000 (22:37 +0200)
PR target/6496
* config/sparc/sparc.md (call + jump 32-bit peepholes): Disable jump
after call peepholes for UltraSPARC.
(call + jump 64-bit peepholes): Remove.

From-SVN: r52863

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

index 55c29e800a227af5b659c5cdb83add0fc370ace7..8c6c378020090bfac10fffe2f253233b8fade0b9 100644 (file)
@@ -1,3 +1,10 @@
+2002-04-28  Jakub Jelinek  <jakub@redhat.com>
+
+       PR target/6496
+       * config/sparc/sparc.md (call + jump 32-bit peepholes): Disable jump
+       after call peepholes for UltraSPARC.
+       (call + jump 64-bit peepholes): Remove.
+
 2002-04-28  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>
 
        PR c/6497
index eccfb7574b778123ade450bc5d4311ce6cce343f..2ceffeef118e73d43603cc8c67dc01ac9e06944e 100644 (file)
              (clobber (reg:SI 15))])
    (set (pc) (label_ref (match_operand 3 "" "")))]
   "short_branch (INSN_UID (insn), INSN_UID (operands[3]))
-   && (USING_SJLJ_EXCEPTIONS || ! can_throw_internal (ins1))"
+   && (USING_SJLJ_EXCEPTIONS || ! can_throw_internal (ins1))
+   && sparc_cpu != PROCESSOR_ULTRASPARC"
   "call\\t%a1, %2\\n\\tadd\\t%%o7, (%l3-.-4), %%o7")
 
 (define_peephole
              (clobber (reg:SI 15))])
    (set (pc) (label_ref (match_operand 2 "" "")))]
   "short_branch (INSN_UID (insn), INSN_UID (operands[2]))
-   && (USING_SJLJ_EXCEPTIONS || ! can_throw_internal (ins1))"
-  "call\\t%a0, %1\\n\\tadd\\t%%o7, (%l2-.-4), %%o7")
-
-(define_peephole
-  [(parallel [(set (match_operand 0 "" "")
-                  (call (mem:SI (match_operand:DI 1 "call_operand_address" "ps"))
-                        (match_operand 2 "" "")))
-             (clobber (reg:DI 15))])
-   (set (pc) (label_ref (match_operand 3 "" "")))]
-  "TARGET_ARCH64
-   && short_branch (INSN_UID (insn), INSN_UID (operands[3]))
-   && (USING_SJLJ_EXCEPTIONS || ! can_throw_internal (ins1))"
-  "call\\t%a1, %2\\n\\tadd\\t%%o7, (%l3-.-4), %%o7")
-
-(define_peephole
-  [(parallel [(call (mem:SI (match_operand:DI 0 "call_operand_address" "ps"))
-                   (match_operand 1 "" ""))
-             (clobber (reg:DI 15))])
-   (set (pc) (label_ref (match_operand 2 "" "")))]
-  "TARGET_ARCH64
-   && short_branch (INSN_UID (insn), INSN_UID (operands[2]))
-   && (USING_SJLJ_EXCEPTIONS || ! can_throw_internal (ins1))"
+   && (USING_SJLJ_EXCEPTIONS || ! can_throw_internal (ins1))
+   && sparc_cpu != PROCESSOR_ULTRASPARC"
   "call\\t%a0, %1\\n\\tadd\\t%%o7, (%l2-.-4), %%o7")
 
 (define_insn "prefetch"