https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88432
--- Comment #3 from alahay01 at gcc dot gnu.org --- I considered a number of solutions, but they all had issues: 1) Place the RTL for the stack guard inside the prologue, giving: *function prologue rtl *stack guard code (__stack_chk_guard) *NOTE_INSN_PROLOGUE_END *NOTE_INSN_FUNCTION_BEG *rest of the function rtl Then this would then automatically stop the line number being dumped for the stack guard. The rest of the assembly would be the same. Downside here is that in the future new optimisations could be added that have exactly the same issue. 2) Add line numbers to NOTE_INSN_FUNCTION_BEG and remove line numbers from stack guard code (which currently has the line number for the { line) 3) Ensure the stack guard code has the line number of the first line of the function main body. I'm not sure if 2 and 3 will break instruction reordering.