diff options
| author | Diana Picus <diana.picus@linaro.org> | 2017-01-25 07:27:05 +0000 |
|---|---|---|
| committer | Diana Picus <diana.picus@linaro.org> | 2017-01-25 07:27:05 +0000 |
| commit | ac03b4b924eee5f1f9105b3119ccecb16b89f206 (patch) | |
| tree | a2adf014e4c34d7556b405330e37c41da003d2e9 | |
| parent | d09bf194fa35aeda39b8079c05f0121195ac53d4 (diff) | |
| download | bcm5719-llvm-ac03b4b924eee5f1f9105b3119ccecb16b89f206.tar.gz bcm5719-llvm-ac03b4b924eee5f1f9105b3119ccecb16b89f206.zip | |
Revert "Use filename in linemarker when compiling preprocessed source"
This reverts commit r293004 because it broke the buildbots with "unknown CPU"
errors. I tried to fix it in r293026, but that broke on Green Dragon with this
kind of error:
error: expected string not found in input
// CHECK: l{{ +}}df{{ +}}*ABS*{{ +}}{{0+}}{{.+}}preprocessed-input.c{{$}}
^
<stdin>:2:1: note: scanning from here
/Users/buildslave/jenkins/sharedspace/incremental@2/clang-build/tools/clang/test/Frontend/Output/preprocessed-input.c.tmp.o: file format Mach-O 64-bit x86-64
^
<stdin>:2:67: note: possible intended match here
/Users/buildslave/jenkins/sharedspace/incremental@2/clang-build/tools/clang/test/Frontend/Output/preprocessed-input.c.tmp.o: file format Mach-O 64-bit x86-64
I suppose this means that llvm-objdump doesn't support Mach-O, so the test
should indeed check for linux (but not for x86). I'll leave it to someone that
knows better.
llvm-svn: 293032
| -rw-r--r-- | clang/include/clang/Frontend/FrontendOptions.h | 9 | ||||
| -rw-r--r-- | clang/lib/Frontend/FrontendAction.cpp | 48 | ||||
| -rw-r--r-- | clang/test/Frontend/preprocessed-input.c | 4 |
3 files changed, 3 insertions, 58 deletions
diff --git a/clang/include/clang/Frontend/FrontendOptions.h b/clang/include/clang/Frontend/FrontendOptions.h index aa9ddffb793..9c960bb0c30 100644 --- a/clang/include/clang/Frontend/FrontendOptions.h +++ b/clang/include/clang/Frontend/FrontendOptions.h @@ -81,7 +81,7 @@ enum InputKind { IK_LLVM_IR }; - + /// \brief An input file for the front end. class FrontendInputFile { /// \brief The file name, or "-" to read from standard input. @@ -109,13 +109,6 @@ public: bool isEmpty() const { return File.empty() && Buffer == nullptr; } bool isFile() const { return !isBuffer(); } bool isBuffer() const { return Buffer != nullptr; } - bool isPreprocessed() const { - return Kind == IK_PreprocessedC || - Kind == IK_PreprocessedCXX || - Kind == IK_PreprocessedObjC || - Kind == IK_PreprocessedObjCXX || - Kind == IK_PreprocessedCuda; - } StringRef getFile() const { assert(isFile()); diff --git a/clang/lib/Frontend/FrontendAction.cpp b/clang/lib/Frontend/FrontendAction.cpp index 2eb91a7fb4f..39fc1371a9e 100644 --- a/clang/lib/Frontend/FrontendAction.cpp +++ b/clang/lib/Frontend/FrontendAction.cpp @@ -19,7 +19,6 @@ #include "clang/Frontend/MultiplexConsumer.h" #include "clang/Frontend/Utils.h" #include "clang/Lex/HeaderSearch.h" -#include "clang/Lex/LiteralSupport.h" #include "clang/Lex/Preprocessor.h" #include "clang/Lex/PreprocessorOptions.h" #include "clang/Parse/ParseAST.h" @@ -188,42 +187,6 @@ FrontendAction::CreateWrappedASTConsumer(CompilerInstance &CI, return llvm::make_unique<MultiplexConsumer>(std::move(Consumers)); } -// For preprocessed files, if the first line is the linemarker and specifies -// the original source file name, use that name as the input file name. -static bool ReadOriginalFileName(CompilerInstance &CI, std::string &InputFile) -{ - bool Invalid = false; - auto &SourceMgr = CI.getSourceManager(); - auto MainFileID = SourceMgr.getMainFileID(); - const auto *MainFileBuf = SourceMgr.getBuffer(MainFileID, &Invalid); - if (Invalid) - return false; - - std::unique_ptr<Lexer> RawLexer( - new Lexer(MainFileID, MainFileBuf, SourceMgr, CI.getLangOpts())); - - // If the first line has the syntax of - // - // # NUM "FILENAME" - // - // we use FILENAME as the input file name. - Token T; - if (RawLexer->LexFromRawLexer(T) || T.getKind() != tok::hash) - return false; - if (RawLexer->LexFromRawLexer(T) || T.isAtStartOfLine() || - T.getKind() != tok::numeric_constant) - return false; - RawLexer->LexFromRawLexer(T); - if (T.isAtStartOfLine() || T.getKind() != tok::string_literal) - return false; - - StringLiteralParser Literal(T, CI.getPreprocessor()); - if (Literal.hadError) - return false; - InputFile = Literal.GetString().str(); - return true; -} - bool FrontendAction::BeginSourceFile(CompilerInstance &CI, const FrontendInputFile &Input) { assert(!Instance && "Already processing a source file!"); @@ -372,13 +335,6 @@ bool FrontendAction::BeginSourceFile(CompilerInstance &CI, if (!isModelParsingAction()) CI.createASTContext(); - // For preprocessed files, check if the first line specifies the original - // source file name with a linemarker. - std::string OrigFile; - if (Input.isPreprocessed()) - if (ReadOriginalFileName(CI, OrigFile)) - InputFile = OrigFile; - std::unique_ptr<ASTConsumer> Consumer = CreateWrappedASTConsumer(CI, InputFile); if (!Consumer) @@ -465,9 +421,9 @@ bool FrontendAction::BeginSourceFile(CompilerInstance &CI, // If there is a layout overrides file, attach an external AST source that // provides the layouts from that file. - if (!CI.getFrontendOpts().OverrideRecordLayoutsFile.empty() && + if (!CI.getFrontendOpts().OverrideRecordLayoutsFile.empty() && CI.hasASTContext() && !CI.getASTContext().getExternalSource()) { - IntrusiveRefCntPtr<ExternalASTSource> + IntrusiveRefCntPtr<ExternalASTSource> Override(new LayoutOverrideSource( CI.getFrontendOpts().OverrideRecordLayoutsFile)); CI.getASTContext().setExternalSource(Override); diff --git a/clang/test/Frontend/preprocessed-input.c b/clang/test/Frontend/preprocessed-input.c deleted file mode 100644 index 65e52db4fca..00000000000 --- a/clang/test/Frontend/preprocessed-input.c +++ /dev/null @@ -1,4 +0,0 @@ -// RUN: %clang -E -o %t.i %s -// RUN: %clang -c -o %t.o %t.i -// RUN: llvm-objdump -t %t.o | FileCheck %s -// CHECK: l{{ +}}df{{ +}}*ABS*{{ +}}{{0+}}{{.+}}preprocessed-input.c{{$}} |

