diff options
| -rw-r--r-- | clang/include/clang/Lex/Lexer.h | 3 | ||||
| -rw-r--r-- | clang/lib/Frontend/ASTUnit.cpp | 4 | ||||
| -rw-r--r-- | clang/lib/Frontend/FrontendActions.cpp | 2 | ||||
| -rw-r--r-- | clang/lib/Lex/Lexer.cpp | 6 | ||||
| -rw-r--r-- | clang/test/Lexer/preamble.c | 4 |
5 files changed, 11 insertions, 8 deletions
diff --git a/clang/include/clang/Lex/Lexer.h b/clang/include/clang/Lex/Lexer.h index 3bc44b192ac..21f3f8df86b 100644 --- a/clang/include/clang/Lex/Lexer.h +++ b/clang/include/clang/Lex/Lexer.h @@ -322,7 +322,8 @@ public: /// of the file begins along with a boolean value indicating whether /// the preamble ends at the beginning of a new line. static std::pair<unsigned, bool> - ComputePreamble(const llvm::MemoryBuffer *Buffer, unsigned MaxLines = 0); + ComputePreamble(const llvm::MemoryBuffer *Buffer, const LangOptions &Features, + unsigned MaxLines = 0); //===--------------------------------------------------------------------===// // Internal implementation interfaces. diff --git a/clang/lib/Frontend/ASTUnit.cpp b/clang/lib/Frontend/ASTUnit.cpp index e369f430b7a..71f9c0dada8 100644 --- a/clang/lib/Frontend/ASTUnit.cpp +++ b/clang/lib/Frontend/ASTUnit.cpp @@ -1122,7 +1122,9 @@ ASTUnit::ComputePreamble(CompilerInvocation &Invocation, CreatedBuffer = true; } - return std::make_pair(Buffer, Lexer::ComputePreamble(Buffer, MaxLines)); + return std::make_pair(Buffer, Lexer::ComputePreamble(Buffer, + Invocation.getLangOpts(), + MaxLines)); } static llvm::MemoryBuffer *CreatePaddedMainFileBuffer(llvm::MemoryBuffer *Old, diff --git a/clang/lib/Frontend/FrontendActions.cpp b/clang/lib/Frontend/FrontendActions.cpp index 4eb9cda3987..d6df141905a 100644 --- a/clang/lib/Frontend/FrontendActions.cpp +++ b/clang/lib/Frontend/FrontendActions.cpp @@ -220,7 +220,7 @@ void PrintPreambleAction::ExecuteAction() { llvm::MemoryBuffer *Buffer = CI.getFileManager().getBufferForFile(getCurrentFile()); if (Buffer) { - unsigned Preamble = Lexer::ComputePreamble(Buffer).first; + unsigned Preamble = Lexer::ComputePreamble(Buffer, CI.getLangOpts()).first; llvm::outs().write(Buffer->getBufferStart(), Preamble); delete Buffer; } diff --git a/clang/lib/Lex/Lexer.cpp b/clang/lib/Lex/Lexer.cpp index d8ebc9ffe6b..1ec50cd2c5d 100644 --- a/clang/lib/Lex/Lexer.cpp +++ b/clang/lib/Lex/Lexer.cpp @@ -505,14 +505,14 @@ namespace { } std::pair<unsigned, bool> -Lexer::ComputePreamble(const llvm::MemoryBuffer *Buffer, unsigned MaxLines) { +Lexer::ComputePreamble(const llvm::MemoryBuffer *Buffer, + const LangOptions &Features, unsigned MaxLines) { // Create a lexer starting at the beginning of the file. Note that we use a // "fake" file source location at offset 1 so that the lexer will track our // position within the file. const unsigned StartOffset = 1; SourceLocation StartLoc = SourceLocation::getFromRawEncoding(StartOffset); - LangOptions LangOpts; - Lexer TheLexer(StartLoc, LangOpts, Buffer->getBufferStart(), + Lexer TheLexer(StartLoc, Features, Buffer->getBufferStart(), Buffer->getBufferStart(), Buffer->getBufferEnd()); bool InPreprocessorDirective = false; diff --git a/clang/test/Lexer/preamble.c b/clang/test/Lexer/preamble.c index 7735b475e1a..5b2739abefc 100644 --- a/clang/test/Lexer/preamble.c +++ b/clang/test/Lexer/preamble.c @@ -1,5 +1,5 @@ // Preamble detection test: see below for comments and test commands. -// +//* A BCPL comment that includes '/*' #include <blah> #ifndef FOO #else @@ -24,7 +24,7 @@ int foo(); // RUN: FileCheck < %t %s // CHECK: // Preamble detection test: see below for comments and test commands. -// CHECK-NEXT: // +// CHECK-NEXT: //* A BCPL comment that includes '/*' // CHECK-NEXT: #include <blah> // CHECK-NEXT: #ifndef FOO // CHECK-NEXT: #else |

