https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104147
--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Looking at the PREV_WHITE uses, they look like: if (token->type == CPP_PADDING) { avoid_paste = true; if (print.source == NULL || (!(print.source->flags & PREV_WHITE) && token->val.source == NULL)) print.source = token->val.source; return; } ... if (avoid_paste) { ... else if (print.source->flags & PREV_WHITE ... } else if (token->flags & PREV_WHITE) and stringify_arg has something similar. So, makes me wonder if funlike_invocation_p isn't just a copy & paste of those conditions, with the important difference that padding (what we remember) is not the source, but the token itself. I'd expect something like: if (padding == NULL || padding->val.source == NULL || (!(padding->val.source->flags & PREV_WHITE) && token->val.source == NULL)) padding = token; instead.