https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61844
Kazumoto Kojima <kkojima at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Component|rtl-optimization |target --- Comment #7 from Kazumoto Kojima <kkojima at gcc dot gnu.org> --- > Ugh. sh64 is not so well maintained these days. Agreed. I don't have enough time for sh64 anymore, unfortunately. > (insn 27 51 52 3 (set (reg:SI 1 r1 [172]) > (mem/c:SI (plus:SI (reg:SI 2 r2) > (reg:SI 12 r12)) [0 S4 A32])) > ../../../../gcc-4.9.0-20140702/libgcc/libgcc2.c:81 260 {*movsi_media} > (nil)) > > is actually a valid addressing mode for the LDX.L instruction, which > seems to be missing in sh.md?! It seems that the 4th alternative of *movsi_media should handle that case. BTW, my sh64-elf build fails with another ICE: /exp/ldroot/dodes/xsh64-elf-combined/build/./gcc/xgcc -B/exp/ldroot/dodes/xsh64-elf-combined/build/./gcc/ -B/exp/ldroot/dodes/xsh64-elf-combined/install/sh64-unknown-elf/bin/ -B/exp/ldroot/dodes/xsh64-elf-combined/install/sh64-unknown-elf/lib/ -isystem /exp/ldroot/dodes/xsh64-elf-combined/install/sh64-unknown-elf/include -isystem /exp/ldroot/dodes/xsh64-elf-combined/install/sh64-unknown-elf/sys-include -L/exp/ldroot/dodes/xsh64-elf-combined/build/./ld -g -O2 -ml -O2 -g -O2 -DIN_GCC -DCROSS_DIRECTORY_STRUCTURE -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -g -DIN_LIBGCC2 -fbuilding-libgcc -fno-stack-protector -Dinhibit_libc -I. -I. -I../../.././gcc -I/exp/ldroot/dodes/xsh64-elf-combined/combined/libgcc -I/exp/ldroot/dodes/xsh64-elf-combined/combined/libgcc/. -I/exp/ldroot/dodes/xsh64-elf-combined/combined/libgcc/../gcc -I/exp/ldroot/dodes/xsh64-elf-combined/combined/libgcc/../include -DHAVE_CC_TLS -DUSE_EMUTLS -o unwind-dw2.o -MT unwind-dw2.o -MD -MP -MF unwind-dw2.dep -fexceptions -c /exp/ldroot/dodes/xsh64-elf-combined/combined/libgcc/unwind-dw2.c -fvisibility=hidden -DHIDE_EXPORTS /exp/ldroot/dodes/xsh64-elf-combined/combined/libgcc/unwind-dw2.c: In function '_Unwind_SetGR': /exp/ldroot/dodes/xsh64-elf-combined/combined/libgcc/unwind-dw2.c:293:1: internal compiler error: in push_reload, at reload.c:1352 } ^ 0x85b64f3 push_reload(rtx_def*, rtx_def*, rtx_def**, rtx_def**, reg_class, machine_mode, machine_mode, int, int, int, reload_type) /exp/ldroot/dodes/xsh64-elf-combined/combined/gcc/reload.c:1351 0x85b8d9f find_reloads_address_1 /exp/ldroot/dodes/xsh64-elf-combined/combined/gcc/reload.c:5974 0x85b95f5 find_reloads_address_1 /exp/ldroot/dodes/xsh64-elf-combined/combined/gcc/reload.c:5617 0x85b6b75 find_reloads_address /exp/ldroot/dodes/xsh64-elf-combined/combined/gcc/reload.c:5270 0x85bd96c find_reloads(rtx_def*, int, int, int, short*) /exp/ldroot/dodes/xsh64-elf-combined/combined/gcc/reload.c:2889 ... In this case, it looks that find_reloads fails for the insn (insn 440 439 61 33 (set (mem/f/j:SI (plus:SI (reg/v/f:SI 50 r50 [orig:268 unused_rs ] [268]) (reg:SI 736)) [0 unused_rs_142->prev+0 S4 A64]) (reg/v/f:SI 34 r34 [orig:207 unused_rs ] [207])) /exp/ldroot/dodes/xsh64-elf-combined/combined/libgcc/unwind-dw2.c:1082 261 {*movsi_media} (expr_list:REG_DEAD (reg/v/f:SI 34 r34 [orig:207 unused_rs ] [207]) (nil))) which shouldn't require any reloads. Perhaps it is the same issue with this PR. I'll take a look at what is going on.