> +static __inline__ bool local_try_cmpxchg(local_t *l, long *old, long new) > +{ > + typeof(l->a.counter) *__old = (typeof(l->a.counter) *) old; > + return try_cmpxchg_local(&l->a.counter, __old, new); > +} > + This patch then causes following sparse errors: ./arch/x86/include/asm/local.h:131:16: warning: symbol '__old' shadows an earlier one ./arch/x86/include/asm/local.h:130:30: originally declared here This is then visible in all kinds of builds - which makes it hard to find out actual problems with sparse.