https://gcc.gnu.org/bugzilla/show_bug.cgi?id=55212
--- Comment #342 from Oleg Endo <olegendo at gcc dot gnu.org> ---
(In reply to John Paul Adrian Glaubitz from comment #339)
> /home/glaubitz/webkit2gtk-sh4-new-new/webkit2gtk-2.46.0/build-soup3/
> JavaScriptCore/DerivedSources/unified-sources/UnifiedSource-f2e18ffc-36.cpp
> (...)
> {standard input}: Assembler messages:
> {standard input}:6139: Error: syntax error in @(disp,[Rn, gbr, pc])
> {standard input}:6139: Error: invalid operands for opcode
> {standard input}:54249: Error: syntax error in @(disp,[Rn, gbr, pc])
> {standard input}:54249: Error: invalid operands for opcode
> {standard input}:59575: Error: syntax error in @(disp,[Rn, gbr, pc])
> {standard input}:59575: Error: invalid operands for opcode
> {standard input}:61031: Error: syntax error in @(disp,[Rn, gbr, pc])
> {standard input}:61031: Error: invalid operands for opcode
>
I was able to reproduce it sh-elf copmiler by compiling the attached .ii file
with the following options:
sh-elf-gcc -c -m4 -ml -matomic-model=soft-gusa -Wextra -Wall -pipe
-fmax-errors=20 -Wno-odr -Wno-stringop-overread -Wno-stringop-overflow
-Wno-nonnull -Wno-array-bounds -Wno-expansion-to-defined -Wno-noexcept-type
-Wno-psabi -Wno-misleading-indentation -Wno-maybe-uninitialized -Wundef
-Wpointer-arith -Wmissing-format-attribute -Wformat-security -Wcast-align
-Wno-tautological-compare -fasynchronous-unwind-tables -fdebug-types-section
-g1 -O2 fstack-protector-strong -fPIE -Wformat -Werror=format-security
-fno-strict-aliasing -fno-exceptions -fno-rtti -fcoroutines -ffunction-sections
-fdata-sections -fPIC -fvisibility=hidden -ffp-contract=off -std=c++23
-save-temps -dp test.ii
The problematic insn is:
flds fr1,fpul ! 1297 [c=4 l=2] movsi_ie/21
mov.b @(5,fpul),r0 ! 517 [c=2 l=2] *movqi/8 <<<<<<<<<<
now that looks like quite some adventurous register usage.
This should actually be rejected by the 'sh_legitimate_address_p' function. I
guess that a check is missing somewhere in the code that does the
transformation?