diff options
author | Teresa Johnson <tejohnson@google.com> | 2016-02-06 16:07:35 +0000 |
---|---|---|
committer | Teresa Johnson <tejohnson@google.com> | 2016-02-06 16:07:35 +0000 |
commit | 5e22e4461d23130484dfdc83d2646f1a92d8e74d (patch) | |
tree | c325e41e05c24cfba8d985fef7e09f3d143ce6bb /llvm/lib/Bitcode/Reader/BitcodeReader.cpp | |
parent | 63b1ecab7ddc4d766263415c70f0794cedc2c11f (diff) | |
download | bcm5719-llvm-5e22e4461d23130484dfdc83d2646f1a92d8e74d.tar.gz bcm5719-llvm-5e22e4461d23130484dfdc83d2646f1a92d8e74d.zip |
[ThinLTO] Include linkage type in function summary
Summary:
Adds the linkage type to both the per-module and combined function
summaries, which subsumes the current islocal bit. This will eventually
be used to optimized linkage types based on global summary-based
analysis.
Reviewers: joker.eph
Subscribers: joker.eph, davidxl, llvm-commits
Differential Revision: http://reviews.llvm.org/D16943
llvm-svn: 259993
Diffstat (limited to 'llvm/lib/Bitcode/Reader/BitcodeReader.cpp')
-rw-r--r-- | llvm/lib/Bitcode/Reader/BitcodeReader.cpp | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp index 36650dbe05a..176d836bf13 100644 --- a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp +++ b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp @@ -5592,14 +5592,14 @@ std::error_code FunctionIndexBitcodeReader::parseEntireSummary() { switch (Stream.readRecord(Entry.ID, Record)) { default: // Default behavior: ignore. break; - // FS_PERMODULE_ENTRY: [valueid, islocal, instcount] + // FS_PERMODULE_ENTRY: [valueid, linkage, instcount] case bitc::FS_CODE_PERMODULE_ENTRY: { unsigned ValueID = Record[0]; - bool IsLocal = Record[1]; + uint64_t RawLinkage = Record[1]; unsigned InstCount = Record[2]; std::unique_ptr<FunctionSummary> FS = llvm::make_unique<FunctionSummary>(InstCount); - FS->setLocalFunction(IsLocal); + FS->setFunctionLinkage(getDecodedLinkage(RawLinkage)); // The module path string ref set in the summary must be owned by the // index's module string table. Since we don't have a module path // string table section in the per-module index, we create a single @@ -5609,12 +5609,14 @@ std::error_code FunctionIndexBitcodeReader::parseEntireSummary() { TheIndex->addModulePath(Buffer->getBufferIdentifier(), 0)); SummaryMap[ValueID] = std::move(FS); } - // FS_COMBINED_ENTRY: [modid, instcount] + // FS_COMBINED_ENTRY: [modid, linkage, instcount] case bitc::FS_CODE_COMBINED_ENTRY: { uint64_t ModuleId = Record[0]; - unsigned InstCount = Record[1]; + uint64_t RawLinkage = Record[1]; + unsigned InstCount = Record[2]; std::unique_ptr<FunctionSummary> FS = llvm::make_unique<FunctionSummary>(InstCount); + FS->setFunctionLinkage(getDecodedLinkage(RawLinkage)); FS->setModulePath(ModuleIdMap[ModuleId]); SummaryMap[CurRecordBit] = std::move(FS); } |