diff options
author | Richard Henderson <rth@redhat.com> | 2011-08-03 15:57:22 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2011-08-03 15:57:22 -0700 |
commit | a6365e997e0ea5f378e811d4649fd53c55510c69 (patch) | |
tree | a4e798ba3f10202a8a1504f6b63b3e67bf4dd6fc /gcc | |
parent | 2c4caf0ab956d49f57544fd65c93dbbd60123eff (diff) | |
download | gcc-a6365e997e0ea5f378e811d4649fd53c55510c69.zip gcc-a6365e997e0ea5f378e811d4649fd53c55510c69.tar.gz gcc-a6365e997e0ea5f378e811d4649fd53c55510c69.tar.bz2 |
re PR target/34888 (Stack patterns for AVR not optimal)
PR target/34888
* config/avr/avr.md: New splitter for REG_ARGS_SIZE 0.
From-SVN: r177300
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/avr/avr.md | 11 |
2 files changed, 16 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2b70738..a6f6b56 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2011-08-03 Richard Henderson <rth@redhat.com> + + PR target/34888 + * config/avr/avr.md: New splitter for REG_ARGS_SIZE 0. + 2011-08-03 Jakub Jelinek <jakub@redhat.com> PR tree-optimization/49948 diff --git a/gcc/config/avr/avr.md b/gcc/config/avr/avr.md index b8560df..b5aa73c 100644 --- a/gcc/config/avr/avr.md +++ b/gcc/config/avr/avr.md @@ -235,6 +235,17 @@ DONE; }) +;; Notice a special-case when adding N to SP where N results in a +;; zero REG_ARGS_SIZE. This is equivalent to a move from FP. +(define_split + [(set (reg:HI REG_SP) (match_operand:HI 0 "register_operand" ""))] + "reload_completed + && frame_pointer_needed + && !cfun->calls_alloca + && find_reg_note (insn, REG_ARGS_SIZE, const0_rtx)" + [(set (reg:HI REG_SP) (reg:HI REG_Y))] + "") + ;;======================================================================== ;; move byte ;; The last alternative (any immediate constant to any register) is |