http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58343

--- Comment #2 from Jeffrey A. Law <law at redhat dot com> ---
Zhendong,

Thanks for the testcase.  What's happening here is the code to allow threading
through a simple forwarder block exposes an opportunity to build a
significantly deeper jump threading path than was possible in the past.

In the middle of that path is a loop header.  We attempt to thread through the
loop header to a point in the middle of the loop.  This is generally considered
a bad idea (creates irreducible regions among other things) and the jump
threading code attempts to prune these kind of jump threading requests.

However, due to limitations in how these undesirable cases are detected, it was
missed.  And the shape of the CFG was such that the code to handle jump threads
though loop headers would fail catastrophically.

I've got a fix for this in testing.

Reply via email to