virtual SectionKind::Kind
SectionKindForGlobal(const GlobalValue *GV) const;
- /// SectionFlagsForGlobal - This hook allows the target to select proper
- /// section flags either for given global or for section.
-// FIXME: Eliminate this.
- virtual unsigned
- SectionFlagsForGlobal(const GlobalValue *GV = NULL,
- const char* name = NULL) const;
-
/// SectionForGlobal - This hooks returns proper section name for given
/// global with all necessary flags and marks.
// FIXME: Eliminate this.
return false;
}
-unsigned
-TargetAsmInfo::SectionFlagsForGlobal(const GlobalValue *GV,
- const char *Name) const {
+static unsigned SectionFlagsForGlobal(const GlobalValue *GV,
+ SectionKind::Kind Kind,
+ const char *Name = 0) {
unsigned Flags = SectionFlags::None;
// Decode flags from global itself.
- SectionKind::Kind Kind = SectionKindForGlobal(GV);
switch (Kind) {
case SectionKind::Text:
Flags |= SectionFlags::Code;
// Select section name
if (GV->hasSection()) {
// Honour section already set, if any.
- unsigned Flags = SectionFlagsForGlobal(GV, GV->getSection().c_str());
+ unsigned Flags = SectionFlagsForGlobal(GV, SectionKindForGlobal(GV),
+ GV->getSection().c_str());
return getNamedSection(GV->getSection().c_str(), Flags);
}
getSectionPrefixForUniqueGlobal(SectionKindForGlobal(GV))) {
// FIXME: Use mangler interface (PR4584).
std::string Name = Prefix+GV->getNameStr();
- unsigned Flags = SectionFlagsForGlobal(GV);
+ unsigned Flags = SectionFlagsForGlobal(GV, SectionKindForGlobal(GV));
return getNamedSection(Name.c_str(), Flags);
}
}