fix PR3880, fixing a comma swallowing bug handling macros that only take
... arguments. llvm-svn: 67706
This commit is contained in:
parent
beb9055000
commit
51a53f92a5
|
@ -403,6 +403,12 @@ MacroArgs *Preprocessor::ReadFunctionLikeMacroArgs(Token &MacroName,
|
||||||
Tok.setLocation(EndLoc);
|
Tok.setLocation(EndLoc);
|
||||||
Tok.setLength(0);
|
Tok.setLength(0);
|
||||||
ArgTokens.push_back(Tok);
|
ArgTokens.push_back(Tok);
|
||||||
|
} else if (NumActuals == 1 && ArgTokens.size() == 1) {
|
||||||
|
// If there is exactly one argument, and that argument is just an EOF token,
|
||||||
|
// then we have an empty "()" argument empty list. This is fine, even if
|
||||||
|
// the macro expects one argument (the argument is just empty). However, if
|
||||||
|
// the macro expects "...", then we need to know that it was elided.
|
||||||
|
isVarargsElided = MinArgsExpected == 1 && MI->isVariadic();
|
||||||
}
|
}
|
||||||
|
|
||||||
return MacroArgs::create(MI, &ArgTokens[0], ArgTokens.size(),isVarargsElided);
|
return MacroArgs::create(MI, &ArgTokens[0], ArgTokens.size(),isVarargsElided);
|
||||||
|
|
|
@ -14,3 +14,8 @@ X2()
|
||||||
X3(foo)
|
X3(foo)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// RUN: clang-cc %s -E | grep 'AA BB'
|
||||||
|
// PR3880
|
||||||
|
#define X4(...) AA , ## __VA_ARGS__ BB
|
||||||
|
X4()
|
||||||
|
|
Loading…
Reference in New Issue