https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97228
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |rsandifo at gcc dot gnu.org --- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> --- So for FAIL: gcc.dg/tree-ssa/ifc-cd.c (internal compiler error) I see before ISEL changes like @@ -180,16 +180,12 @@ vect_b1_24.24_112 = vect_a1_16.12_97 + { 1, 1, 1, 1 }; vect_b1_25.25_114 = vect_a1_16.12_97 + { 2, 2, 2, 2 }; _118 = vect_a2_18.15_100 > { 0, 0, 0, 0 }; - vect_patt_35.26_119 = VEC_COND_EXPR <_118, { 1, 1, 1, 1 }, { 0, 0, 0, 0 }>; _122 = vect__8.23_110 == { 0, 0, 0, 0 }; - vect_patt_26.27_123 = VEC_COND_EXPR <_122, vect_patt_35.26_119, { 0, 0, 0, 0 }>; - _125 = vect_patt_26.27_123 != { 0, 0, 0, 0 }; + _125 = VEC_COND_EXPR <_122, _118, { 0, 0, 0, 0 }>; vect_patt_44.28_126 = VEC_COND_EXPR <_125, vect_b1_25.25_114, vect_b1_24.24_112>; vect_patt_37.31_138 = VEC_COND_EXPR <_125, vect_b1_24.24_112, vect_a1_16.12_97>; - vect_patt_36.32_143 = VEC_COND_EXPR <_122, { 1, 1, 1, 1 }, { 0, 0, 0, 0 }>; _146 = vect_a3_20.18_103 < { 0, 0, 0, 0 }; - vect_patt_72.33_147 = VEC_COND_EXPR <_146, vect_patt_36.32_143, { 0, 0, 0, 0 }>; - _149 = vect_patt_72.33_147 != { 0, 0, 0, 0 }; + _149 = VEC_COND_EXPR <_146, _122, { 0, 0, 0, 0 }>; vect_patt_12.34_150 = VEC_COND_EXPR <_149, vect_patt_37.31_138, vect_patt_44.28_126>; vect__ifc__73.35_154 = VEC_COND_EXPR <_122, vect_patt_12.34_150, { 0, 0, 0, 0 }>; MEM <vector(4) int> [(int *)vectp_y.19_105] = vect__ifc__73.35_154; where the difference is that we end up with a used vector comparison that is not supported by the target (see also the other PR which Richard has kindly taken). Now, folding produces _118 = vect_a2_18.15_100 > { 0, 0, 0, 0 }; _122 = vect__8.23_110 == { 0, 0, 0, 0 }; _125 = VEC_COND_EXPR <_122, _118, { 0, 0, 0, 0 }>; that's still not fully simplified, if written as bitwise ops it could be as simple as _125 = _122 & _118; but then this will probably make the issue worse ;) I think this is a duplicate of that other bug.