More aggressive threading causing loop-interchange-9.c regression
Michael Matz
matz@suse.de
Thu Sep 9 12:52:18 GMT 2021
Hello,
On Thu, 9 Sep 2021, Aldy Hernandez wrote:
> The ldist-22 regression is interesting though:
>
> void foo ()
> {
> int i;
>
> <bb 2> :
> goto <bb 6>; [INV]
>
> <bb 3> :
> a[i_1] = 0;
> if (i_1 > 100)
> goto <bb 4>; [INV]
> else
> goto <bb 5>; [INV]
>
> <bb 4> :
> b[i_1] = i_1;
>
> <bb 5> :
> i_8 = i_1 + 1;
>
> <bb 6> :
> # i_1 = PHI <0(2), i_8(5)>
> if (i_1 <= 1023)
> goto <bb 3>; [INV]
> else
> goto <bb 7>; [INV]
Here there's no simple latch block to start with (the backedge comes
directly out of the loop exit block). So my suggested improvement
(testing if the latch was empty and only then reject the thread), would
solve this.
> Would it be crazy to suggest that we disable threading through latches
> altogether,
I think it wouldn't be crazy, but we can do a bit better as suggested
above (only reject empty latches, and reject it only for the threaders
coming before the loop optims).
Ciao,
Michael.
More information about the Gcc
mailing list