https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112366

--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> ---
_33 = (int) rd_27;
...
_103 = _93 ^ _33;      <--- use of _33
...
__asm__("" : "=r" rd_41 : "" tt2_40);
_113 = {rd_27, rd_41};
vect__33.17_123 = (vector(2) int) _113;
_133 = BIT_FIELD_REF <vect__33.17_123, 32, 0>;
_42 = (int) rd_41;

and here's the vector result of the conversion.  The { rd_27, rd_41 }
CTOR can appear only after the last scalar def but there are other
uses of the components earlier.

The other uses are not really constrained in any way, so the assert is
bougs.  I'll just remove it.

Ideally we'd avoid having any scalar ops participating in the SLP that
dominate any of the external defs (as traditionally external defs happen
before the vector code, not interleaved as we have it here after we
build operands from scalar defs from inside the vectorized region).

Reply via email to