[lttng-dev] [PATCH 1/3] urcu: avoid "expression result unused" from clang

Mathieu Desnoyers mathieu.desnoyers at efficios.com
Mon Dec 10 09:10:22 EST 2012


* Lai Jiangshan (eag0628 at gmail.com) wrote:
> On Saturday, December 8, 2012, Mathieu Desnoyers wrote:
> 
> > * Lai Jiangshan (eag0628 at gmail.com <javascript:;>) wrote:
> > > How about the one in yy.diff?
> > >
> > > xx.diff fixes the one what I had sent in 1/3 patch, but it may still
> > > cause warning in future if the complier become more strict.
> >
> > Hrm. In any cases, I think that even with the 2 patches you propose, the
> > warning "unused expression return" would still be valid (because we end
> > up not using the result of the outer statement-expression). We might
> > want to consider simpler approaches:
> >
> > 1 - Add the missing (void) casts before each CMM_STORE_SHARED() in the
> >     code. I don't like this because it makes the CMM_STORE_SHARED common
> >     case more cumbersome to use.
> 
> 
> I don't like it either, it is not friendly.
> 
> 
> > 2 - Change the CMM_STORE_SHARED() API so it does not return anything.
> >     I think most use-cases don't involve using its return value anyway.
> 
> 
> 
> It will break the original goal:
> CMM_STORE_SHARED() can be used as chained assignment:
> tmp = CMM_STORE_SHARED(x, v)
> CMM_STORE_SHARED(y, CMM_STORE_SHARED(x, v))
> func(CMM_STORE_SHARED(x,v))

Indeed, I'd hate to have to change this semantic.

Thanks,

Mathieu

> 
> 
> 
> > Thoughts ?
> >
> > Thanks,
> >
> > Mathieu
> >
> > >
> > > On Sat, Dec 8, 2012 at 1:27 AM, Lai Jiangshan <eag0628 at gmail.com<javascript:;>>
> > wrote:
> > > >
> > > >
> > > > On Saturday, December 8, 2012, Mathieu Desnoyers wrote:
> > > >>
> > > >> * Lai Jiangshan (laijs at cn.fujitsu.com <javascript:;>) wrote:
> > > >> > The last expression result is unused and clang will complain.
> > > >> > The trick in the patch supresses the complaint
> > > >>
> > > >> Hrm, but with this patch, gcc complains:
> > > >>
> > > >> rculfhash.c:1921:3: warning: variable '_w' set but not used
> > > >> [-Wunused-but-set-variable]
> > > >>
> > > >> using
> > > >>
> > > >> gcc version 4.7.2 (Debian 4.7.2-4)
> > > >
> > > >
> > > > Ouch, my gcc is too old
> > > >
> > > >
> > > >>
> > > >>
> > > >> Thoughts ?
> > > >>
> > > >> Thanks,
> > > >>
> > > >> Mathieu
> > > >>
> > > >> >
> > > >> > Signed-off-by: Lai Jiangshan <laijs at cn.fujitsu.com <javascript:;>>
> > > >> > ---
> > > >> >  urcu/system.h        |    5 ++++-
> > > >> >  2 files changed, 4 insertions(+), 1 deletions(-)
> > > >> >
> > > >> > diff --git a/urcu/system.h b/urcu/system.h
> > > >> > index 2a45f22..6b7b0af 100644
> > > >> > --- a/urcu/system.h
> > > >> > +++ b/urcu/system.h
> > > >> > @@ -46,12 +46,15 @@
> > > >> >  /*
> > > >> >   * Store v into x, where x is located in shared memory. Performs
> > the
> > > >> >   * required cache flush after writing. Returns v.
> > > >> > + * "_w" here avoids the warning from clang:
> > > >> > + *   warning: expression result unused [-Wunused-value]
> > > >> >   */
> > > >> >  #define CMM_STORE_SHARED(x, v)               \
> > > >> >       ({                              \
> > > >> >               __typeof__(x) _v = _CMM_STORE_SHARED(x, v);     \
> > > >> > +             __typeof__(x) _w;       \
> > > >> >               cmm_smp_wmc();          \
> > > >> > -             _v;                     \
> > > >> > +             _w = _v;                \
> > > >> >       })
> > > >> >
> > > >> >  #endif /* _URCU_SYSTEM_H */
> > > >> > --
> > > >> > 1.7.4.4
> > > >> >
> > > >> >
> > > >> > _______________________________________________
> > > >> > lttng-dev mailing list
> > > >> > lttng-dev at lists.lttng.org <javascript:;>
> > > >> > http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
> > > >>
> > > >>
> > > >> --
> > > >> Mathieu Desnoyers
> > > >> Operating System Efficiency R&D Consultant
> > > >> EfficiOS Inc.
> > > >> http://www.efficios.com
> > > >>
> > > >> _______________________________________________
> > > >> lttng-dev mailing list
> > > >> lttng-dev at lists.lttng.org <javascript:;>
> > > >> http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
> >
> >
> >
> >
> > --
> > Mathieu Desnoyers
> > Operating System Efficiency R&D Consultant
> > EfficiOS Inc.
> > http://www.efficios.com
> >

-- 
Mathieu Desnoyers
Operating System Efficiency R&D Consultant
EfficiOS Inc.
http://www.efficios.com



More information about the lttng-dev mailing list