Note that none of the other tests have been adjusted so it'll likely result in multiple threading regressions.
Thanks for looking at this. Aldy On Mon, Oct 4, 2021, 15:31 Jeff Law <jeffreya...@gmail.com> wrote: > > > On 10/4/2021 3:43 AM, Aldy Hernandez wrote: > > It is frustrating that virtually all the regressions with the hybrid > > threader for VRP, have not been with the engine itself, but with the > > independent restrictions we have agreed upon. > > > > The following patch is a collection of discussions with Richi, Jeff, > > and Michael Matz regarding jump threading limitations in the presence > > of loops, that I hope can lead to further refinements. > > > > As I have mentioned before, most of our threading tests are too > > fragile, so in this patch I have distilled various restrictions into > > gimple FE tests that I hope can help in maintaining the threader going > > forward. The goal is to have one test with no valid threads > > whatsover, and one with exclusively one valid thread per function. > > This should make it trivial to maintain this going forward. > > > > I would like to request the relevant experts to not only examine the > > patch, but review the tests in this patch, to make sure we agree upon > > these restrictions. I have distilled the smallest possible test for > > each restriction and have annotated said tests to make reviewing easy. > > > > Note that the test in ssa-thread-valid.c is a thread that Jeff has > > suggested should be an exception to the path crossing loops > > restriction, but I have not implemented it yet, because even if we > > could loosen the restriction, it would violate Richi's restriction of > > a path that rotates a loop. Comments are highly welcome. > > > > By the way, these restrictions trigger *a lot*. We seem to be > > rotating loops left and right. So I wouldn't be surprised if this > > requires (as usual) a lot of test tweaking. > > > > Untested patch follows. > > > > p.s. Note that I'm just facilitating the discussion. I'm highly > > dependent on the loop experts here ;-). > > > > gcc/ChangeLog: > > > > * tree-ssa-threadupdate.c > > (jt_path_registry::cancel_invalid_paths): Tweak. > > > > gcc/testsuite/ChangeLog: > > > > * gcc.dg/tree-ssa/ssa-thread-invalid.c: New test. > > * gcc.dg/tree-ssa/ssa-thread-valid.c: New test. > Let me throw that into the tester and see what pops. > > Jeff > >