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.