[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