[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH 2/8] xen/misc: Remove or annotate possibly-unused functions



On 10/02/16 13:06, Jan Beulich wrote:
>>>> On 09.02.16 at 21:01, <andrew.cooper3@xxxxxxxxxx> wrote:
>> --- a/xen/common/rcupdate.c
>> +++ b/xen/common/rcupdate.c
>> @@ -141,12 +141,6 @@ static inline int rcu_batch_before(long a, long b)
>>      return (a - b) < 0;
>>  }
>>  
>> -/* Is batch a after batch b ? */
>> -static inline int rcu_batch_after(long a, long b)
>> -{
>> -    return (a - b) > 0;
>> -}
> To me it is the nature of inline functions that they may or may not be
> used, regardless of whether they live in a header file (where I would
> have supposed Clang won't warn about, but the change below makes
> me assume I'm wrong) or in a source file.
>
>> --- a/xen/include/xen/compat.h
>> +++ b/xen/include/xen/compat.h
>> @@ -134,14 +134,16 @@
>>  #define CHECK_NAME_(k, n, tag) __check ## tag ## k ## _ ## n
>>  
>>  #define CHECK_TYPE(name) \
>> -static inline int CHECK_NAME(name, T)(xen_ ## name ## _t *x, \
>> -                                      compat_ ## name ## _t *c) \
>> +static inline int __maybe_unused \
>> +CHECK_NAME(name, T)(xen_ ## name ## _t *x, \
>> +                    compat_ ## name ## _t *c) \
>>  { \
>>      return x == c; \
>>  }
>>  #define CHECK_TYPE_(k, n) \
>> -static inline int CHECK_NAME_(k, n, T)(k xen_ ## n *x, \
>> -                                       k compat_ ## n *c) \
>> +static inline int __maybe_unused \
>> +CHECK_NAME_(k, n, T)(k xen_ ## n *x, \
>> +                     k compat_ ## n *c) \
>>  { \
>>      return x == c; \
>>  }
>> @@ -154,14 +156,14 @@ static inline int CHECK_NAME_(k, n, T)(k xen_ ## n *x, 
>> \
>>                                            sizeof(k compat_ ## n)) * 2]
>>  
>>  #define CHECK_FIELD_COMMON(name, t, f) \
>> -static inline int name(xen_ ## t ## _t *x, compat_ ## t ## _t *c) \
>> +static inline int __maybe_unused name(xen_ ## t ## _t *x, compat_ ## t ## 
>> _t *c) \
>>  { \
>>      BUILD_BUG_ON(offsetof(xen_ ## t ## _t, f) != \
>>                   offsetof(compat_ ## t ## _t, f)); \
>>      return &x->f == &c->f; \
>>  }
>>  #define CHECK_FIELD_COMMON_(k, name, n, f) \
>> -static inline int name(k xen_ ## n *x, k compat_ ## n *c) \
>> +static inline int __maybe_unused name(k xen_ ## n *x, k compat_ ## n *c) \
>>  { \
>>      BUILD_BUG_ON(offsetof(k xen_ ## n, f) != \
>>                   offsetof(k compat_ ## n, f)); \
> So if these are all noticed to be unused, why would others in other
> header files not be?

Because they are instantiated in translation units, with no callers, by
code like common/trace.c:

#ifdef CONFIG_COMPAT
#include <compat/trace.h>
#define xen_t_buf t_buf
CHECK_t_buf;
#undef xen_t_buf
#else
#define compat_t_rec t_rec
#endif

This was the first example which blew up.

~Andrew

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.