Implement support for #__VA_ARGS__
llvm-svn: 38791
diff --git a/clang/Lex/MacroExpander.cpp b/clang/Lex/MacroExpander.cpp
index c887512..e7ace59 100644
--- a/clang/Lex/MacroExpander.cpp
+++ b/clang/Lex/MacroExpander.cpp
@@ -307,7 +307,13 @@
const LexerToken &CurTok = MacroTokens[i];
if (CurTok.getKind() == tok::hash || CurTok.getKind() == tok::hashat) {
int ArgNo = Macro->getArgumentNum(MacroTokens[i+1].getIdentifierInfo());
- assert(ArgNo != -1 && "Token following # is not an argument?");
+ if (ArgNo == -1) {
+ // Otherwise, this must be #__VA_ARGS__.
+ assert(MacroTokens[i+1].getIdentifierInfo() ==
+ PP.get__VA_ARGS__Identifier() &&
+ "Token following # is not an argument?");
+ ArgNo = Macro->getNumArgs();
+ }
LexerToken Res;
if (CurTok.getKind() == tok::hash) // Stringify