https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65779
Alan Modra <amodra at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |amodra at gmail dot com --- Comment #2 from Alan Modra <amodra at gmail dot com> --- The underlying problem here is that this sequence setting up the GOT/TOC pointer in adler32(): (insn 358 357 359 2 (parallel [ (set (reg:SI 65 lr) (symbol_ref:SI ("*.LCF2"))) (use (unspec [ (symbol_ref:SI ("*.LCF2")) ] UNSPEC_TOC)) ]) ../../../../../../../../../rtems/c/src/lib/libbsp/powerpc/motorola_p\ owerpc/bootloader/../../../powerpc/shared/bootloader/zlib.c:2081 -1 (nil)) (insn 359 358 360 2 (set (reg:SI 30 30) (reg:SI 65 lr)) ../../../../../../../../../rtems/c/src/lib/libbsp/power\ pc/motorola_powerpc/bootloader/../../../powerpc/shared/bootloader/zlib.c:2081 -\ 1 (expr_list:REG_DEAD (reg:SI 65 lr) (nil))) (insn 360 359 376 2 (set (reg:SI 0 0) (mem:SI (plus:SI (reg:SI 30 30) (minus:SI (symbol_ref:SI ("*.LCL2")) (symbol_ref:SI ("*.LCF2")))) [0 S4 A8])) ../../../../../..\ /../../../rtems/c/src/lib/libbsp/powerpc/motorola_powerpc/bootloader/../../../p\ owerpc/shared/bootloader/zlib.c:2081 -1 (nil)) (debug_insn 376 360 361 2 (var_location:SI D#37 (reg/v:SI 0 0 [orig:239 s2 ] [2\ 39])) -1 (nil)) (insn 361 376 362 2 (set (reg:SI 30 30) (plus:SI (reg:SI 0 0) (reg:SI 30 30))) ../../../../../../../../../rtems/c/src/lib/libbsp/\ powerpc/motorola_powerpc/bootloader/../../../powerpc/shared/bootloader/zlib.c:2\ 081 -1 (expr_list:REG_DEAD (reg:SI 0 0) (expr_list:REG_UNUSED (reg:SI 30 30) (nil)))) is deleted by peephole2 DCE: Deleting insn 361 deleting insn with uid = 361. DCE: Deleting insn 360 deleting insn with uid = 360. DCE: Deleting insn 359 deleting insn with uid = 359. DCE: Deleting insn 358 deleting insn with uid = 358. resulting in uses_TOC() returning false due to not finding UNSPEC_TOC, and thus not emitting the labels. Deleting the insns is correct; we don't need the GOI pointer set up in adler32(). gcc-4.9 also does the same thing, but doesn't leak the labels into debug insns.