aboutsummaryrefslogtreecommitdiff
path: root/gcc/range-op-float.cc
diff options
context:
space:
mode:
authorHans-Peter Nilsson <hp@axis.com>2023-03-28 03:21:13 +0200
committerHans-Peter Nilsson <hp@bitrange.com>2023-03-28 03:21:13 +0200
commit09d0a1f33d910422b4674d8635b8b99bcb20ae5d (patch)
treec8ec0d50825f233e97f10b053cf5272ba6f083c6 /gcc/range-op-float.cc
parent75be4badfeda2448383429f6061e095afd5a4ee5 (diff)
downloadgcc-09d0a1f33d910422b4674d8635b8b99bcb20ae5d.zip
gcc-09d0a1f33d910422b4674d8635b8b99bcb20ae5d.tar.gz
gcc-09d0a1f33d910422b4674d8635b8b99bcb20ae5d.tar.bz2
CRIS: Add peephole2 to handle gcc.target/cris/rld-legit1.c for LRA
The test-case gcc.target/cris/rld-legit1.c is a reduced test-case that required defining LEGITIMIZE_RELOAD_ADDRESS to stop the address from being decomposed into several insns by reload. Valid but suboptimal code was generated. (Before implementing that hook for CRIS, the same test-case also exposed a bug in reload, and a fix was committed to avoid an ICE; see e.g. git r0-71992-gff0d9879ab0f30 and related commits. But, post-cc0, reload no longer handles this test-case without LEGITIMIZE_RELOAD_ADDRESS helping and there'd again an be ICE for CRIS (again: only if LEGITIMIZE_RELOAD_ADDRESS is disabled). There's a patch to reload to fix that, at https://gcc.gnu.org/pipermail/gcc-patches/2023-February/612039.html) But, LRA also does not handle that test-case gracefully, and like reload without LEGITIMIZE_RELOAD_ADDRESS for CRIS, decomposes the address into a suboptimal (but valid) sequence, about as messy as that from reload, and gcc.target/cris/rld-legit1.c would regress for LRA. There's nothing equivalent to LEGITIMIZE_RELOAD_ADDRESS for LRA. (Stepping through LRA, I can't find an obvious place where to put such a hook. Granted, I haven't seen this kind of messy decomposition in other code, so I'm not insisting a LEGITIMIZE_RELOAD_ADDRESS-like hook is a good idea.) These new peephole2's are required to not regress gcc.target/cris/rld-legit1.c with LRA enabled for CRIS. They don't appear to otherwise make a difference for neither libgcc, newlib libc, my own at-a-glance tests nor coremark, for neither LRA nor reload. * config/cris/cris.md (BW2): New mode-iterator. (lra_szext_decomposed, lra_szext_decomposed_indirect_with_offset): New peephole2s.
Diffstat (limited to 'gcc/range-op-float.cc')
0 files changed, 0 insertions, 0 deletions