https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69347

--- Comment #5 from Jeffrey A. Law <law at redhat dot com> ---
So the most glaring problem is that we're trying awful hard to find jump
threads that ultimately we're going to have to throw away anyway.

We're being asked to find jump threads to determine a constant value for an
SSA_NAME that is used in an abnormal PHI.  While there are cases where in
theory that ought to work, we've traditionally rejected jump threads if any of
the edges in the thread path or copied blocks are abnormals.

The FSM threader is missing those checks, thus it spends an awful lot of time
running around in circles in the relatively complex CFG (it's large due to the
number of blocks, but also because there's a computed jump inside).

I'd bet that if we were to compare gcc-4.9 to gcc-5 we'd see a significant
compile-time regression there too, but not as painful as gcc-5 to the current
trunk.

So I gave up waiting on the current trunk to complete, so call it 19 minutes or
whatever, doesn't really matter.  r228736 takes ~45 seconds.  Filtering out the
paths early, ~35 seconds, with nearly 25% of that in the SSA & statement
verification code.  That's what I'll throw into testing...

Reply via email to