mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-03-04 18:38:37 +00:00
[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
This commit is contained in:
parent
9bc7d55eeb
commit
44b461069e
@ -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.
|
||||
|
@ -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) {
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user