[llvm] r267097 - [ThinLTO] Remove unused/incomplete lazy summary reading support (NFC)

Teresa Johnson via llvm-commits llvm-commits at lists.llvm.org
Thu Apr 21 18:52:00 PDT 2016


Author: tejohnson
Date: Thu Apr 21 20:52:00 2016
New Revision: 267097

URL: http://llvm.org/viewvc/llvm-project?rev=267097&view=rev
Log:
[ThinLTO] Remove unused/incomplete lazy summary reading support (NFC)

This removes the interfaces added (and not yet complete) to support
lazy reading of summaries. This support is not expected to be needed
since we are moving to a model where the full index is only being
traversed in the thin link step, instead of the back ends.

(The second part of this that I plan to do next is remove the
GlobalValueInfo from the ModuleSummaryIndex - it was mostly needed to
support lazy parsing of summaries. The index can instead reference the
summary structures directly.)

Modified:
    llvm/trunk/include/llvm/Bitcode/ReaderWriter.h
    llvm/trunk/include/llvm/Object/ModuleSummaryIndexObjectFile.h
    llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp
    llvm/trunk/lib/LTO/ThinLTOCodeGenerator.cpp
    llvm/trunk/lib/Object/ModuleSummaryIndexObjectFile.cpp

Modified: llvm/trunk/include/llvm/Bitcode/ReaderWriter.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Bitcode/ReaderWriter.h?rev=267097&r1=267096&r2=267097&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Bitcode/ReaderWriter.h (original)
+++ llvm/trunk/include/llvm/Bitcode/ReaderWriter.h Thu Apr 21 20:52:00 2016
@@ -75,24 +75,9 @@ namespace llvm {
                              DiagnosticHandlerFunction DiagnosticHandler);
 
   /// Parse the specified bitcode buffer, returning the module summary index.
-  /// If IsLazy is true, parse the entire module summary into
-  /// the index. Otherwise skip the module summary section, and only create
-  /// an index object with a map from value name to the value's summary offset.
-  /// The index is used to perform lazy summary reading later.
   ErrorOr<std::unique_ptr<ModuleSummaryIndex>>
   getModuleSummaryIndex(MemoryBufferRef Buffer,
-                        DiagnosticHandlerFunction DiagnosticHandler,
-                        bool IsLazy = false);
-
-  /// This method supports lazy reading of summary data from the
-  /// combined index during function importing. When reading the combined index
-  /// file, getModuleSummaryIndex is first invoked with IsLazy=true.
-  /// Then this method is called for each value considered for importing,
-  /// to parse the summary information for the given value name into
-  /// the index.
-  std::error_code readGlobalValueSummary(
-      MemoryBufferRef Buffer, DiagnosticHandlerFunction DiagnosticHandler,
-      StringRef ValueName, std::unique_ptr<ModuleSummaryIndex> Index);
+                        DiagnosticHandlerFunction DiagnosticHandler);
 
   /// \brief Write the specified module to the specified raw output stream.
   ///

Modified: llvm/trunk/include/llvm/Object/ModuleSummaryIndexObjectFile.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Object/ModuleSummaryIndexObjectFile.h?rev=267097&r1=267096&r2=267097&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Object/ModuleSummaryIndexObjectFile.h (original)
+++ llvm/trunk/include/llvm/Object/ModuleSummaryIndexObjectFile.h Thu Apr 21 20:52:00 2016
@@ -89,16 +89,7 @@ public:
   /// Return new ModuleSummaryIndexObjectFile instance containing parsed module
   /// summary/index.
   static ErrorOr<std::unique_ptr<ModuleSummaryIndexObjectFile>>
-  create(MemoryBufferRef Object, DiagnosticHandlerFunction DiagnosticHandler,
-         bool IsLazy = false);
-
-  /// \brief Parse the summary information for global value with the
-  /// given name out of the given buffer. Parsed information is
-  /// stored on the index object saved in this object.
-  std::error_code
-  findGlobalValueSummaryInMemBuffer(MemoryBufferRef Object,
-                                    DiagnosticHandlerFunction DiagnosticHandler,
-                                    StringRef ValueName);
+  create(MemoryBufferRef Object, DiagnosticHandlerFunction DiagnosticHandler);
 };
 }
 

Modified: llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp?rev=267097&r1=267096&r2=267097&view=diff
==============================================================================
--- llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp (original)
+++ llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp Thu Apr 21 20:52:00 2016
@@ -430,14 +430,6 @@ class ModuleSummaryIndexBitcodeReader {
   std::unique_ptr<BitstreamReader> StreamFile;
   BitstreamCursor Stream;
 
-  /// \brief Used to indicate whether we are doing lazy parsing of summary data.
-  ///
-  /// If false, the summary section is fully parsed into the index during
-  /// the initial parse. Otherwise, if true, the caller is expected to
-  /// invoke \a readGlobalValueSummary for each summary needed, and the summary
-  /// section is thus parsed lazily.
-  bool IsLazy = false;
-
   /// Used to indicate whether caller only wants to check for the presence
   /// of the global value summary bitcode section. All blocks are skipped,
   /// but the SeenGlobalValSummary boolean is set.
@@ -483,9 +475,9 @@ public:
 
   ModuleSummaryIndexBitcodeReader(
       MemoryBuffer *Buffer, DiagnosticHandlerFunction DiagnosticHandler,
-      bool IsLazy = false, bool CheckGlobalValSummaryPresenceOnly = false);
+      bool CheckGlobalValSummaryPresenceOnly = false);
   ModuleSummaryIndexBitcodeReader(
-      DiagnosticHandlerFunction DiagnosticHandler, bool IsLazy = false,
+      DiagnosticHandlerFunction DiagnosticHandler,
       bool CheckGlobalValSummaryPresenceOnly = false);
   ~ModuleSummaryIndexBitcodeReader() { freeState(); }
 
@@ -5512,14 +5504,14 @@ std::error_code ModuleSummaryIndexBitcod
 
 ModuleSummaryIndexBitcodeReader::ModuleSummaryIndexBitcodeReader(
     MemoryBuffer *Buffer, DiagnosticHandlerFunction DiagnosticHandler,
-    bool IsLazy, bool CheckGlobalValSummaryPresenceOnly)
-    : DiagnosticHandler(DiagnosticHandler), Buffer(Buffer), IsLazy(IsLazy),
+    bool CheckGlobalValSummaryPresenceOnly)
+    : DiagnosticHandler(DiagnosticHandler), Buffer(Buffer),
       CheckGlobalValSummaryPresenceOnly(CheckGlobalValSummaryPresenceOnly) {}
 
 ModuleSummaryIndexBitcodeReader::ModuleSummaryIndexBitcodeReader(
-    DiagnosticHandlerFunction DiagnosticHandler, bool IsLazy,
+    DiagnosticHandlerFunction DiagnosticHandler,
     bool CheckGlobalValSummaryPresenceOnly)
-    : DiagnosticHandler(DiagnosticHandler), Buffer(nullptr), IsLazy(IsLazy),
+    : DiagnosticHandler(DiagnosticHandler), Buffer(nullptr),
       CheckGlobalValSummaryPresenceOnly(CheckGlobalValSummaryPresenceOnly) {}
 
 void ModuleSummaryIndexBitcodeReader::freeState() { Buffer = nullptr; }
@@ -5606,7 +5598,6 @@ std::error_code ModuleSummaryIndexBitcod
         return error("Invalid record");
       unsigned ValueID = Record[0];
       uint64_t FuncOffset = Record[1];
-      assert(!IsLazy && "Lazy summary read only supported for combined index");
       std::unique_ptr<GlobalValueInfo> FuncInfo =
           llvm::make_unique<GlobalValueInfo>(FuncOffset);
       assert(!SourceFileName.empty());
@@ -5650,9 +5641,7 @@ std::error_code ModuleSummaryIndexBitcod
 // Parse just the blocks needed for building the index out of the module.
 // At the end of this routine the module Index is populated with a map
 // from global value name to GlobalValueInfo. The global value info contains
-// either the parsed summary information (when parsing summaries
-// eagerly), or just to the summary record's offset
-// if parsing lazily (IsLazy).
+// the parsed summary information (when parsing summaries eagerly).
 std::error_code ModuleSummaryIndexBitcodeReader::parseModule() {
   if (Stream.EnterSubBlock(bitc::MODULE_BLOCK_ID))
     return error("Invalid record");
@@ -5710,11 +5699,7 @@ std::error_code ModuleSummaryIndexBitcod
           return EC;
         SeenValueSymbolTable = true;
         SeenGlobalValSummary = true;
-        if (IsLazy) {
-          // Lazy parsing of summary info, skip it.
-          if (Stream.SkipBlock())
-            return error("Invalid record");
-        } else if (std::error_code EC = parseEntireSummary())
+        if (std::error_code EC = parseEntireSummary())
           return EC;
         break;
       case bitc::MODULE_STRTAB_BLOCK_ID:
@@ -6347,16 +6332,11 @@ std::string llvm::getBitcodeProducerStri
 }
 
 // Parse the specified bitcode buffer, returning the function info index.
-// If IsLazy is false, parse the entire function summary into
-// the index. Otherwise skip the function summary section, and only create
-// an index object with a map from function name to function summary offset.
-// The index is used to perform lazy function summary reading later.
 ErrorOr<std::unique_ptr<ModuleSummaryIndex>>
 llvm::getModuleSummaryIndex(MemoryBufferRef Buffer,
-                            DiagnosticHandlerFunction DiagnosticHandler,
-                            bool IsLazy) {
+                            DiagnosticHandlerFunction DiagnosticHandler) {
   std::unique_ptr<MemoryBuffer> Buf = MemoryBuffer::getMemBuffer(Buffer, false);
-  ModuleSummaryIndexBitcodeReader R(Buf.get(), DiagnosticHandler, IsLazy);
+  ModuleSummaryIndexBitcodeReader R(Buf.get(), DiagnosticHandler);
 
   auto Index = llvm::make_unique<ModuleSummaryIndex>();
 
@@ -6376,7 +6356,7 @@ llvm::getModuleSummaryIndex(MemoryBuffer
 bool llvm::hasGlobalValueSummary(MemoryBufferRef Buffer,
                                  DiagnosticHandlerFunction DiagnosticHandler) {
   std::unique_ptr<MemoryBuffer> Buf = MemoryBuffer::getMemBuffer(Buffer, false);
-  ModuleSummaryIndexBitcodeReader R(Buf.get(), DiagnosticHandler, false, true);
+  ModuleSummaryIndexBitcodeReader R(Buf.get(), DiagnosticHandler, true);
 
   auto cleanupOnError = [&](std::error_code EC) {
     R.releaseBuffer(); // Never take ownership on error.
@@ -6389,35 +6369,3 @@ bool llvm::hasGlobalValueSummary(MemoryB
   Buf.release(); // The ModuleSummaryIndexBitcodeReader owns it now.
   return R.foundGlobalValSummary();
 }
-
-// This method supports lazy reading of summary data from the combined
-// index during ThinLTO function importing. When reading the combined index
-// file, getModuleSummaryIndex is first invoked with IsLazy=true.
-// Then this method is called for each value considered for importing,
-// to parse the summary information for the given value name into
-// the index.
-std::error_code llvm::readGlobalValueSummary(
-    MemoryBufferRef Buffer, DiagnosticHandlerFunction DiagnosticHandler,
-    StringRef ValueName, std::unique_ptr<ModuleSummaryIndex> Index) {
-  std::unique_ptr<MemoryBuffer> Buf = MemoryBuffer::getMemBuffer(Buffer, false);
-  ModuleSummaryIndexBitcodeReader R(Buf.get(), DiagnosticHandler);
-
-  auto cleanupOnError = [&](std::error_code EC) {
-    R.releaseBuffer(); // Never take ownership on error.
-    return EC;
-  };
-
-  // Lookup the given value name in the GlobalValueMap, which may
-  // contain a list of global value infos in the case of a COMDAT. Walk through
-  // and parse each summary info at the summary offset
-  // recorded when parsing the value symbol table.
-  for (const auto &FI : Index->getGlobalValueInfoList(ValueName)) {
-    size_t SummaryOffset = FI->bitcodeIndex();
-    if (std::error_code EC =
-            R.parseGlobalValueSummary(nullptr, Index.get(), SummaryOffset))
-      return cleanupOnError(EC);
-  }
-
-  Buf.release(); // The ModuleSummaryIndexBitcodeReader owns it now.
-  return std::error_code();
-}

Modified: llvm/trunk/lib/LTO/ThinLTOCodeGenerator.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/LTO/ThinLTOCodeGenerator.cpp?rev=267097&r1=267096&r2=267097&view=diff
==============================================================================
--- llvm/trunk/lib/LTO/ThinLTOCodeGenerator.cpp (original)
+++ llvm/trunk/lib/LTO/ThinLTOCodeGenerator.cpp Thu Apr 21 20:52:00 2016
@@ -547,7 +547,7 @@ std::unique_ptr<ModuleSummaryIndex> Thin
   for (auto &ModuleBuffer : Modules) {
     ErrorOr<std::unique_ptr<object::ModuleSummaryIndexObjectFile>> ObjOrErr =
         object::ModuleSummaryIndexObjectFile::create(ModuleBuffer,
-                                                     diagnosticHandler, false);
+                                                     diagnosticHandler);
     if (std::error_code EC = ObjOrErr.getError()) {
       // FIXME diagnose
       errs() << "error: can't create ModuleSummaryIndexObjectFile for buffer: "

Modified: llvm/trunk/lib/Object/ModuleSummaryIndexObjectFile.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Object/ModuleSummaryIndexObjectFile.cpp?rev=267097&r1=267096&r2=267097&view=diff
==============================================================================
--- llvm/trunk/lib/Object/ModuleSummaryIndexObjectFile.cpp (original)
+++ llvm/trunk/lib/Object/ModuleSummaryIndexObjectFile.cpp Thu Apr 21 20:52:00 2016
@@ -83,8 +83,7 @@ bool ModuleSummaryIndexObjectFile::hasGl
 // module summary/index.
 ErrorOr<std::unique_ptr<ModuleSummaryIndexObjectFile>>
 ModuleSummaryIndexObjectFile::create(
-    MemoryBufferRef Object, DiagnosticHandlerFunction DiagnosticHandler,
-    bool IsLazy) {
+    MemoryBufferRef Object, DiagnosticHandlerFunction DiagnosticHandler) {
   std::unique_ptr<ModuleSummaryIndex> Index;
 
   ErrorOr<MemoryBufferRef> BCOrErr = findBitcodeInMemBuffer(Object);
@@ -92,7 +91,7 @@ ModuleSummaryIndexObjectFile::create(
     return BCOrErr.getError();
 
   ErrorOr<std::unique_ptr<ModuleSummaryIndex>> IOrErr =
-      getModuleSummaryIndex(BCOrErr.get(), DiagnosticHandler, IsLazy);
+      getModuleSummaryIndex(BCOrErr.get(), DiagnosticHandler);
 
   if (std::error_code EC = IOrErr.getError())
     return EC;
@@ -103,23 +102,6 @@ ModuleSummaryIndexObjectFile::create(
                                                          std::move(Index));
 }
 
-// Parse the summary information for value with the
-// given name out of the given buffer. Parsed information is
-// stored on the index object saved in this object.
-std::error_code ModuleSummaryIndexObjectFile::findGlobalValueSummaryInMemBuffer(
-    MemoryBufferRef Object, DiagnosticHandlerFunction DiagnosticHandler,
-    StringRef ValueName) {
-  sys::fs::file_magic Type = sys::fs::identify_magic(Object.getBuffer());
-  switch (Type) {
-  case sys::fs::file_magic::bitcode: {
-    return readGlobalValueSummary(Object, DiagnosticHandler, ValueName,
-                                  std::move(Index));
-  }
-  default:
-    return object_error::invalid_file_type;
-  }
-}
-
 // Parse the module summary index out of an IR file and return the summary
 // index object if found, or nullptr if not.
 ErrorOr<std::unique_ptr<ModuleSummaryIndex>> llvm::getModuleSummaryIndexForFile(




More information about the llvm-commits mailing list