This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[PATCH,avr] Fix PR84209 code issue due to post-reload split of SP into 2 QI regs
- From: Denis Chertykov <chertykov at gmail dot com>
- To: gcc-patches <gcc-patches at gcc dot gnu dot org>
- Cc: Georg Johann Lay <avr at gjlay dot de>
- Date: Wed, 7 Feb 2018 14:03:15 +0400
- Subject: [PATCH,avr] Fix PR84209 code issue due to post-reload split of SP into 2 QI regs
- Authentication-results: sourceware.org; auth=none
Committed.
2018-01-09 Georg-Johann Lay <avr@gjlay.de>
PR target/84209
* config/avr/avr.h (GENERAL_REGNO_P, GENERAL_REG_P): New macros.
* config/avr/avr.md: Only post-reload split REG-REG moves if
either register is REGERAL_REG_P.
--- config/avr/avr.h (revision 257384)
+++ config/avr/avr.h (working copy)
@@ -153,6 +153,9 @@ These two properties are reflected by bu
#define FIRST_PSEUDO_REGISTER 36
+#define GENERAL_REGNO_P(N) IN_RANGE (N, 2, 31)
+#define GENERAL_REG_P(X) (REG_P (X) && GENERAL_REGNO_P (REGNO (X)))
+
#define FIXED_REGISTERS {\
1,1,/* r0 r1 */\
0,0,/* r2 r3 */\
--- config/avr/avr.md (revision 257384)
+++ config/avr/avr.md (working copy)
@@ -3362,6 +3362,8 @@ (define_split
(match_operand:HI 1 "reg_or_0_operand"))]
"optimize
&& reload_completed
+ && GENERAL_REG_P (operands[0])
+ && (operands[1] == const0_rtx || GENERAL_REG_P (operands[1]))
&& (!AVR_HAVE_MOVW
|| const0_rtx == operands[1])"
[(set (match_dup 2) (match_dup 3))