[Bug tree-optimization/94043] [9/10 Regression] ICE in superloop_at_depth, at cfgloop.c:78
linkw at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue Mar 24 02:59:35 GMT 2020
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94043
--- Comment #10 from Kewen Lin <linkw at gcc dot gnu.org> ---
(In reply to Richard Biener from comment #9)
> 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.
Thanks Richi, I'll give it a shot!
I'd like to ensure my understanding: with the proposed fix, we ensure the
single_exit()->dest should be the correct BB to be inserted, no chance like
gimple_find_edge_insert_loc to get one new BB to be inserted, is it right?
More information about the Gcc-bugs
mailing list