The Altivec standard specifies that __vector comes first as a type specifier, and is a keyword.  It also says that vector can be either a macro or a context-sensitive keyword.  Having it be a macro, of course, is not a good idea.  Which is probably why gcc (at least the PS3 version) does it the context-sensitive way.  Thus __vector cannot be a declaration name, but vector can.<br>
<br>
<div class="gmail_quote">On Wed, Dec 9, 2009 at 2:05 PM, Jens Ayton <span dir="ltr"><<a href="mailto:mailing-lists.jens@ayton.se">mailing-lists.jens@ayton.se</a>></span> wrote:<br>
<blockquote style="BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex" class="gmail_quote">
<div class="im">On Dec 8, 2009, at 20:36, Chris Lattner wrote:<br>> On Dec 8, 2009, at 11:30 AM, John Thompson wrote:<br>>><br>>><br></div>
<div class="im">>> My understanding is that "__vector" (or "vector") in this context is always followed by a numeric type, i.e. "_vector unsigned int".  My guess was that this would be effecticvely equivalent to "__attribute__((vector_size(16))) unsigned int", so the plan would then be to have the resulting type for these two be the same after the semantic action.<br>
><br>> so 'vector' doesn't work as a type qualifier?  For others type qualifiers, you can arrange them, e.g. "const int" == "int const" etc.<br><br></div>In GCC with -faltivec, vector does not work as a type qualifier, but __vector does.<br>
<br>#include <altivec.h>   // warning: ignoring <altivec.h> because "-faltivec" specified<br><br>int main (int argc, const char * argv[])<br>{<br>   vector int a;      // warning: unused variable 'a'<br>
   int vector;        // warning: unused variable 'vector'<br>   int vector b;      // error: nested functions are disabled (thanks, gcc)<br><br>   __vector int c;    // warning: unused variable 'c'<br>   int __vector;      // warning: useless type name in empty declaration<br>
   int __vector d;    // warning: unused variable 'd'<br><br>   return 0;<br>}<br><br><br>Without -faltivec, vector is defined as __vector and acts as a qualifier (so the above code compiles with six warnings).<br>
<br><br>--<br><font color="#888888">Jens Ayton<br><br></font></blockquote></div><br><br clear="all"><br>-- <br>John Thompson<br><a href="mailto:John.Thompson.JTSoftware@gmail.com">John.Thompson.JTSoftware@gmail.com</a><br>
<br>