13#ifndef LLVM_MC_MCSECTION_H
14#define LLVM_MC_MCSECTION_H
77 unsigned LayoutOrder = 0;
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);
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.
Base class for the full range of assembler expressions which are needed for parsing.
Instances of this class represent a uniqued identifier for a section in the current translation unit.
void setAlignment(Align Value)
void addPendingLabel(MCSymbol *label, unsigned Subsection=0)
Add a pending label for the requested subsection.
const MCDummyFragment & getDummyFragment() const
unsigned getOrdinal() const
const_iterator end() const
void setLayoutOrder(unsigned Value)
virtual StringRef getVirtualSectionKind() const
void ensureMinAlignment(Align MinAlignment)
Makes sure that Alignment is at least MinAlignment.
unsigned getLayoutOrder() const
FragmentListType::reverse_iterator reverse_iterator
static FragmentListType MCSection::* getSublistAccess(MCFragment *)
Support for MCFragment::getNextNode().
void flushPendingLabels()
Associate all pending labels with empty data fragments.
SectionVariant getVariant() const
MCSection::FragmentListType & getFragmentList()
MCSymbol * getEndSymbol(MCContext &Ctx)
const MCSection::FragmentListType & getFragmentList() const
void setBundleLockState(BundleLockStateType NewState)
static constexpr unsigned NonUniqueID
const MCSymbol * getBeginSymbol() const
bool hasInstructions() const
bool isRegistered() const
void setHasInstructions(bool Value)
FragmentListType::const_reverse_iterator const_reverse_iterator
void setBeginSymbol(MCSymbol *Sym)
MCSection(const MCSection &)=delete
FragmentListType::const_iterator const_iterator
virtual bool isVirtualSection() const =0
Check whether this section is "virtual", that is has no actual object file contents.
bool isBundleGroupBeforeFirstInst() const
MCSection::iterator getSubsectionInsertionPoint(unsigned Subsection)
void setOrdinal(unsigned Value)
SectionKind getKind() const
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.
MCSymbol * getBeginSymbol()
BundleLockStateType getBundleLockState() const
const_iterator begin() const
virtual void printSwitchToSection(const MCAsmInfo &MAI, const Triple &T, raw_ostream &OS, const MCExpr *Subsection) const =0
FragmentListType::iterator iterator
void setBundleGroupBeforeFirstInst(bool IsFirst)
void setIsRegistered(bool Value)
MCSymbol - Instances of this class represent a symbol name in the MC file, and MCSymbols are created ...
SectionKind - This is a simple POD value that classifies the properties of a section.
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.
base_list_type::const_reverse_iterator const_reverse_iterator
base_list_type::reverse_iterator reverse_iterator
base_list_type::const_iterator const_iterator
base_list_type::iterator iterator
This class implements an extremely fast bulk output stream that can only output to a stream.
This file defines classes to implement an intrusive doubly linked list class (i.e.
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.
Use delete by default for iplist and ilist.
static void deleteNode(NodeTy *V)