|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 6 of 6] x86: explicitly mark an __initdata variable as used
At 14:44 +0100 on 05 Apr (1333637053), Jan Beulich wrote:
> >>> On 05.04.12 at 14:07, Tim Deegan <tim@xxxxxxx> wrote:
> > x86: explicitly mark an __initdata variable as used.
> >
> > This stops LLVM from replacing it with a different, auto-generated
> > variable as part of an optimization. (The auto-generated variable
> > ends up in the normal data section, failing the check that this
> > file only contains __initdata vars).
> >
> > Signed-off-by: Tim Deegan <tim@xxxxxxx>
> >
> > diff -r 5101e5ed2473 -r 5a2f5ab5128e xen/arch/x86/domain_build.c
> > --- a/xen/arch/x86/domain_build.c Thu Apr 05 12:55:54 2012 +0100
> > +++ b/xen/arch/x86/domain_build.c Thu Apr 05 12:55:54 2012 +0100
> > @@ -129,7 +129,7 @@ static struct page_info * __init alloc_c
> > struct domain *d, unsigned long max_pages)
> > {
> > static unsigned int __initdata last_order = MAX_ORDER;
> > - static unsigned int __initdata memflags = MEMF_no_dma;
> > + static unsigned int __initdata __attribute__((used)) memflags =
> > MEMF_no_dma;
>
> Without a code comment, the mere fact that this is (a) totally
> non-obvious, (b) being done differently for two neighboring
> variables of otherwise the exact same kind, and (c) probably
> a compiler bug makes it quite likely that your change will get
> removed again by a future commit.
Sorry, yes this deserves a code comment. I'll add one.
I agree that this is a compiler bug, but the LLVM developers disagree,
and I have limited time for arguing with compiler devs.
> Furthermore, it being needed on one but not the other variable
> makes it highly likely that the same issue could surface at any
> time here or elsewhere in the code.
I considered putting the __attribute__((used)) into the definition of
__initdata but thought it was more invasive. I'm happy to reconsider.
Tim.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |