On 01/02/2016 12: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.
OK for the trunk (gcc-7)

It may not matter in practice, but you could try ripping out the other wide effects into individual insns and recognizing them. And if that works, then you can proceed to eliminate the jump, marking the fallthru label, etc.

I think combine has some code to do similar things.

jeff

Reply via email to