[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] compiler.h adjustments
On 25/10/2012 04:51, "Jan Beulich" <JBeulich@xxxxxxxx> wrote: > - replace __attribute_used__ with just __used > - add __maybe_unused and explain the difference between the two > - remove gcc 3.x specifics (as we don't support building with it > anymore; really for quite some time we didn't even support building > with the checked for minor versions) > - remove left over __setup() from init.h (rather than adjusting it) > > Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx> Acked-by: Keir Fraser <keir@xxxxxxx> > --- a/xen/arch/arm/setup.c > +++ b/xen/arch/arm/setup.c > @@ -41,7 +41,7 @@ > #include <asm/early_printk.h> > #include "gic.h" > > -static __attribute_used__ void init_done(void) > +static __used void init_done(void) > { > free_init_memory(); > startup_cpu_idle_loop(); > --- a/xen/include/xen/compiler.h > +++ b/xen/include/xen/compiler.h > @@ -1,7 +1,7 @@ > #ifndef __LINUX_COMPILER_H > #define __LINUX_COMPILER_H > > -#if !defined(__GNUC__) || (__GNUC__ < 3) > +#if !defined(__GNUC__) || (__GNUC__ < 4) > #error Sorry, your compiler is too old/not recognized. > #endif > > @@ -17,11 +17,11 @@ > #ifdef __clang__ > /* Clang can replace some vars with new automatic ones that go in .data; > * mark all explicit-segment vars 'used' to prevent that. */ > -#define __section(s) __attribute_used__ __attribute__((__section__(s))) > +#define __section(s) __used __attribute__((__section__(s))) > #else > #define __section(s) __attribute__((__section__(s))) > #endif > -#define __used_section(s) __attribute_used__ __attribute__((__section__(s))) > +#define __used_section(s) __used __attribute__((__section__(s))) > #define __text_section(s) __attribute__((__section__(s))) > > #ifdef INIT_SECTIONS_ONLY > @@ -36,23 +36,23 @@ > #define __attribute_pure__ __attribute__((pure)) > #define __attribute_const__ __attribute__((__const__)) > > -#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) > -#define __attribute_used__ __attribute__((__used__)) > -#else > -#define __attribute_used__ __attribute__((__unused__)) > -#endif > +/* > + * The difference between the following two attributes is that __used is > + * intended to be used in cases where a reference to an identifier may be > + * invisible to the compiler (e.g. an inline assembly operand not listed > + * in the asm()'s operands), preventing the compiler from eliminating the > + * variable or function. > + * __maybe_unused otoh is to be used to merely prevent warnings (e.g. when > + * an identifier is used only inside a preprocessor conditional, yet putting > + * its declaration/definition inside another conditional would harm code > + * readability). > + */ > +#define __used __attribute__((__used__)) > +#define __maybe_unused __attribute__((__unused__)) > > -#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) > #define __must_check __attribute__((warn_unused_result)) > -#else > -#define __must_check > -#endif > > -#if __GNUC__ > 3 > #define offsetof(a,b) __builtin_offsetof(a,b) > -#else > -#define offsetof(a,b) ((unsigned long)&(((a *)0)->b)) > -#endif > > /* &a[0] degrades to a pointer: a different type from an array */ > #define __must_be_array(a) \ > --- a/xen/include/xen/init.h > +++ b/xen/include/xen/init.h > @@ -114,9 +114,6 @@ extern struct kernel_param __setup_start > __kparam __setup_##_var = \ > { __setup_str_##_var, OPT_STR, &_var, sizeof(_var) } > > -/* Make sure obsolete cmdline params don't break the build. */ > -#define __setup(_name, _fn) static void * __attribute_used__ _dummy_##_fn = > _fn > - > #endif /* __ASSEMBLY__ */ > > #ifdef CONFIG_HOTPLUG > > > > _______________________________________________ > Xen-devel mailing list > Xen-devel@xxxxxxxxxxxxx > http://lists.xen.org/xen-devel _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |