[Bug middle-end/95830] [11 regression][MIPS/MSA] internal compiler error: in do_store_flag, at expr.c:12247 start with gcc-11-1445-g502d63b6d61
marxin at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Fri Jun 26 11:12:15 GMT 2020
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95830
--- Comment #6 from Martin Liška <marxin at gcc dot gnu.org> ---
Thanks for reduction, I can confirm that. What happens:
mips-ps-5.c.171t.loopdone:
_34 = vect__1.7_28 == vect__3.11_33;
vect_iftmp.12_35 = VEC_COND_EXPR <_34, vect__1.7_28, vect__2.10_31>;
which is fine. But then during veclower21 we lower the first comparison to:
_24 = (void *) ivtmp.17_4;
vect__1.7_28 = MEM[base: _24, offset: 0B];
_23 = (void *) ivtmp.20_1;
vect__2.10_31 = MEM[base: _23, offset: 0B];
vect__3.11_33 = vect__2.10_31 + vect_cst__32;
_26 = BIT_FIELD_REF <vect__1.7_28, 32, 0>;
_27 = BIT_FIELD_REF <vect__3.11_33, 32, 0>;
_29 = _26 == _27 ? -1 : 0;
_30 = BIT_FIELD_REF <vect__1.7_28, 32, 32>;
_36 = BIT_FIELD_REF <vect__3.11_33, 32, 32>;
_37 = _30 == _36 ? -1 : 0;
_34 = {_29, _37};
vect_iftmp.12_35 = VEC_COND_EXPR <_34, vect__1.7_28, vect__2.10_31>;
which is undesired. So similarly to isel we need to mark all SSA_NAMEs that are
first args of a VEC_COND_EXPR and ignore these from vect lowering.
Richi?
More information about the Gcc-bugs
mailing list