https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83992
--- Comment #6 from Ian Lance Taylor <ian at airs dot com> --- In this case the problem happens before the assembler. The bad location information shows up in reemit_insn_block_notes in gcc/final.c. As the first insn in the block has no location, reemit_insn_block_notes adds a NOTE_INSN_BLOCK_BEG note before the second insn. See the NOTE_INSN_BLOCK_BEG in the RTL dump in the initial report. Perhaps reemit_insn_block_notes should check for NOTE_INSN_BASIC_BLOCK as it already checks for NOTE_INSN_BEGIN_STMT. Although the comments for NOTE_INSN_BASIC_BLOCK say that it can not be considered to be reliable at that point.