From 7a03f82f06d645537bd2a48043d2101770cc4ba9 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Sun, 28 Apr 2002 22:37:05 +0200 Subject: [PATCH] re PR target/6496 (Sparc backend clobbers call-return stack of UltraSparc) 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 | 7 +++++++ gcc/config/sparc/sparc.md | 27 ++++----------------------- 2 files changed, 11 insertions(+), 23 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 55c29e800a2..8c6c3780200 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2002-04-28 Jakub Jelinek + + 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 PR c/6497 diff --git a/gcc/config/sparc/sparc.md b/gcc/config/sparc/sparc.md index eccfb7574b7..2ceffeef118 100644 --- a/gcc/config/sparc/sparc.md +++ b/gcc/config/sparc/sparc.md @@ -9362,7 +9362,8 @@ (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 @@ -9371,28 +9372,8 @@ (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" -- 2.30.2