https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79905
--- Comment #6 from Michael Meissner <meissner at linux dot vnet.ibm.com> --- On Thu, Mar 16, 2017 at 03:10:19PM +0000, rguenth at gcc dot gnu.org wrote: > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79905 Generally, the "vector" keyword is a conditional macro that looks at the next token or two to decide whether or not to expand the macro. If the next token is one of the standard types or __bool/__pixel, then __vector/vector is expanded to: __attribute__((altivec(vector__)) The magic is in rs6000-c.c, particularly in altivec_categorize_keyword, init_vector_keywords, rs6000_macro_to_expand, and rs6000_cpu_cpp_builtins.