aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Earnshaw <rearnsha@arm.com>2004-05-20 14:59:43 +0000
committerRichard Earnshaw <rearnsha@gcc.gnu.org>2004-05-20 14:59:43 +0000
commit692603556b895a3a337b5a82e0012f69e8707896 (patch)
tree60d0d4c30b00287c96965379c6a4daeb66a4422d /gcc
parent1ffae6283039532568e776e7a55d07b05c7aa62c (diff)
downloadgcc-692603556b895a3a337b5a82e0012f69e8707896.zip
gcc-692603556b895a3a337b5a82e0012f69e8707896.tar.gz
gcc-692603556b895a3a337b5a82e0012f69e8707896.tar.bz2
arm.md (ite_ne_zeroextractsi, [...]): Ensure we don't earlyclobber operands used in the second insn.
* arm.md (ite_ne_zeroextractsi, ite_ne_zeroextractsi_shifted): Ensure we don't earlyclobber operands used in the second insn. From-SVN: r82057
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/arm/arm.md10
2 files changed, 11 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 09873bc..fb5adc9 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2004-05-20 Richard Earnshaw <rearnsha@arm.com>
+
+ * arm.md (ite_ne_zeroextractsi, ite_ne_zeroextractsi_shifted): Ensure
+ we don't earlyclobber operands used in the second insn.
+
2004-05-20 Steven Bosscher <stevenb@suse.de>
* tree-mudflap.c: Formatting fixes.
diff --git a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md
index 0271785..82f1701 100644
--- a/gcc/config/arm/arm.md
+++ b/gcc/config/arm/arm.md
@@ -1719,13 +1719,15 @@
&& (INTVAL (operands[3]) >= 0 && INTVAL (operands[3]) < 32
&& INTVAL (operands[2]) > 0
&& INTVAL (operands[2]) + (INTVAL (operands[3]) & 1) <= 8
- && INTVAL (operands[2]) + INTVAL (operands[3]) <= 32)"
+ && INTVAL (operands[2]) + INTVAL (operands[3]) <= 32)
+ && !reg_overlap_mentioned_p (operands[0], operands[4])"
"#"
"TARGET_ARM
&& (INTVAL (operands[3]) >= 0 && INTVAL (operands[3]) < 32
&& INTVAL (operands[2]) > 0
&& INTVAL (operands[2]) + (INTVAL (operands[3]) & 1) <= 8
- && INTVAL (operands[2]) + INTVAL (operands[3]) <= 32)"
+ && INTVAL (operands[2]) + INTVAL (operands[3]) <= 32)
+ && !reg_overlap_mentioned_p (operands[0], operands[4])"
[(parallel [(set (reg:CC_NOOV CC_REGNUM)
(compare:CC_NOOV (and:SI (match_dup 1) (match_dup 2))
(const_int 0)))
@@ -1751,9 +1753,9 @@
(match_operand:SI 3 "arm_not_operand" "rIK")
(const_int 0)))
(clobber (reg:CC CC_REGNUM))]
- "TARGET_ARM"
+ "TARGET_ARM && !reg_overlap_mentioned_p (operands[0], operands[3])"
"#"
- "TARGET_ARM"
+ "TARGET_ARM && !reg_overlap_mentioned_p (operands[0], operands[3])"
[(parallel [(set (reg:CC_NOOV CC_REGNUM)
(compare:CC_NOOV (ashift:SI (match_dup 1) (match_dup 2))
(const_int 0)))