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.

Reply via email to