aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnatoly Sokolov <aesok@post.ru>2008-09-12 20:45:34 +0400
committerAnatoly Sokolov <aesok@gcc.gnu.org>2008-09-12 20:45:34 +0400
commit6ff5d1e44709af28c0b4982c914f1a5e3fa5a0f2 (patch)
treec9bc99bac4c8d764ad203d538ae9878e8ae7582c
parent0a317111c89223ebc8ec82e7f35f72578d941b59 (diff)
downloadgcc-6ff5d1e44709af28c0b4982c914f1a5e3fa5a0f2.zip
gcc-6ff5d1e44709af28c0b4982c914f1a5e3fa5a0f2.tar.gz
gcc-6ff5d1e44709af28c0b4982c914f1a5e3fa5a0f2.tar.bz2
re PR target/37466 ([AVR] avr-gcc generating incorrect assembly for expression with the long constant operands)
PR target/37466 * config/avr/avr.md (movsi_lreg_const peephole2): Add match_dup for scratch register after 'set' pattern. From-SVN: r140321
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/avr/avr.md5
2 files changed, 9 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index f499e2f..0528f17 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2008-09-12 Anatoly Sokolov <aesok@post.ru>
+
+ PR target/37466
+ * config/avr/avr.md (movsi_lreg_const peephole2): Add match_dup for
+ scratch register after 'set' pattern.
+
2008-09-12 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
* emit-rtl.c (set_reg_attrs_from_value): Fix invalid alignment
diff --git a/gcc/config/avr/avr.md b/gcc/config/avr/avr.md
index 8dad9d8..7a46a33 100644
--- a/gcc/config/avr/avr.md
+++ b/gcc/config/avr/avr.md
@@ -391,10 +391,11 @@
-(define_peephole2
+(define_peephole2 ; movsi_lreg_const
[(match_scratch:QI 2 "d")
(set (match_operand:SI 0 "l_register_operand" "")
- (match_operand:SI 1 "immediate_operand" ""))]
+ (match_operand:SI 1 "immediate_operand" ""))
+ (match_dup 2)]
"(operands[1] != const0_rtx
&& operands[1] != constm1_rtx)"
[(parallel [(set (match_dup 0) (match_dup 1))