[Bug tree-optimization/94043] [9/10 Regression] ICE in superloop_at_depth, at cfgloop.c:78

rguenth at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Mon Mar 23 13:21:48 GMT 2020


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

--- Comment #9 from Richard Biener <rguenth at gcc dot gnu.org> ---
OK, so it's indeed vectorizable_live_operation not paying attention to
loop-closed SSA form.

What it should do before building the lane extract is create a _new_
loop-closed PHI node for the vectorized def (vec_lhs), and then
demote the loop-closed PHI node for the scalar def (lhs) which should
_always_ exist to a copy.  So from


 loop;

# lhs' = PHI <lhs>


go to

  loop;

# vec_lhs' = PHI <vec_lhs>
new_tree = BIT_FIELD_REF <vec_lhs', ...>;
lhs' = new_tree;

I think you can assert that the block of the loop-closed PHI
(single_exit()->dest) always has a single predecessor, otherwise
things will be more complicated.

Can you try rework the code in this way?  If that's too much just tell
me and I'll take care of this.


More information about the Gcc-bugs mailing list