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.