r293032 - Revert "Use filename in linemarker when compiling preprocessed source"

Diana Picus via cfe-commits cfe-commits at lists.llvm.org
Tue Jan 24 23:27:06 PST 2017


Author: rovka
Date: Wed Jan 25 01:27:05 2017
New Revision: 293032

URL: http://llvm.org/viewvc/llvm-project?rev=293032&view=rev
Log:
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 at 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 at 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.

Removed:
    cfe/trunk/test/Frontend/preprocessed-input.c
Modified:
    cfe/trunk/include/clang/Frontend/FrontendOptions.h
    cfe/trunk/lib/Frontend/FrontendAction.cpp

Modified: cfe/trunk/include/clang/Frontend/FrontendOptions.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Frontend/FrontendOptions.h?rev=293032&r1=293031&r2=293032&view=diff
==============================================================================
--- cfe/trunk/include/clang/Frontend/FrontendOptions.h (original)
+++ cfe/trunk/include/clang/Frontend/FrontendOptions.h Wed Jan 25 01:27:05 2017
@@ -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());

Modified: cfe/trunk/lib/Frontend/FrontendAction.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/FrontendAction.cpp?rev=293032&r1=293031&r2=293032&view=diff
==============================================================================
--- cfe/trunk/lib/Frontend/FrontendAction.cpp (original)
+++ cfe/trunk/lib/Frontend/FrontendAction.cpp Wed Jan 25 01:27:05 2017
@@ -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
   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(Com
     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(Com
 
   // 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);

Removed: cfe/trunk/test/Frontend/preprocessed-input.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Frontend/preprocessed-input.c?rev=293031&view=auto
==============================================================================
--- cfe/trunk/test/Frontend/preprocessed-input.c (original)
+++ cfe/trunk/test/Frontend/preprocessed-input.c (removed)
@@ -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{{$}}




More information about the cfe-commits mailing list