[Bug tree-optimization/69489] missed vectorization for boolean loop, missed if-conversion
amker at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Thu Apr 28 14:02:00 GMT 2016
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69489
--- Comment #19 from amker at gcc dot gnu.org ---
<bb 4>:
# i_27 = PHI <0(3), i_21(5)>
# n1_29 = PHI <0(3), n1_20(5)>
# n2_28 = PHI <0(3), n2_34(5)>
i.1_7 = (sizetype) i_27;
_9 = u_8(D) + i.1_7;
_11 = *_9;
_13 = v_12(D) + i.1_7;
_14 = *_13;
_17 = v_12(D) + i.1_7;
_18 = *_17;
_31 = _18 != 0;
_36 = (int) _31;
_48 = (long int) _36;
_45 = _11 != 0;
_44 = _14 == 0;
_43 = _44 & _45;
_ifc__40 = _43 ? 1 : 0;
n2_34 = n2_28 + _ifc__40;
prephitmp_49 = _11 != 0 ? 0 : _48;
n1_20 = n1_29 + prephitmp_49;
i_21 = i_27 + 1;
if (n_6(D) > i_21)
goto <bb 5>;
else
goto <bb 6>;
<bb 5>:
goto <bb 4>;
The difficult part is "prephitmp_49 = _11 != 0 ? 0 : _48;", which cannot be
simplified into:
_a = 18 != 0;
_b = _11 == 0;
_c = _a && _b;
prephitmp_49 = (long int)_c;
I don't know if there is easy fix to ifcvt so that this case can be vectorized
without vcond_mask...
More information about the Gcc-bugs
mailing list