diff options
author | Oleg Endo <olegendo@gcc.gnu.org> | 2012-04-11 11:35:32 +0000 |
---|---|---|
committer | Oleg Endo <olegendo@gcc.gnu.org> | 2012-04-11 11:35:32 +0000 |
commit | 8c2a3f3b6cc7bc38af483ac4923258d376f90954 (patch) | |
tree | 07b8b694f4fd16b55292cb37ed731c28edfb17ed /gcc/rtl.h | |
parent | b16212bd3c3ecd421c09c3a632b43ec68674b6bf (diff) | |
download | gcc-8c2a3f3b6cc7bc38af483ac4923258d376f90954.zip gcc-8c2a3f3b6cc7bc38af483ac4923258d376f90954.tar.gz gcc-8c2a3f3b6cc7bc38af483ac4923258d376f90954.tar.bz2 |
re PR target/50751 (SH Target: Displacement addressing does not work for QImode and HImode)
PR target/50751
* config/sh/sh-protos.h (sh_legitimate_index_p): Add new arguments
consider_sh2a and allow_zero.
* config/sh/sh.c (sh_legitimate_index_p): Likewise.
(disp_addr_displacement): New function.
(sh_address_cost): Use disp_addr_displacement function instead
of DISP_ADDR_OFFSET.
(sh_legitimate_address_p): Adapt to changed
sh_legitimate_index_p declaration.
(sh_find_mov_disp_adjust): Remove HImode check.
(sh_secondary_reload): Add HImode case. Use satisfies_constraint_Sdd,
disp_addr_displacement and max_mov_insn_displacement.
(max_mov_insn_displacement): Remove HImode check.
* config/sh/sh.h (CONST_OK_FOR_K04, CONST_OK_FOR_K12,
DISP_ADDR_P, DISP_ADDR_OFFSET): Remove.
* config/sh/constraints.md (K05, K13): New constraints.
(K12): Correct comment.
(Sdd): Do not use DISP_ADDR_P macro.
(Snd, Sbw): Use satisfies_constraint_Sdd.
* config/sh/sh.md (extendhisi2): Remove constraints from expander.
(*extendhisi2_compact, movhi_i): Remove.
(*extendhisi2_compact_reg, *extendhisi2_compact_mem_disp,
*extendhisi2_compact_mem_disp, *extendhisi2_compact_snd,
*movhi_reg_reg, *movhi_store_mem_disp05, *movhi_store_mem_disp13,
*movhi_load_mem_disp, *movhi_load_mem_disp, *movhi): New insns.
(*extendqisi2_compact_mem_disp, *extendqisi2_compact_mem_disp,
*movqi_store_mem_disp04, *movqi_store_mem_disp12, *movqi_load_mem_disp,
*movqi_load_mem_disp): Use sh_legitimate_index_p instead of
CONST_OK_FOR_Kxx.
Add new peepholes for HImode displacement addressing.
From-SVN: r186311
Diffstat (limited to 'gcc/rtl.h')
0 files changed, 0 insertions, 0 deletions