https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60818
Arseny Solokha <asolokha at gmx dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- Known to fail| |7.0 --- Comment #17 from Arseny Solokha <asolokha at gmx dot com> --- (In reply to Arseny Solokha from comment #15) > (In reply to Segher Boessenkool from comment #14) > > I cannot get any of the testcases to fail with current trunk (but > > they do fail with GCC 6). Combine always merges the compare into > > the if_then_else pattern, and there are no such patterns in rs6000 > > (this could be done with a cmp+isel define_insn_and_split, and is > > probably a good idea, but we do not have that currently). > > OK, I'll post another one or two the next week. This is still reproducible > on the trunk, but the actual code pattern causing the ICE seems to be a > moving target. int no; void gn (int d3) { while (no != 0) { if ((no > d3) > (no < d3)) ++no; while (d3 != 0) { } } } % powerpc-e300c3-linux-gnu-gcc-7.0.0-alpha20170326 -misel -Os -w -c qb3j6i03.c qb3j6i03.c: In function 'gn': qb3j6i03.c:15:1: internal compiler error: in validate_condition_mode, at config/rs6000/rs6000.c:20752 } ^ 0x2b53add47a3 validate_condition_mode(rtx_code, machine_mode) /var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-7.0.0_alpha20170326/work/gcc-7-20170326/gcc/config/rs6000/rs6000.c:20751 0x2b53b0171a7 branch_comparison_operator(rtx_def*, machine_mode) /var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-7.0.0_alpha20170326/work/gcc-7-20170326/gcc/config/rs6000/predicates.md:1243 0x2b53b01731b scc_rev_comparison_operator(rtx_def*, machine_mode) /var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-7.0.0_alpha20170326/work/gcc-7-20170326/gcc/config/rs6000/predicates.md:1300 0x2b53b0362d4 recog_10 /var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-7.0.0_alpha20170326/work/gcc-7-20170326/gcc/config/rs6000/rs6000.md:344 0x2b53b0362d4 recog_11 /var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-7.0.0_alpha20170326/work/gcc-7-20170326/gcc/config/rs6000/altivec.md:224 0x2b53b0362d4 recog_12 /var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-7.0.0_alpha20170326/work/gcc-7-20170326/gcc/config/rs6000/rs6000.md:5090 0x2b53b0703e5 recog_137 /var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-7.0.0_alpha20170326/work/gcc-7-20170326/gcc/config/rs6000/altivec.md:1760 0x2b53b09ff2b recog_for_combine_1 /var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-7.0.0_alpha20170326/work/gcc-7-20170326/gcc/combine.c:11145 0x2b53b0a6aed recog_for_combine /var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-7.0.0_alpha20170326/work/gcc-7-20170326/gcc/combine.c:11401 0x2b53b0b2601 try_combine /var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-7.0.0_alpha20170326/work/gcc-7-20170326/gcc/combine.c:4033 0x2b53b0b8ea0 combine_instructions /var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-7.0.0_alpha20170326/work/gcc-7-20170326/gcc/combine.c:1372 0x2b53b0b8ea0 rest_of_handle_combine /var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-7.0.0_alpha20170326/work/gcc-7-20170326/gcc/combine.c:14650 0x2b53b0b8ea0 execute /var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-7.0.0_alpha20170326/work/gcc-7-20170326/gcc/combine.c:14695 The same for powerpc-e500v2-linux-gnuspe. As before, toggling -fPIC may be necessary as well.