From: Teresa Johnson Date: Fri, 28 Oct 2016 02:24:59 +0000 (+0000) Subject: [ThinLTO] Rename HasSection to NoRename (NFC) X-Git-Tag: llvmorg-4.0.0-rc1~6063 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=58fbc916a0a4ad57ec6d3dd1d1a4f0dd7405f69f;p=platform%2Fupstream%2Fllvm.git [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 --- diff --git a/llvm/include/llvm/IR/ModuleSummaryIndex.h b/llvm/include/llvm/IR/ModuleSummaryIndex.h index 14608d4..1ceb9eb 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(&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 f2af916..f224b04 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 6bd1bf1..2972688 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 29c54dc..c9f4ea0 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;