https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63348
--- Comment #2 from Uroš Bizjak <ubizjak at gmail dot com> --- (In reply to baoshan from comment #1) > I believe this regression is introduced by the code for cleanup_barriers() > in jump.c of patch https://gcc.gnu.org/ml/gcc-patches/2014-06/msg02164.html: > > The call insn was followed by a barrier insn, the try_split() would emit > another barrier insn after call insn for this case( I don't know why, please > let me know the reason); after applying that patch and with option "-g" > there would be a note instruction between the call and barrier insns which > result no barrier insn is emitted by try_split(). try_split should skip eventual note after the call when looking for barrier. It looks to me that try_split blindly assumes that next insn is the barrier, which is not the case from the introduction of debug locations.