This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] shrink-wrap: Once more PRs 67778, 68634, and now 68909


On 12/20/2015 05:27 PM, Segher Boessenkool wrote:
On Fri, Dec 18, 2015 at 02:19:37AM +0100, Bernd Schmidt wrote:
On 12/17/2015 10:07 PM, Segher Boessenkool wrote:
It turns out v4 wasn't quite complete anyway; so here "v5".

If a candidate PRE cannot get the prologue because a block BB is
reachable from it, but PRE does not dominate BB, we try again with the
dominators of PRE.  That "try again" needs to again consider BB though,
we aren't done with it.

This fixes this problem.  Tested on the 68909 testcase, and bootstrapped
and regression checked on powerpc64-linux.  Is this okay for trunk?

This code is getting really quite confusing,
and at the least I think we
need more documentation of what exactly vec is supposed to contain at
the entry to the inner while loop here.

Same as in the other loop: vec is a stack of blocks that still need to
be looked at.  I can duplicate the comment if you want?

No, I think more is needed. The inner loop looks like it should be emptying the vec, but this is not true if we break out of it, and your patch now even adds an explicit push. It also looks like it wants to use the bb_tmp bitmap to cache results for future iterations of the outer loop, but I'm not convinced this is actually correct. I can't follow this behaviour anymore without clear a description of intent.

Also, it might be clearer to not modify "pro" in this loop - use a "cand" variable, and modify "pro" instead of last_ok, getting rid of the latter.

That would be a regression (from GCC 5); but I understand your worry.
How about we disable it if any further problems show up?

Let's see whether we can make sense of this code and decide then.


bernd


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]