[PATCH 2/3] linux/barebox-wrapper: Silence gcc5 warning

Trent Piepho tpiepho at kymetacorp.com
Thu Dec 10 11:23:33 PST 2015


On Thu, 2015-12-10 at 11:07 +0100, Sascha Hauer wrote:
> gcc5 warns about using flags uninitialized in spin_lock_irqsave,
> although it could look into the static inline spin_lock_irqsave
> implementation and see it's not used at all. An empty define instead
> of the static inline wrapper would lead to a "unused variable" warning.
> Let's create a macro and fake some usage of the flags variable. This
> probably helps until gcc6 is out.
> 
> Signed-off-by: Sascha Hauer <s.hauer at pengutronix.de>
> ---
>  include/linux/barebox-wrapper.h | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/include/linux/barebox-wrapper.h b/include/linux/barebox-wrapper.h
> index 3859185..5fe7971 100644
> --- a/include/linux/barebox-wrapper.h
> +++ b/include/linux/barebox-wrapper.h
> @@ -39,8 +39,8 @@ typedef int   spinlock_t;
>  #define spin_lock_init(...)
>  #define spin_lock(...)
>  #define spin_unlock(...)
> -static inline void spin_lock_irqsave(spinlock_t *lock, unsigned long flags) {}
> -static inline void spin_unlock_irqrestore(spinlock_t *lock, unsigned long flags) {}
> +#define spin_lock_irqsave(lock, flags) do { flags = 0; } while (0)
> +#define spin_unlock_irqrestore(lock, flags) do { flags = flags; } while (0)

It's more complex, but one would still get compiler type checking of the
arguments if one did:

static inline void _slis(spinlock_t *lock, unsigned long flags) {}
static inline void _slir(spinlock_t *lock, unsigned long flags) {}
#define spin_lock_irqsave(lock, flags) _slis(lock, flags = 0)
#define spin_lock_irqrestore(lock, flags) _slir(lock, flags = flags)

It think that would make gcc happy too?





More information about the barebox mailing list