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

--- Comment #1 from Tamar Christina <tnfchris at gcc dot gnu.org> ---
The vectorizer seems confused.  Vectorization fails, but seems to fail during
SLP transform so the ifc loop is kept, but the statements not transformed.

it then produces broken SSA:

 note: ***** Analysis succeeded with vector mode V4HI
 note: SLPing BB part
 note: Basic block will be vectorized using SLP
 optimized: basic block part vectorized using 8 byte vectors
 note: Vectorizing SLP tree:
 note: Root stmt: _21 = _15 + _20;
 note: node 0x275fc2f8 (max_nunits=2, refcnt=1) vector(2) int
 note: op template: _15 = _12 * _14;
 note:  stmt 0 _15 = _12 * _14;
 note:  stmt 1 _20 = _17 * _19;
 note:  children 0x275fc000 0x275fc260
 note: node (external) 0x275fc000 (max_nunits=1, refcnt=1) vector(2) int
 note:  { _12, _19 }
 note: node (external) 0x275fc260 (max_nunits=2, refcnt=1) vector(2) int
 note:  stmt 0 _14 = (int) _13;
 note:  stmt 1 _17 = (int) _16;
 note:  children 0x275fc428
 note: node (external) 0x275fc428 (max_nunits=1, refcnt=1)
 note:  { _13, _16 }
 note: ------>vectorizing SLP node starting from: _15 = _12 * _14;
 note: transform binary/unary operation.
 note: add new stmt: vect__15.15_35 = _24 * _30;
 note: vectorizing stmts using SLP.
 note: vectorized 0 loops in function.

So it's kinda weird.. seems like it did partial BB vect during loop vect of an
ifc'd loop.

Reply via email to