https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118216
--- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> --- (In reply to Andrew Pinski from comment #2) > Created attachment 59992 [details] > Semi-reduced > > The `h(&hasb);` here is important. > That is from: > ``` > symval = _bfd_merged_section_offset (abfd, &sym_sec, > ((struct bfd_elf_section_data*)(sym_sec)->used_by_bfd)->sec_info, > symval); > ``` > > Which causes the uninitialize warning to lose the part about `(!hasb)`. I should mention a little bit about the reduced testcase and how it works and why the asm is written the way it is written: asm(";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;":::"memory"); Is basically representing a part of the original testcase which does not matter in general, basically `...`. There are many `;` to avoid jump threading from copying the basic block and the memory clobber is done because some parts of the `...` are calls to external functions which are not known and such.