aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2002-04-28 22:37:05 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2002-04-28 22:37:05 +0200
commit7a03f82f06d645537bd2a48043d2101770cc4ba9 (patch)
treef86e91dc214fbde679dfccb46c9bb52249aec942 /gcc
parent80103f96d07ab5f616749c5aee5b81893cdadc84 (diff)
downloadgcc-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/ChangeLog7
-rw-r--r--gcc/config/sparc/sparc.md27
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"