forked from OSchip/llvm-project
expose SectionKindForGlobal to curious clients, named as
getKindForGlobal. llvm-svn: 78156
This commit is contained in:
parent
d3a44b52c6
commit
cbc7b26542
|
@ -141,12 +141,26 @@ public:
|
||||||
return K;
|
return K;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// getKindForGlobal - Classify the specified global variable into a set of
|
||||||
|
/// target independent categories embodied in SectionKind.
|
||||||
|
static SectionKind getKindForGlobal(const GlobalValue *GV,
|
||||||
|
const TargetMachine &TM);
|
||||||
|
|
||||||
|
/// SectionForGlobal - This method computes the appropriate section to emit
|
||||||
|
/// the specified global variable or function definition. This should not
|
||||||
|
/// be passed external (or available externally) globals.
|
||||||
|
const MCSection *SectionForGlobal(const GlobalValue *GV,
|
||||||
|
SectionKind Kind, Mangler *Mang,
|
||||||
|
const TargetMachine &TM) const;
|
||||||
|
|
||||||
/// SectionForGlobal - This method computes the appropriate section to emit
|
/// SectionForGlobal - This method computes the appropriate section to emit
|
||||||
/// the specified global variable or function definition. This should not
|
/// the specified global variable or function definition. This should not
|
||||||
/// be passed external (or available externally) globals.
|
/// be passed external (or available externally) globals.
|
||||||
const MCSection *SectionForGlobal(const GlobalValue *GV,
|
const MCSection *SectionForGlobal(const GlobalValue *GV,
|
||||||
Mangler *Mang,
|
Mangler *Mang,
|
||||||
const TargetMachine &TM) const;
|
const TargetMachine &TM) const {
|
||||||
|
return SectionForGlobal(GV, getKindForGlobal(GV, TM), Mang, TM);
|
||||||
|
}
|
||||||
|
|
||||||
/// getSpecialCasedSectionGlobals - Allow the target to completely override
|
/// getSpecialCasedSectionGlobals - Allow the target to completely override
|
||||||
/// section assignment of a global.
|
/// section assignment of a global.
|
||||||
|
|
|
@ -110,13 +110,16 @@ static bool IsNullTerminatedString(const Constant *C) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// SectionKindForGlobal - This is a top-level target-independent classifier for
|
/// getKindForGlobal - This is a top-level target-independent classifier for
|
||||||
/// a global variable. Given an global variable and information from TM, it
|
/// a global variable. Given an global variable and information from TM, it
|
||||||
/// classifies the global in a variety of ways that make various target
|
/// classifies the global in a variety of ways that make various target
|
||||||
/// implementations simpler. The target implementation is free to ignore this
|
/// implementations simpler. The target implementation is free to ignore this
|
||||||
/// extra info of course.
|
/// extra info of course.
|
||||||
static SectionKind SectionKindForGlobal(const GlobalValue *GV,
|
SectionKind TargetLoweringObjectFile::getKindForGlobal(const GlobalValue *GV,
|
||||||
const TargetMachine &TM) {
|
const TargetMachine &TM){
|
||||||
|
assert(!GV->isDeclaration() && !GV->hasAvailableExternallyLinkage() &&
|
||||||
|
"Can only be used for global definitions");
|
||||||
|
|
||||||
Reloc::Model ReloModel = TM.getRelocationModel();
|
Reloc::Model ReloModel = TM.getRelocationModel();
|
||||||
|
|
||||||
// Early exit - functions should be always in text sections.
|
// Early exit - functions should be always in text sections.
|
||||||
|
@ -227,13 +230,8 @@ static SectionKind SectionKindForGlobal(const GlobalValue *GV,
|
||||||
/// the specified global variable or function definition. This should not
|
/// the specified global variable or function definition. This should not
|
||||||
/// be passed external (or available externally) globals.
|
/// be passed external (or available externally) globals.
|
||||||
const MCSection *TargetLoweringObjectFile::
|
const MCSection *TargetLoweringObjectFile::
|
||||||
SectionForGlobal(const GlobalValue *GV, Mangler *Mang,
|
SectionForGlobal(const GlobalValue *GV, SectionKind Kind, Mangler *Mang,
|
||||||
const TargetMachine &TM) const {
|
const TargetMachine &TM) const {
|
||||||
assert(!GV->isDeclaration() && !GV->hasAvailableExternallyLinkage() &&
|
|
||||||
"Can only be used for global definitions");
|
|
||||||
|
|
||||||
SectionKind Kind = SectionKindForGlobal(GV, TM);
|
|
||||||
|
|
||||||
// Select section name.
|
// Select section name.
|
||||||
if (GV->hasSection()) {
|
if (GV->hasSection()) {
|
||||||
// If the target has special section hacks for specifically named globals,
|
// If the target has special section hacks for specifically named globals,
|
||||||
|
@ -254,6 +252,7 @@ SectionForGlobal(const GlobalValue *GV, Mangler *Mang,
|
||||||
return SelectSectionForGlobal(GV, Kind, Mang, TM);
|
return SelectSectionForGlobal(GV, Kind, Mang, TM);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Lame default implementation. Calculate the section name for global.
|
// Lame default implementation. Calculate the section name for global.
|
||||||
const MCSection *
|
const MCSection *
|
||||||
TargetLoweringObjectFile::SelectSectionForGlobal(const GlobalValue *GV,
|
TargetLoweringObjectFile::SelectSectionForGlobal(const GlobalValue *GV,
|
||||||
|
|
Loading…
Reference in New Issue