On Fri, Aug 5, 2016 at 10:43 PM, Jeff Law <l...@redhat.com> wrote > On 08/05/2016 01:45 AM, Richard Biener wrote: >> >> >> There is no need to avoid threading to a loop header, the threading >> code can cope with this just fine. Noticed when working on PR72772. >> >> Bootstrapped and tested on x86_64-unknown-linux-gnu, applied to trunk. >> >> Richard. >> >> 2016-08-05 Richard Biener <rguent...@suse.de> >> >> * tree-ssa-threadupdate.c (thread_block_1): Remove unnecessary >> restriction on threading to a loop header. > > This restriction exists to help prevent threading through a loop header into > the loop which can easily create an irreducible region. > > In fact what you've done is revert the fix for 58343. Now there is of > course a test for 58343 in the regression suite. > > It's entirely possible that 58343 is just latent now or other changes in > tree-ssa-threadupdate.c prevent the problems that we saw with 58343.
Well, I removed the restriction that the forward threading path ends in a loop header. I did this to restore threadings we've done when there was a forwarder before the loop header we threaded to -- a forwarder with a degenerate PHI that was later removed and merged with the header anyway. So I basically changed nothing here. I also don't see how forward threading to a loop header (not across it) can cause an irreducible region to appear - the other part of the condition which I retained certainly guards the case of crossing a loop header. But maybe I am missing something. Richard. > Jeff >