forked from OSchip/llvm-project
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 llvm-svn: 260211
This commit is contained in:
parent
7e671e06a2
commit
6ee07eab03
|
@ -573,6 +573,15 @@ struct UnknownPragmaHandler : public PragmaHandler {
|
|||
Token &PragmaTok) override {
|
||||
// Figure out what line we went to and insert the appropriate number of
|
||||
// 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->MoveToLine(PragmaTok.getLocation());
|
||||
Callbacks->OS.write(Prefix, strlen(Prefix));
|
||||
|
|
|
@ -19,3 +19,9 @@ C: for(for))
|
|||
// rdar://6880648
|
||||
#define f(x,y...) y
|
||||
f()
|
||||
|
||||
// CHECK: #pragma omp parallel for
|
||||
#define FOO parallel
|
||||
#define Streaming _Pragma("omp FOO for")
|
||||
Streaming
|
||||
|
||||
|
|
Loading…
Reference in New Issue