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.

Reply via email to