------- Comment #3 from meissner at linux dot vnet dot ibm dot com 2009-03-26 15:24 ------- Subject: Re: Bad interaction of decls named 'vector' and -maltivec vector support
On Thu, Mar 26, 2009 at 02:00:49PM -0000, jakub at gcc dot gnu dot org wrote: > > > ------- Comment #2 from jakub at gcc dot gnu dot org 2009-03-26 14:00 ------- > What exact problem do you see? > #define ATTRIBUTE_UNUSED __attribute__((unused)) > > vector int i; > > int *foo (int *vector) > { > return vector; > } > > int *bar (int *vector ATTRIBUTE_UNUSED) > { > return vector; > } > > int *baz (int *vector __attribute__((unused))) > { > return vector; > } > > compiles just fine for me with -maltivec -Wall (and correctly complains only > in > foo about the unused argument). I just looked at it, and the problem is if you use the -save-temps options along with -maltivec. Because -save-temps invokes the preprocessor as a separate stage, when it expands vector (to be vector) and ATTRIBUTE_UNUSED (to be __attribute__((unused))), it glues the two tokens together. Since I'm looking at power7 code generation right now, I was doing a full bootstrap with -save-temps to see where the power7 instructions were being generated. I suspect if we change the default definition of 'vector' to "vector " instead of "vector" if vector isn't follwed by a type keyword, it will fix the problem (ditto for bool, etc.). -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39558