const unsigned Linkonce = 1 << 7; ///< Section is linkonce
const unsigned TypeFlags = 0xFF;
// Some gap for future flags
+
+ /// Named - True if this section should be printed with ".section <name>",
+ /// false if the section name is something like ".const".
const unsigned Named = 1 << 23; ///< Section is named
const unsigned EntitySize = 0xFF << 24; ///< Entity size for mergeable stuff
std::string Name;
unsigned Flags;
- explicit Section(unsigned F = SectionFlags::Invalid):Flags(F) { }
+ explicit Section(unsigned F = SectionFlags::Invalid) : Flags(F) { }
public:
- bool isNamed() const { return Flags & SectionFlags::Named; }
unsigned getEntitySize() const { return (Flags >> 24) & 0xFF; }
- const std::string& getName() const { return Name; }
+ const std::string &getName() const { return Name; }
unsigned getFlags() const { return Flags; }
bool hasFlag(unsigned F) const { return (Flags & F) != 0; }
// If section is named we need to switch into it via special '.section'
// directive and also append funky flags. Otherwise - section name is just
// some magic assembler directive.
- if (NS->isNamed())
+ if (NS->hasFlag(SectionFlags::Named))
O << TAI->getSwitchToSectionDirective()
<< CurrentSection
<< TAI->getSectionFlags(NS->getFlags());