diff options
author | Jakub Jelinek <jakub@redhat.com> | 2002-04-28 22:37:05 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2002-04-28 22:37:05 +0200 |
commit | 7a03f82f06d645537bd2a48043d2101770cc4ba9 (patch) | |
tree | f86e91dc214fbde679dfccb46c9bb52249aec942 /gcc | |
parent | 80103f96d07ab5f616749c5aee5b81893cdadc84 (diff) | |
download | gcc-7a03f82f06d645537bd2a48043d2101770cc4ba9.zip gcc-7a03f82f06d645537bd2a48043d2101770cc4ba9.tar.gz gcc-7a03f82f06d645537bd2a48043d2101770cc4ba9.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/config/sparc/sparc.md | 27 |
2 files changed, 11 insertions, 23 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 55c29e8..8c6c378 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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 diff --git a/gcc/config/sparc/sparc.md b/gcc/config/sparc/sparc.md index eccfb75..2ceffee 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" |