[llvm] r267097 - [ThinLTO] Remove unused/incomplete lazy summary reading support (NFC)
Teresa Johnson via llvm-commits
llvm-commits at lists.llvm.org
Wed May 4 16:25:48 PDT 2016
On Wed, May 4, 2016 at 4:18 PM, Justin Bogner <mail at justinbogner.com> wrote:
> Teresa Johnson via llvm-commits <llvm-commits at lists.llvm.org> writes:
> > 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.
>
> This leaves ModuleSummaryIndexBitcodeReader::parseGlobalValueSummary
> unused. Should it be removed too?
>
Yes, missed that one. Will remove it too.
Thanks,
Teresa
>
> > (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(
> >
> >
> > _______________________________________________
> > llvm-commits mailing list
> > llvm-commits at lists.llvm.org
> > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
--
Teresa Johnson | Software Engineer | tejohnson at google.com | 408-460-2413
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160504/ddaa642d/attachment.html>
More information about the llvm-commits
mailing list