summaryrefslogtreecommitdiffstats
path: root/clang/Lex/MacroExpander.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2006-07-29 07:14:41 +0000
committerChris Lattner <sabre@nondot.org>2006-07-29 07:14:41 +0000
commitf76e62ecad77fa706809f42be8b7424604af733d (patch)
tree707cda41e3512716dcbc971e3d8b10614d8bcc7a /clang/Lex/MacroExpander.cpp
parent5b123fde96ffc953f46c126325351b4049e93f8c (diff)
downloadbcm5719-llvm-f76e62ecad77fa706809f42be8b7424604af733d.tar.gz
bcm5719-llvm-f76e62ecad77fa706809f42be8b7424604af733d.zip
Implement support for #__VA_ARGS__
llvm-svn: 38791
Diffstat (limited to 'clang/Lex/MacroExpander.cpp')
-rw-r--r--clang/Lex/MacroExpander.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/clang/Lex/MacroExpander.cpp b/clang/Lex/MacroExpander.cpp
index c887512ff0e..e7ace59e17f 100644
--- a/clang/Lex/MacroExpander.cpp
+++ b/clang/Lex/MacroExpander.cpp
@@ -307,7 +307,13 @@ void MacroExpander::ExpandFunctionArguments() {
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
OpenPOWER on IntegriCloud