14 #ifndef LLVM_MC_MCSECTION_H
15 #define LLVM_MC_MCSECTION_H
61 void operator=(
const MCSection &) =
delete;
66 unsigned Alignment = 1;
76 unsigned BundleLockNestingDepth = 0;
80 unsigned BundleGroupBeforeFirstInst : 1;
83 unsigned HasInstructions : 1;
85 unsigned IsRegistered : 1;
131 return BundleGroupBeforeFirstInst;
134 BundleGroupBeforeFirstInst = IsFirst;
150 return &MCSection::Fragments;
173 const MCExpr *Subsection)
const = 0;
Instances of this class represent a uniqued identifier for a section in the current translation unit...
bool hasInstructions() const
MCSymbol - Instances of this class represent a symbol name in the MC file, and MCSymbols are created ...
SectionVariant getVariant() const
void setLayoutOrder(unsigned Value)
const MCDummyFragment & getDummyFragment() const
void setAlignment(unsigned Value)
void setBundleLockState(BundleLockStateType NewState)
FragmentListType::const_iterator const_iterator
unsigned getAlignment() const
BundleLockStateType
Express the state of bundle locked groups while emitting code.
void setHasInstructions(bool Value)
FragmentListType::const_reverse_iterator const_reverse_iterator
const MCSection::FragmentListType & getFragmentList() const
Base class for the full range of assembler expressions which are needed for parsing.
const MCSymbol * getBeginSymbol() const
MCSymbol * getEndSymbol(MCContext &Ctx)
Context object for machine code objects.
reverse_iterator rbegin()
const_reverse_iterator rend() const
const_iterator begin() const
This class is intended to be used as a base class for asm properties and features specific to the tar...
Use delete by default for iplist and ilist.
FragmentListType::iterator iterator
FragmentListType::reverse_iterator reverse_iterator
SectionKind - This is a simple POD value that classifies the properties of a section.
unsigned getOrdinal() const
void setIsRegistered(bool Value)
virtual void PrintSwitchToSection(const MCAsmInfo &MAI, raw_ostream &OS, const MCExpr *Subsection) const =0
bool isRegistered() const
virtual bool UseCodeAlign() const =0
Return true if a .align directive should use "optimized nops" to fill instead of 0s.
void setOrdinal(unsigned Value)
Iterator for intrusive lists based on ilist_node.
SectionKind getKind() const
virtual bool isVirtualSection() const =0
Check whether this section is "virtual", that is has no actual object file contents.
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small...
MCSymbol * getBeginSymbol()
static void deleteNode(NodeTy *V)
static FragmentListType MCSection::* getSublistAccess(MCFragment *)
Support for MCFragment::getNextNode().
unsigned getLayoutOrder() const
bool isBundleGroupBeforeFirstInst() const
const_reverse_iterator rbegin() const
BundleLockStateType getBundleLockState() const
void setBundleGroupBeforeFirstInst(bool IsFirst)
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
const_iterator end() const
iplist< MCFragment > FragmentListType
MCSection::iterator getSubsectionInsertionPoint(unsigned Subsection)
LLVM Value Representation.
bool isBundleLocked() const
MCDummyFragment & getDummyFragment()
This class implements an extremely fast bulk output stream that can only output to a stream...
MCSection::FragmentListType & getFragmentList()
void setBeginSymbol(MCSymbol *Sym)