On Mon, Feb 12, 2018 at 03:59:05PM +0000, Segher Boessenkool wrote: > 2018-02-12 Segher Boessenkool <seg...@kernel.crashing.org> > > PR rtl-optimization/84169 > * combine.c (try_combine): New variable split_i2i3. Set it to true if > we generated a parallel as new i3 and we split that to new i2 and i3 > instructions. Handle split_i2i3 similar to swap_i2i3: scan the > LOG_LINKs of i3 to see which of those need to link to i2 now. Link > those to i2, not i1. Partially rewrite this scan code.
> + unsigned int regno = REGNO (SET_DEST (x)); This line ICEs with rtl checking on both x86_64-linux and i686-linux on gcc.c-torture/compile/pr66168.c: +FAIL: gcc.c-torture/compile/pr66168.c -O2 (internal compiler error) +FAIL: gcc.c-torture/compile/pr66168.c -O2 (test for excess errors) +FAIL: gcc.c-torture/compile/pr66168.c -O2 -flto -fno-use-linker-plugin -flto-partition=none (internal compiler error) +FAIL: gcc.c-torture/compile/pr66168.c -O2 -flto -fno-use-linker-plugin -flto-partition=none (test for excess errors) +FAIL: gcc.c-torture/compile/pr66168.c -O3 -g (internal compiler error) +FAIL: gcc.c-torture/compile/pr66168.c -O3 -g (test for excess errors) +FAIL: gcc.c-torture/compile/pr66168.c -Os (internal compiler error) +FAIL: gcc.c-torture/compile/pr66168.c -Os (test for excess errors) /home/jakub/src/gcc/gcc/testsuite/gcc.c-torture/compile/pr66168.c:15:1: internal compiler error: RTL check: expected code 'reg', have 'subreg' in rhs_regno, at rtl.h:1896 0x6755ff rtl_check_failed_code1(rtx_def const*, rtx_code, char const*, int, char const*) ../../gcc/rtl.c:844 0x7fcdd2 rhs_regno ../../gcc/rtl.h:1896 0x807e75 rhs_regno ../../gcc/rtl.h:1447 0x807e75 try_combine ../../gcc/combine.c:4286 0x1680cc1 combine_instructions ../../gcc/combine.c:1320 0x1680cc1 rest_of_handle_combine ../../gcc/combine.c:14881 0x1680cc1 execute ../../gcc/combine.c:14926 Jakub