On 22/01/16 08:44, Andreas Krebbel wrote:
On 01/22/2016 12:10 AM, Jeff Law wrote:
On 01/21/2016 03:05 AM, Andreas Krebbel wrote:
On 01/02/2016 08:16 PM, Marcin Kościelnicki wrote:
When an unconditional jump with side effects targets an immediately
following label, rtl_tidy_fallthru_edge is called.  Since it has side
effects, it doesn't remove the jump, but the label is still marked
as fallthru.  This later causes a verification error.  Do nothing in this
case instead.

gcc/ChangeLog:

        * cfgrtl.c (rtl_tidy_fallthru_edge): Bail for unconditional jumps
        with side effects.

The change looks ok to me (although I'm not able to approve it). Could you 
please run regressions
tests on x86_64 with that change?

Perhaps a short comment in the code would be good.
I think the patch is technically fine, the question is does it fix a
visible bug?  I read the series as new feature enablement so I put this
patch into my gcc7 queue.

We need the patch for the S/390 split-stack implementation which we would like 
to see in GCC 6.  I'm
aware that this isn't stage 3 material but people seem to have reasons to 
really want split stack on
S/390 asap and we would have to backport this feature anyway. Therefore I would 
prefer to have it in
the official release already. That's the only common code change we would need 
for that.

I've started a bootstrap and regression test for the patch also on Power.

Do you see a chance we can get this into GCC 6?

Bye,

-Andreas-


I've tested the patch on x86_64, no regressions.

I'm not entirely sure if the patch needs to go in for the current version of split-stack support.

This patch fixed a showstopper bug on g5 CPUs when the patch still supported them. I haven't seen this bug with the z900 sequences (which are now the only ones left), but since we're still using unconditional jumps with side effects, I left it in just to be safe. The testsuite passes on s390x -fsplit-stack both with the patch and without it.

So, I don't know. It seems to work now, probably because no optimization pass has a reason to touch that jump, but it may start to fail if someone adds a new optimization that tries to be smart with our prologue.

Reply via email to