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