Hi, On 20 February 2017 at 13:08, Matthew Fortune <matthew.fort...@imgtec.com> wrote: > Vladimir Makarov <vmaka...@redhat.com> writes: >> On 02/07/2017 09:08 AM, Matthew Fortune wrote: >> > Hi, >> > >> > This change deals with reloading a subreg(reg) using the inner mode to >> > prevent partial spilling of data like in the case described here: >> > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78660#c8 >> > >> > No test case for now but I am investigating a targeted test using the >> > RTL frontend for later submission. >> > >> > >> > gcc/ >> > PR target/78660 >> > * lra-constraints.c (curr_insn_transform): Handle >> > WORD_REGISTER_OPERATIONS requirements when reloading SUBREGs. >> > >> The patch is OK. So all 5 patches can be committed to the trunk. I >> hope Eric's test of the patches on SPARC will be successful. Thank you >> again for your efforts. > > Committed as r245598. >
This patch is causing ICEs on arm-none-linux-gnueabi FAIL: gcc.c-torture/execute/simd-2.c -O1 (internal compiler error) /aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/testsuite/gcc.c-torture/execute/simd-2.c: In function 'main': /aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/testsuite/gcc.c-torture/execute/simd-2.c:72:1: error: unable to find a register to spill /aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/testsuite/gcc.c-torture/execute/simd-2.c:72:1: error: this is the insn: (insn 276 2123 2129 2 (set (subreg:SI (reg:TI 886 [362]) 0) (and:SI (subreg:SI (reg:TI 567 [orig:111 j.1_2 ] [111]) 0) (subreg:SI (reg:TI 568 [orig:110 i.0_1 ] [110]) 0))) "/aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/testsuite/gcc.c-torture/execute/simd-2.c":47 82 {*arm_andsi3_insn} (expr_list:REG_DEAD (reg:TI 568 [orig:110 i.0_1 ] [110]) (expr_list:REG_DEAD (reg:TI 567 [orig:111 j.1_2 ] [111]) (nil)))) /aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/testsuite/gcc.c-torture/execute/simd-2.c:72:1: internal compiler error: in assign_by_spills, at lra-assigns.c:1457 0xacc9d3 _fatal_insn(char const*, rtx_def const*, char const*, int, char const*) /aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/rtl-error.c:108 0x9a6123 assign_by_spills /aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/lra-assigns.c:1457 0x9a7506 lra_assign() /aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/lra-assigns.c:1643 0x9a16d4 lra(_IO_FILE*) /aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/lra.c:2451 0x957669 do_reload /aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/ira.c:5452 0x957669 execute /aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/ira.c:5636 I've also noticed that --target arm-none-eabi with default --with-mode and --with-cpu fails to build libgcc (it may be easier to reproduce): /tmp/870921_29.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/libgcc/fixed-bit.c: In function '__gnu_mulhelperudq': /tmp/870921_29.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/libgcc/fixed-bit.c:371:1: error: unable to find a register to spill } ^ /tmp/870921_29.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/libgcc/fixed-bit.c:371:1: error: this is the insn: (insn 286 296 287 2 (set (reg:SI 232) (neg:SI (ltu:SI (subreg:SI (reg:DI 238 [orig:119 _10 ] [119]) 4) (subreg:SI (reg/v:DI 149 [ temp1 ]) 4)))) "/tmp/870921_29.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/libgcc/fixed-bit.c":314 849 {cstor esi_nltu_thumb1} (expr_list:REG_DEAD (reg:DI 238 [orig:119 _10 ] [119]) (nil))) /tmp/870921_29.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/libgcc/fixed-bit.c:371:1: internal compiler error: in assign_by_spills, at lra-assigns.c:1457 0xacc9c3 _fatal_insn(char const*, rtx_def const*, char const*, int, char const*) /tmp/870921_29.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/rtl-error.c:108 0x9a6113 assign_by_spills /tmp/870921_29.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/lra-assigns.c:1457 0x9a74f6 lra_assign() /tmp/870921_29.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/lra-assigns.c:1643 0x9a16c4 lra(_IO_FILE*) /tmp/870921_29.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/lra.c:2451 0x957659 do_reload /tmp/870921_29.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/ira.c:5452 0x957659 execute /tmp/870921_29.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/ira.c:5636 make[4]: *** [_mulhelperUDQ.o] Error 1 Thanks, Christophe > Thanks, > Matthew