diff options
author | Teresa Johnson <tejohnson@google.com> | 2016-10-28 02:24:59 +0000 |
---|---|---|
committer | Teresa Johnson <tejohnson@google.com> | 2016-10-28 02:24:59 +0000 |
commit | 58fbc916a0a4ad57ec6d3dd1d1a4f0dd7405f69f (patch) | |
tree | 6c24d54562b0745abfad0d5afd9c1ce6d18baa96 | |
parent | 6231a7e4d1e2e004c4a0889353b4155130ec47d8 (diff) | |
download | bcm5719-llvm-58fbc916a0a4ad57ec6d3dd1d1a4f0dd7405f69f.tar.gz bcm5719-llvm-58fbc916a0a4ad57ec6d3dd1d1a4f0dd7405f69f.zip |
[ThinLTO] Rename HasSection to NoRename (NFC)
Summary:
This is in preparation for a change to utilize this flag for symbols
referenced/defined in either inline or module level assembly.
Reviewers: mehdi_amini
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D26048
llvm-svn: 285376
-rw-r--r-- | llvm/include/llvm/IR/ModuleSummaryIndex.h | 18 | ||||
-rw-r--r-- | llvm/lib/Bitcode/Reader/BitcodeReader.cpp | 4 | ||||
-rw-r--r-- | llvm/lib/Bitcode/Writer/BitcodeWriter.cpp | 2 | ||||
-rw-r--r-- | llvm/lib/Transforms/IPO/FunctionImport.cpp | 5 |
4 files changed, 16 insertions, 13 deletions
diff --git a/llvm/include/llvm/IR/ModuleSummaryIndex.h b/llvm/include/llvm/IR/ModuleSummaryIndex.h index 14608d42a1d..1ceb9eb32cb 100644 --- a/llvm/include/llvm/IR/ModuleSummaryIndex.h +++ b/llvm/include/llvm/IR/ModuleSummaryIndex.h @@ -86,7 +86,7 @@ public: /// \brief Sububclass discriminator (for dyn_cast<> et al.) enum SummaryKind { AliasKind, FunctionKind, GlobalVarKind }; - /// Group flags (Linkage, hasSection, isOptSize, etc.) as a bitfield. + /// Group flags (Linkage, noRename, isOptSize, etc.) as a bitfield. struct GVFlags { /// \brief The linkage type of the associated global value. /// @@ -97,20 +97,21 @@ public: /// types based on global summary-based analysis. unsigned Linkage : 4; - /// Indicate if the global value is located in a specific section. - unsigned HasSection : 1; + /// Indicate if the global value cannot be renamed (in a specific section, + /// possibly referenced from inline assembly, etc). + unsigned NoRename : 1; /// Indicate if the function is not viable to inline. unsigned IsNotViableToInline : 1; /// Convenience Constructors - explicit GVFlags(GlobalValue::LinkageTypes Linkage, bool HasSection, + explicit GVFlags(GlobalValue::LinkageTypes Linkage, bool NoRename, bool IsNotViableToInline) - : Linkage(Linkage), HasSection(HasSection), + : Linkage(Linkage), NoRename(NoRename), IsNotViableToInline(IsNotViableToInline) {} GVFlags(const GlobalValue &GV) - : Linkage(GV.getLinkage()), HasSection(GV.hasSection()) { + : Linkage(GV.getLinkage()), NoRename(GV.hasSection()) { IsNotViableToInline = false; if (const auto *F = dyn_cast<Function>(&GV)) // Inliner doesn't handle variadic functions. @@ -189,8 +190,9 @@ public: /// to be referenced from another module. bool needsRenaming() const { return GlobalValue::isLocalLinkage(linkage()); } - /// Return true if this global value is located in a specific section. - bool hasSection() const { return Flags.HasSection; } + /// Return true if this global value cannot be renamed (in a specific section, + /// possibly referenced from inline assembly, etc). + bool noRename() const { return Flags.NoRename; } /// Record a reference from this global value to the global value identified /// by \p RefGUID. diff --git a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp index f2af9164839..f224b046d70 100644 --- a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp +++ b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp @@ -838,9 +838,9 @@ static GlobalValueSummary::GVFlags getDecodedGVSummaryFlags(uint64_t RawFlags, // to getDecodedLinkage() will need to be taken into account here as above. auto Linkage = GlobalValue::LinkageTypes(RawFlags & 0xF); // 4 bits RawFlags = RawFlags >> 4; - bool HasSection = RawFlags & 0x1; + bool NoRename = RawFlags & 0x1; bool IsNotViableToInline = RawFlags & 0x2; - return GlobalValueSummary::GVFlags(Linkage, HasSection, IsNotViableToInline); + return GlobalValueSummary::GVFlags(Linkage, NoRename, IsNotViableToInline); } static GlobalValue::VisibilityTypes getDecodedVisibility(unsigned Val) { diff --git a/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp b/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp index 6bd1bf1b8cc..2972688992f 100644 --- a/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp +++ b/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp @@ -990,7 +990,7 @@ static unsigned getEncodedLinkage(const GlobalValue &GV) { static uint64_t getEncodedGVSummaryFlags(GlobalValueSummary::GVFlags Flags) { uint64_t RawFlags = 0; - RawFlags |= Flags.HasSection; // bool + RawFlags |= Flags.NoRename; // bool RawFlags |= (Flags.IsNotViableToInline << 1); // Linkage don't need to be remapped at that time for the summary. Any future // change to the getEncodedLinkage() function will need to be taken into diff --git a/llvm/lib/Transforms/IPO/FunctionImport.cpp b/llvm/lib/Transforms/IPO/FunctionImport.cpp index 29c54dc9f9c..c9f4ea06a90 100644 --- a/llvm/lib/Transforms/IPO/FunctionImport.cpp +++ b/llvm/lib/Transforms/IPO/FunctionImport.cpp @@ -111,8 +111,9 @@ static bool canBeExternallyReferenced(const GlobalValueSummary &Summary) { if (!Summary.needsRenaming()) return true; - if (Summary.hasSection()) - // Can't rename a global that needs renaming if has a section. + if (Summary.noRename()) + // Can't externally reference a global that needs renaming if has a section + // or is referenced from inline assembly, for example. return false; return true; |