13#ifndef LLVM_MC_MCSECTION_H
14#define LLVM_MC_MCSECTION_H
29class MCObjectStreamer;
90 unsigned LayoutOrder = 0;
96 unsigned BundleLockNestingDepth = 0;
100 bool BundleGroupBeforeFirstInst : 1;
103 bool HasInstructions : 1;
107 bool IsRegistered : 1;
121 struct PendingLabel {
124 PendingLabel(
MCSymbol*
Sym,
unsigned Subsection = 0)
125 :
Sym(
Sym), Subsection(Subsection) {}
127 SmallVector<PendingLabel, 2> PendingLabels;
163 if (Alignment < MinAlignment)
164 Alignment = MinAlignment;
178 return BundleGroupBeforeFirstInst;
181 BundleGroupBeforeFirstInst = IsFirst;
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
This file defines the SmallVector class.
This class is intended to be used as a base class for asm properties and features specific to the tar...
Context object for machine code objects.
Instances of this class represent a uniqued identifier for a section in the current translation unit.
void setAlignment(Align Value)
const MCDummyFragment & getDummyFragment() const
unsigned getOrdinal() const
void setLayoutOrder(unsigned Value)
virtual StringRef getVirtualSectionKind() const
void ensureMinAlignment(Align MinAlignment)
Makes sure that Alignment is at least MinAlignment.
unsigned getLayoutOrder() const
SectionVariant getVariant() const
MCSymbol * getEndSymbol(MCContext &Ctx)
void setBundleLockState(BundleLockStateType NewState)
static constexpr unsigned NonUniqueID
const MCSymbol * getBeginSymbol() const
bool hasInstructions() const
bool isRegistered() const
void setHasInstructions(bool Value)
void setBeginSymbol(MCSymbol *Sym)
MCSection(const MCSection &)=delete
bool isBundleGroupBeforeFirstInst() const
void setOrdinal(unsigned Value)
bool isVirtualSection() const
Check whether this section is "virtual", that is has no actual object file contents.
virtual bool useCodeAlign() const =0
Return true if a .align directive should use "optimized nops" to fill instead of 0s.
bool isBundleLocked() const
MCDummyFragment & getDummyFragment()
MCSection & operator=(const MCSection &)=delete
StringRef getName() const
BundleLockStateType
Express the state of bundle locked groups while emitting code.
FragList * curFragList() const
MCSymbol * getBeginSymbol()
BundleLockStateType getBundleLockState() const
void setHasLayout(bool Value)
void setBundleGroupBeforeFirstInst(bool IsFirst)
void setIsRegistered(bool Value)
virtual void printSwitchToSection(const MCAsmInfo &MAI, const Triple &T, raw_ostream &OS, uint32_t Subsection) const =0
void addPendingLabel(MCSymbol *label, unsigned Subsection=0)
Add a pending label for the requested subsection.
MCSymbol - Instances of this class represent a symbol name in the MC file, and MCSymbols are created ...
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.
StringRef - Represent a constant reference to a string, i.e.
Triple - Helper class for working with autoconf configuration names.
LLVM Value Representation.
This class implements an extremely fast bulk output stream that can only output to a stream.
This is an optimization pass for GlobalISel generic memory operations.
This struct is a compact representation of a valid (non-zero power of two) alignment.
MCFragment & operator*() const
bool operator==(const iterator &O) const
bool operator!=(const iterator &O) const