https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67784
Marek Polacek <mpolacek at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2015-11-12 CC| |mpolacek at gcc dot gnu.org Ever confirmed|0 |1 --- Comment #2 from Marek Polacek <mpolacek at gcc dot gnu.org> --- Confirmed. It seems that in the first case we parse "T *x;" using c_parser_statement_after_labels (that fails) while in the second case with c_parser_declaration_or_fndef (that succeeds). That is because in the first case the parser sees "T" as an ID while in the second case as a TYPENAME. I don't know yet why is that so.