[PATCH] PR middle-end/103059: reload: Also accept ASHIFT with indexed addressing

Hans-Peter Nilsson hp@bitrange.com
Sat Nov 6 02:38:21 GMT 2021

On Wed, 3 Nov 2021, Maciej W. Rozycki wrote:
> Correct a `vax-netbsdelf' target regression ultimately caused by commit
> c605a8bf9270 ("VAX: Accept ASHIFT in address expressions") (needed for
> LRA) and as of commit 4a960d548b7d ("Avoid invalid loop transformations
> in jump threading registry.") causing a build error in libgcc:
> .../libgcc/libgcov-driver.c: In function 'gcov_do_dump':
> .../libgcc/libgcov-driver.c:686:1: error: insn does not satisfy its constraints:
>   686 | }
>       | ^
> (insn 2051 2050 2052 185 (set (reg/f:SI 0 %r0 [555])
>         (plus:SI (ashift:SI (mem/c:SI (plus:SI (reg/f:SI 13 %fp)
>                         (const_int -28 [0xffffffffffffffe4])) [40 %sfp+-28 S4 A32])
>                 (const_int 3 [0x3]))
>             (plus:SI (reg/v/f:SI 9 %r9 [orig:176 fn_buffer ] [176])
>                 (const_int 24 [0x18])))) ".../libgcc/libgcov-driver.c":172:40 614 {movaddrdi}
>      (nil))
> during RTL pass: postreload


>  As noted in the commit description this has been regression-tested with
> commit 4a960d548b7d^.  I'm running regression-testing with GCC 11 right
> now as well and expect results by the end of week.
>  I was trying to chase another target I could use to regression-test this
> with that does do scaled indexed addressing while still using old reload.
> The i386 port would be a good candidate, but it has switched to LRA long
> ago with no option to use old reload, and I think there would be little
> point in adding one just for the sake of such verification.  Do we have
> any other port actually that could be affected by this change?

That'd be cris-elf.

Your proposed patch reminded me of 6cb68940dcf9; giving reload a
reload-specific insn_and_split pattern to play with, matching
"mult" outside of a mem.  I *guess* that's the CRIS-specific
replacement to c605a8bf9270.

brgds, H-P

More information about the Gcc-patches mailing list