mirror of https://github.com/microsoft/clang.git
Fixed preprocessed output of the first token for pragmas.
Clang did not expanded macros in the very first token of the pragmas during preprocessed output git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@260211 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
9195a9840e
commit
9ffaadb70d
|
@ -573,6 +573,15 @@ struct UnknownPragmaHandler : public PragmaHandler {
|
||||||
Token &PragmaTok) override {
|
Token &PragmaTok) override {
|
||||||
// Figure out what line we went to and insert the appropriate number of
|
// Figure out what line we went to and insert the appropriate number of
|
||||||
// newline characters.
|
// newline characters.
|
||||||
|
if (ShouldExpandTokens) {
|
||||||
|
// The first token does not have expanded macros. Expand them, if
|
||||||
|
// required.
|
||||||
|
Token Toks[] = {PragmaTok};
|
||||||
|
PP.EnterTokenStream(Toks, llvm::array_lengthof(Toks),
|
||||||
|
/*DisableMacroExpansion=*/false,
|
||||||
|
/*OwnsTokens=*/false);
|
||||||
|
PP.Lex(PragmaTok);
|
||||||
|
}
|
||||||
Callbacks->startNewLineIfNeeded();
|
Callbacks->startNewLineIfNeeded();
|
||||||
Callbacks->MoveToLine(PragmaTok.getLocation());
|
Callbacks->MoveToLine(PragmaTok.getLocation());
|
||||||
Callbacks->OS.write(Prefix, strlen(Prefix));
|
Callbacks->OS.write(Prefix, strlen(Prefix));
|
||||||
|
|
|
@ -19,3 +19,9 @@ C: for(for))
|
||||||
// rdar://6880648
|
// rdar://6880648
|
||||||
#define f(x,y...) y
|
#define f(x,y...) y
|
||||||
f()
|
f()
|
||||||
|
|
||||||
|
// CHECK: #pragma omp parallel for
|
||||||
|
#define FOO parallel
|
||||||
|
#define Streaming _Pragma("omp FOO for")
|
||||||
|
Streaming
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue