[Bug tree-optimization/94043] [9/10 Regression] ICE in superloop_at_depth, at cfgloop.c:78
rguenther at suse dot de
gcc-bugzilla@gcc.gnu.org
Tue Mar 24 06:44:30 GMT 2020
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94043
--- Comment #11 from rguenther at suse dot de <rguenther at suse dot de> ---
On March 24, 2020 3:59:35 AM GMT+01:00, "linkw at gcc dot gnu.org"
<gcc-bugzilla@gcc.gnu.org> wrote:
>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?
Yes.
More information about the Gcc-bugs
mailing list