> > Here's my reduced testcase: > > typedef long GLint; > extern void aglChoosePixelFormat(const GLint *); > void find(const int *alistp) { > const int *blist; > int list[32]; > if (alistp) > blist = alistp; > else { > list[3] = 42; /* this store disappears with -O1 -fstrict- > aliasing */ > blist = list; > } > aglChoosePixelFormat((GLint*)blist); > } > > (The original testcase is C++, from the FLTK project.) > > If I compile this with -O1 -fstrict-aliasing, the "= 42" store > disappears. I've confirmed this on mainline PPC and x86. > > I'm not a language lawyer; is this a legal program? (If the program > is legal, should I file a PR?)
This is legal as long as aglChoosePixelFormat only access it as int. -- Pinski