https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70646
--- Comment #23 from Martin Jambor <jamborm at gcc dot gnu.org> ---
(In reply to Josh Poimboeuf from comment #20)
> Thanks very much to everyone who has looked into this so far. It would be
> very helpful to get answers to the following questions, so we can understand
> the impact to the kernel:
>
> 1) Is there a reliable way to avoid the bug, either in code or with a gcc
> flag?
If you mean in general, then unfortunately no, except for disabling
inlining altogether and removing all always_inline's. In addition to
the main bug, I found out that I check --param ipa-max-agg-items only
after incrementing it, so even setting that to zero does not help.
I'll prepare a patch for that too.
If you want to avoid it at a particular place where you know it
already occurs, then it depends on how the code looks like. Would for
the following work for you?
void __attribute__((noinline,noclone)) broken(u64* shost)
{
u8 node_name[8];
memset (&node_name, 0xFF, sizeof (node_name));
*shost = wwn_to_u64(node_name);
}
>
> 2) Is there a reliable way to detect the bug by looking at the object code?
I cannot think of any.