Re: This patch triggers a bad gcc bug (was Re: [PATCH] force inlining of some byteswap operations)

From: Ingo Molnar
Date: Fri Apr 15 2016 - 01:45:30 EST



* Denys Vlasenko <dvlasenk@xxxxxxxxxx> wrote:

> > In fact, the following patch seems to fix it:
> >
> > diff --git a/include/scsi/scsi_transport_fc.h b/include/scsi/scsi_transport_fc.h
> > index bf66ea6..56b9e81 100644
> > --- a/include/scsi/scsi_transport_fc.h
> > +++ b/include/scsi/scsi_transport_fc.h
> > @@ -796,7 +796,7 @@ fc_remote_port_chkready(struct fc_rport *rport)
> > return result;
> > }
> >
> > -static inline u64 wwn_to_u64(u8 *wwn)
> > +static __always_inline u64 wwn_to_u64(u8 *wwn)
> > {
> > return get_unaligned_be64(wwn);
> > }
>
> It is not a guarantee.

Of course it's a workaround - but is there any deterministic way to turn off this
GCC bug (by activating some GCC command line switch), or do we have to live with
objtool warning about this GCC?

Which, by the way, is pretty cool!

Thanks,

Ingo