aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJim Wilson <wilson@gcc.gnu.org>1992-09-28 14:16:10 -0700
committerJim Wilson <wilson@gcc.gnu.org>1992-09-28 14:16:10 -0700
commit72f4648ec51398d2985f5b30922df02d8f8ade69 (patch)
treefeffa4441d9cdcf3fd96eb8af9eda2555d2dee21 /gcc
parent339ae22de6e41bf83da880de0d1c5890d70aa3cb (diff)
downloadgcc-72f4648ec51398d2985f5b30922df02d8f8ade69.zip
gcc-72f4648ec51398d2985f5b30922df02d8f8ade69.tar.gz
gcc-72f4648ec51398d2985f5b30922df02d8f8ade69.tar.bz2
(orcc peephole): Don't allow FP regs to match pattern.
From-SVN: r2274
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/sparc/sparc.md8
1 files changed, 5 insertions, 3 deletions
diff --git a/gcc/config/sparc/sparc.md b/gcc/config/sparc/sparc.md
index 034d6ea..e516fd6 100644
--- a/gcc/config/sparc/sparc.md
+++ b/gcc/config/sparc/sparc.md
@@ -2945,7 +2945,8 @@
"std %3,%2")
;; Optimize the case of following a reg-reg move with a test
-;; of reg just moved.
+;; of reg just moved. Don't allow floating point regs for operand 1.
+;; This can result from a float to fix conversion.
(define_peephole
[(set (match_operand:SI 0 "register_operand" "=r")
@@ -2953,8 +2954,9 @@
(set (reg:CC 0)
(compare:CC (match_operand:SI 2 "register_operand" "r")
(const_int 0)))]
- "rtx_equal_p (operands[2], operands[0])
- || rtx_equal_p (operands[2], operands[1])"
+ "(rtx_equal_p (operands[2], operands[0])
+ || rtx_equal_p (operands[2], operands[1]))
+ && ! FP_REG_P (operands[1])"
"orcc %1,%%g0,%0")
;; Do {sign,zero}-extended compares somewhat more efficiently.