LLVM 17.0.0git
|
Interface implemented by fragments that contain encoded instructions and/or data. More...
#include "llvm/MC/MCFragment.h"
Public Member Functions | |
bool | alignToBundleEnd () const |
Should this fragment be placed at the end of an aligned bundle? | |
void | setAlignToBundleEnd (bool V) |
uint8_t | getBundlePadding () const |
Get the padding size that must be inserted before this fragment. | |
void | setBundlePadding (uint8_t N) |
Set the padding size for this fragment. | |
const MCSubtargetInfo * | getSubtargetInfo () const |
Retrieve the MCSubTargetInfo in effect when the instruction was encoded. | |
void | setHasInstructions (const MCSubtargetInfo &STI) |
Record that the fragment contains instructions with the MCSubtargetInfo in effect when the instruction was encoded. | |
![]() | |
MCFragment ()=delete | |
MCFragment (const MCFragment &)=delete | |
MCFragment & | operator= (const MCFragment &)=delete |
void | destroy () |
Destroys the current fragment. | |
FragmentType | getKind () const |
MCSection * | getParent () const |
void | setParent (MCSection *Value) |
const MCSymbol * | getAtom () const |
void | setAtom (const MCSymbol *Value) |
unsigned | getLayoutOrder () const |
void | setLayoutOrder (unsigned Value) |
bool | hasInstructions () const |
Does this fragment have instructions emitted into it? By default this is false, but specific fragment types may set it to true. | |
void | dump () const |
void | setSubsectionNumber (unsigned Value) |
unsigned | getSubsectionNumber () const |
![]() | |
MCFragment * | getPrevNode () |
const MCFragment * | getPrevNode () const |
Get the previous node, or nullptr for the list head. | |
MCFragment * | getNextNode () |
Get the next node, or nullptr for the list tail. | |
const MCFragment * | getNextNode () const |
Get the next node, or nullptr for the list tail. | |
![]() | |
self_iterator | getIterator () |
const_self_iterator | getIterator () const |
reverse_self_iterator | getReverseIterator () |
const_reverse_self_iterator | getReverseIterator () const |
bool | isSentinel () const |
Check whether this is the sentinel node. | |
Static Public Member Functions | |
static bool | classof (const MCFragment *F) |
Protected Member Functions | |
MCEncodedFragment (MCFragment::FragmentType FType, bool HasInstructions, MCSection *Sec) | |
![]() | |
MCFragment (FragmentType Kind, bool HasInstructions, MCSection *Parent=nullptr) | |
![]() | |
ilist_node_with_parent ()=default | |
![]() | |
ilist_node_impl ()=default | |
Protected Attributes | |
const MCSubtargetInfo * | STI = nullptr |
The MCSubtargetInfo in effect when the instruction was encoded. | |
![]() | |
bool | HasInstructions |
Additional Inherited Members | |
![]() | |
enum | FragmentType : uint8_t { FT_Align , FT_Data , FT_CompactEncodedInst , FT_Fill , FT_Nops , FT_Relaxable , FT_Org , FT_Dwarf , FT_DwarfFrame , FT_LEB , FT_BoundaryAlign , FT_SymbolId , FT_CVInlineLines , FT_CVDefRange , FT_PseudoProbe , FT_Dummy } |
![]() | |
using | self_iterator = ilist_iterator< ilist_detail::compute_node_options< T, Options... >::type, false, false > |
using | const_self_iterator = ilist_iterator< ilist_detail::compute_node_options< T, Options... >::type, false, true > |
using | reverse_self_iterator = ilist_iterator< ilist_detail::compute_node_options< T, Options... >::type, true, false > |
using | const_reverse_self_iterator = ilist_iterator< ilist_detail::compute_node_options< T, Options... >::type, true, true > |
Interface implemented by fragments that contain encoded instructions and/or data.
Definition at line 124 of file MCFragment.h.
|
inlineprotected |
Definition at line 131 of file MCFragment.h.
|
inline |
Should this fragment be placed at the end of an aligned bundle?
Definition at line 156 of file MCFragment.h.
Referenced by llvm::MCAssembler::writeFragmentPadding().
|
inlinestatic |
Definition at line 140 of file MCFragment.h.
References F, llvm::MCFragment::FT_CompactEncodedInst, llvm::MCFragment::FT_Data, llvm::MCFragment::FT_Dwarf, llvm::MCFragment::FT_DwarfFrame, llvm::MCFragment::FT_PseudoProbe, and llvm::MCFragment::FT_Relaxable.
|
inline |
Get the padding size that must be inserted before this fragment.
Used for bundling. By default, no padding is inserted. Note that padding size is restricted to 8 bits. This is an optimization to reduce the amount of space used for each fragment. In practice, larger padding should never be required.
Definition at line 164 of file MCFragment.h.
Referenced by llvm::MCAssembler::writeFragmentPadding().
|
inline |
Retrieve the MCSubTargetInfo in effect when the instruction was encoded.
Guaranteed to be non-null if hasInstructions() == true
Definition at line 172 of file MCFragment.h.
References STI.
Referenced by llvm::MCAssembler::layout(), and llvm::MCAssembler::writeFragmentPadding().
|
inline |
Definition at line 157 of file MCFragment.h.
Referenced by llvm::MCELFStreamer::emitBundleUnlock().
|
inline |
Set the padding size for this fragment.
By default it's a no-op, and only some fragments have a meaningful implementation.
Definition at line 168 of file MCFragment.h.
References N.
Referenced by llvm::MCAsmLayout::layoutFragment().
|
inline |
Record that the fragment contains instructions with the MCSubtargetInfo in effect when the instruction was encoded.
Definition at line 176 of file MCFragment.h.
References llvm::MCFragment::HasInstructions, and STI.
|
protected |
The MCSubtargetInfo in effect when the instruction was encoded.
It must be non-null for instructions.
Definition at line 137 of file MCFragment.h.
Referenced by getSubtargetInfo(), llvm::MCRelaxableFragment::MCRelaxableFragment(), and setHasInstructions().