Go to the documentation of this file.
13 #ifndef LLVM_MC_MCSECTION_H
14 #define LLVM_MC_MCSECTION_H
83 unsigned BundleLockNestingDepth = 0;
87 bool BundleGroupBeforeFirstInst : 1;
90 bool HasInstructions : 1;
92 bool IsRegistered : 1;
103 struct PendingLabel {
106 PendingLabel(
MCSymbol* Sym,
unsigned Subsection = 0)
107 : Sym(Sym), Subsection(Subsection) {}
145 if (Alignment < MinAlignment)
146 Alignment = MinAlignment;
160 return BundleGroupBeforeFirstInst;
163 BundleGroupBeforeFirstInst = IsFirst;
179 return &MCSection::Fragments;
197 const MCExpr *Subsection)
const = 0;
215 unsigned Subsection = 0);
224 #endif // LLVM_MC_MCSECTION_H
bool isBundleLocked() const
void setIsRegistered(bool Value)
This is an optimization pass for GlobalISel generic memory operations.
MCSymbol - Instances of this class represent a symbol name in the MC file, and MCSymbols are created ...
virtual void printSwitchToSection(const MCAsmInfo &MAI, const Triple &T, raw_ostream &OS, const MCExpr *Subsection) const =0
void setBundleLockState(BundleLockStateType NewState)
Context object for machine code objects.
void addPendingLabel(MCSymbol *label, unsigned Subsection=0)
Add a pending label for the requested subsection.
This class is intended to be used as a base class for asm properties and features specific to the tar...
MCDummyFragment & getDummyFragment()
MCSymbol * getBeginSymbol()
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.
unsigned getLayoutOrder() const
static FragmentListType MCSection::* getSublistAccess(MCFragment *)
Support for MCFragment::getNextNode().
Triple - Helper class for working with autoconf configuration names.
base_list_type::const_reverse_iterator const_reverse_iterator
BundleLockStateType getBundleLockState() const
MCSection::iterator getSubsectionInsertionPoint(unsigned Subsection)
MCSection(SectionVariant V, StringRef Name, SectionKind K, MCSymbol *Begin)
void setBundleGroupBeforeFirstInst(bool IsFirst)
MCSection::FragmentListType & getFragmentList()
void setLayoutOrder(unsigned Value)
This class implements an extremely fast bulk output stream that can only output to a stream.
const_iterator end() const
const MCSection::FragmentListType & getFragmentList() const
This struct is a compact representation of a valid (non-zero power of two) alignment.
SectionVariant getVariant() const
MCSymbol * getEndSymbol(MCContext &Ctx)
base_list_type::reverse_iterator reverse_iterator
base_list_type::iterator iterator
MCSection & operator=(const MCSection &)=delete
Use delete by default for iplist and ilist.
static constexpr unsigned NonUniqueID
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
virtual StringRef getVirtualSectionKind() const
BundleLockStateType
Express the state of bundle locked groups while emitting code.
void setHasInstructions(bool Value)
const MCDummyFragment & getDummyFragment() const
StringRef - Represent a constant reference to a string, i.e.
virtual bool isVirtualSection() const =0
Check whether this section is "virtual", that is has no actual object file contents.
Instances of this class represent a uniqued identifier for a section in the current translation unit.
StringRef getName() const
void setAlignment(Align Value)
bool isBundleGroupBeforeFirstInst() const
SectionKind - This is a simple POD value that classifies the properties of a section.
virtual bool useCodeAlign() const =0
Return true if a .align directive should use "optimized nops" to fill instead of 0s.
bool hasInstructions() const
Iterator for intrusive lists based on ilist_node.
void flushPendingLabels()
Associate all pending labels with empty data fragments.
const MCSymbol * getBeginSymbol() const
void setBeginSymbol(MCSymbol *Sym)
bool isRegistered() const
SectionKind getKind() const
const_iterator begin() const
static void deleteNode(NodeTy *V)
base_list_type::const_iterator const_iterator
unsigned getOrdinal() const
LLVM Value Representation.
Base class for the full range of assembler expressions which are needed for parsing.
void ensureMinAlignment(Align MinAlignment)
Makes sure that Alignment is at least MinAlignment.
void setOrdinal(unsigned Value)