diff options
author | Georg-Johann Lay <avr@gjlay.de> | 2018-02-07 09:59:52 +0000 |
---|---|---|
committer | Denis Chertykov <denisc@gcc.gnu.org> | 2018-02-07 12:59:52 +0300 |
commit | 3924c9be0b45d920c140d56a7850b5a88b3eee5e (patch) | |
tree | eb39d2d25373089f569d598eb19f0f0873de6e6d /gcc | |
parent | 07a6816e61d35c8b1a9e89e2699d47807f72e668 (diff) | |
download | gcc-3924c9be0b45d920c140d56a7850b5a88b3eee5e.zip gcc-3924c9be0b45d920c140d56a7850b5a88b3eee5e.tar.gz gcc-3924c9be0b45d920c140d56a7850b5a88b3eee5e.tar.bz2 |
re PR target/84209 ([avr] Don't split SP in split2)
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.
From-SVN: r257440
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/config/avr/avr.h | 3 | ||||
-rw-r--r-- | gcc/config/avr/avr.md | 2 |
3 files changed, 12 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 088aa47..7bcda10 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2018-02-07 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. + 2018-02-07 Jakub Jelinek <jakub@redhat.com> PR tree-optimization/84235 diff --git a/gcc/config/avr/avr.h b/gcc/config/avr/avr.h index 76d18ae..cf8e0bf 100644 --- a/gcc/config/avr/avr.h +++ b/gcc/config/avr/avr.h @@ -153,6 +153,9 @@ FIXME: DRIVER_SELF_SPECS has changed. #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 */\ diff --git a/gcc/config/avr/avr.md b/gcc/config/avr/avr.md index 9fad051..e619e69 100644 --- a/gcc/config/avr/avr.md +++ b/gcc/config/avr/avr.md @@ -3368,6 +3368,8 @@ (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)) |