[linux-dvb] [patch 3/3] fix strict aliasing warning.
js at linuxtv.org
Thu Sep 29 17:22:12 CEST 2005
Ludwig Nussel wrote:
> Johannes Stezenbach wrote:
> > On Thu, Sep 29, 2005 Ludwig Nussel wrote:
> > > An int* must not be used to change some enum. As workaround a char* can be
> > > used.
> > Says who?
> My local gcc guru ;-) As far as I understood gcc makes the
> assumption that a pointer to e.g. int never points to a float, enum
> something etc and vice versa. With that assumption it can optimize
> some cases better but may also produces garbage if your pointers do
> point to the same location. Only char* may point to anything.
gcc info pages contain some info in the -fstrict-aliasing
description (and of course the iso c99 spec).
But AFAIK enums have int type (unless you use -fshort-enum), and a
pointer to int may alias a pointer to enum without breaking the rules.
> > Which compiler with whcih option gives you a warning about this?
> gcc (GCC) 4.1.0 20050920 (experimental) (SUSE Linux)
> -O2 -Wall -D_FORTIFY_SOURCE=2
> > This patch looks wrong to me.
> This whole alising stuff is strange. The code as it is right now is
> definitively wrong, eventhough gcc probably doesn't produce garbage
> in this case as the affected function likely will not be inlined.
> Anyways, aliasing isn't exactly something I care about but I can't
> get packages out of our build system as long as there are such
> problems. if you think the interface to parse_param is perfect
> -fno-strict-aliasing needs to be added to CFLAGS.
I believe your gcc is buggy.
What is -D_FORTIFY_SOURCE=2 ?
More information about the linux-dvb