g:497498c8 caused lra to cycle on some SDmode reloads for power6. As explained in more detail in the PR comments, the problem was a conflict between two target hooks: rs6000_secondary_memory_needed_mode required SDmode FPR reloads to use DDmode memory (rightly, since using SDmode memory wouldn't make progress) but rs6000_can_change_mode_class didn't allow FPRs to change from SDmode to DDmode. Previously lra ignored that and changed the mode anyway. From what Segher says, it sounds like the "from_size < 8 || to_size < 8" check is mostly there for SF<->64-bit subregs, and that SDmode is stored in the way that target-independent code expects. This patch therefore allows SD<->DD changes. I wondered about checking for SD<->64-bit changes instead, but that seemed like an unnecessary generalisation for this stage. 2020-03-23 Richard Sandiford <richard.sandiford@arm.com> gcc/ PR target/94254 * config/rs6000/rs6000.c (rs6000_can_change_mode_class): Allow FPRs to change between SDmode and DDmode.
Name |
Last commit
|
Last update |
---|---|---|
.. | ||
40x.md | Loading commit data... | |
440.md | Loading commit data... | |
476.h | Loading commit data... | |
476.md | Loading commit data... | |
476.opt | Loading commit data... | |
601.md | Loading commit data... | |
603.md | Loading commit data... | |
6xx.md | Loading commit data... | |
7450.md | Loading commit data... | |
7xx.md | Loading commit data... | |
8540.md | Loading commit data... | |
a2.md | Loading commit data... | |
aix-stdint.h | Loading commit data... | |
aix.h | Loading commit data... | |
aix61.h | Loading commit data... | |
aix64.opt | Loading commit data... | |
aix71.h | Loading commit data... | |
aix72.h | Loading commit data... | |
altivec.h | Loading commit data... | |
altivec.md | Loading commit data... | |
amo.h | Loading commit data... | |
biarch64.h | Loading commit data... | |
bmi2intrin.h | Loading commit data... | |
bmiintrin.h | Loading commit data... | |
cell.md | Loading commit data... | |
constraints.md | Loading commit data... | |
crypto.md | Loading commit data... | |
darwin.h | Loading commit data... | |
darwin.md | Loading commit data... | |
darwin.opt | Loading commit data... | |
darwin32-biarch.h | Loading commit data... | |
darwin64-biarch.h | Loading commit data... | |
darwin7.h | Loading commit data... | |
darwin8.h | Loading commit data... | |
default64.h | Loading commit data... | |
dfp.md | Loading commit data... | |
driver-rs6000.c | Loading commit data... | |
e300c2c3.md | Loading commit data... | |
e500mc.md | Loading commit data... | |
e500mc64.md | Loading commit data... | |
e5500.md | Loading commit data... | |
e6500.md | Loading commit data... | |
eabi.h | Loading commit data... | |
eabialtivec.h | Loading commit data... | |
eabisim.h | Loading commit data... | |
emmintrin.h | Loading commit data... | |
freebsd.h | Loading commit data... | |
freebsd64.h | Loading commit data... | |
future.md | Loading commit data... | |
genopt.sh | Loading commit data... | |
host-darwin.c | Loading commit data... | |
host-ppc64-darwin.c | Loading commit data... | |
htm.md | Loading commit data... | |
htmintrin.h | Loading commit data... | |
htmxlintrin.h | Loading commit data... | |
linux.h | Loading commit data... | |
linux64.h | Loading commit data... | |
linux64.opt | Loading commit data... | |
linuxaltivec.h | Loading commit data... | |
lynx.h | Loading commit data... | |
milli.exp | Loading commit data... | |
mm_malloc.h | Loading commit data... | |
mmintrin.h | Loading commit data... | |
mpc.md | Loading commit data... | |
netbsd.h | Loading commit data... | |
option-defaults.h | Loading commit data... | |
pmmintrin.h | Loading commit data... | |
power4.md | Loading commit data... | |
power5.md | Loading commit data... | |
power6.md | Loading commit data... | |
power7.md | Loading commit data... | |
power8.md | Loading commit data... | |
power9.md | Loading commit data... | |
ppc-asm.h | Loading commit data... | |
ppc-auxv.h | Loading commit data... | |
ppu_intrinsics.h | Loading commit data... | |
predicates.md | Loading commit data... | |
rs6000-builtin.def | Loading commit data... | |
rs6000-c.c | Loading commit data... | |
rs6000-call.c | Loading commit data... | |
rs6000-cpus.def | Loading commit data... | |
rs6000-d.c | Loading commit data... | |
rs6000-internal.h | Loading commit data... | |
rs6000-linux.c | Loading commit data... | |
rs6000-logue.c | Loading commit data... | |
rs6000-modes.def | Loading commit data... | |
rs6000-modes.h | Loading commit data... | |
rs6000-opts.h | Loading commit data... | |
rs6000-p8swap.c | Loading commit data... | |
rs6000-passes.def | Loading commit data... | |
rs6000-protos.h | Loading commit data... | |
rs6000-string.c | Loading commit data... | |
rs6000-tables.opt | Loading commit data... | |
rs6000.c | Loading commit data... | |
rs6000.h | Loading commit data... | |
rs6000.md | Loading commit data... | |
rs6000.opt | Loading commit data... | |
rs64.md | Loading commit data... | |
rtems.h | Loading commit data... | |
secureplt.h | Loading commit data... | |
si2vmx.h | Loading commit data... | |
smmintrin.h | Loading commit data... | |
spu2vmx.h | Loading commit data... | |
sync.md | Loading commit data... | |
sysv4.h | Loading commit data... | |
sysv4.opt | Loading commit data... | |
sysv4le.h | Loading commit data... | |
t-aix52 | Loading commit data... | |
t-darwin32-biarch | Loading commit data... | |
t-darwin64-biarch | Loading commit data... | |
t-fprules | Loading commit data... | |
t-freebsd64 | Loading commit data... | |
t-linux | Loading commit data... | |
t-linux64 | Loading commit data... | |
t-linux64bele | Loading commit data... | |
t-linux64le | Loading commit data... | |
t-linux64lebe | Loading commit data... | |
t-lynx | Loading commit data... | |
t-netbsd | Loading commit data... | |
t-ppccomm | Loading commit data... | |
t-ppcendian | Loading commit data... | |
t-ppcgas | Loading commit data... | |
t-ppcos | Loading commit data... | |
t-rs6000 | Loading commit data... | |
t-rtems | Loading commit data... | |
t-vxworks | Loading commit data... | |
t-vxworksae | Loading commit data... | |
t-vxworksmils | Loading commit data... | |
titan.md | Loading commit data... | |
tmmintrin.h | Loading commit data... | |
vec_types.h | Loading commit data... | |
vector.md | Loading commit data... | |
vsx.md | Loading commit data... | |
vxworks.h | Loading commit data... | |
vxworksae.h | Loading commit data... | |
vxworksmils.h | Loading commit data... | |
x-aix | Loading commit data... | |
x-darwin | Loading commit data... | |
x-darwin64 | Loading commit data... | |
x-linux-relax | Loading commit data... | |
x-rs6000 | Loading commit data... | |
x86intrin.h | Loading commit data... | |
xcoff.h | Loading commit data... | |
xmmintrin.h | Loading commit data... |