LLVM  8.0.1
Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
llvm::MCEncodedFragment Class Reference

Interface implemented by fragments that contain encoded instructions and/or data. More...

#include "llvm/MC/MCFragment.h"

Inheritance diagram for llvm::MCEncodedFragment:
Inheritance graph
[legend]
Collaboration diagram for llvm::MCEncodedFragment:
Collaboration graph
[legend]

Public Member Functions

bool alignToBundleEnd () const
 Should this fragment be placed at the end of an aligned bundle? More...
 
void setAlignToBundleEnd (bool V)
 
uint8_t getBundlePadding () const
 Get the padding size that must be inserted before this fragment. More...
 
void setBundlePadding (uint8_t N)
 Set the padding size for this fragment. More...
 
const MCSubtargetInfogetSubtargetInfo () const
 Retrieve the MCSubTargetInfo in effect when the instruction was encoded. More...
 
void setHasInstructions (const MCSubtargetInfo &STI)
 Record that the fragment contains instructions with the MCSubtargetInfo in effect when the instruction was encoded. More...
 
- Public Member Functions inherited from llvm::MCFragment
 MCFragment ()=delete
 
 MCFragment (const MCFragment &)=delete
 
MCFragmentoperator= (const MCFragment &)=delete
 
void destroy ()
 Destroys the current fragment. More...
 
FragmentType getKind () const
 
MCSectiongetParent () const
 
void setParent (MCSection *Value)
 
const MCSymbolgetAtom () 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. More...
 
bool isDummy () const
 Return true if given frgment has FT_Dummy type. More...
 
void dump () const
 
- Public Member Functions inherited from llvm::ilist_node_with_parent< MCFragment, MCSection >
MCFragmentgetPrevNode ()
 
const MCFragmentgetPrevNode () const
 Get the previous node, or nullptr for the list head. More...
 
MCFragmentgetNextNode ()
 Get the next node, or nullptr for the list tail. More...
 
const MCFragmentgetNextNode () const
 Get the next node, or nullptr for the list tail. More...
 
- Public Member Functions inherited from llvm::ilist_node_impl< ilist_detail::compute_node_options< MCFragment, Options... >::type >
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. More...
 

Static Public Member Functions

static bool classof (const MCFragment *F)
 

Protected Member Functions

 MCEncodedFragment (MCFragment::FragmentType FType, bool HasInstructions, MCSection *Sec)
 
- Protected Member Functions inherited from llvm::MCFragment
 MCFragment (FragmentType Kind, bool HasInstructions, MCSection *Parent=nullptr)
 
 ~MCFragment ()
 
- Protected Member Functions inherited from llvm::ilist_node_with_parent< MCFragment, MCSection >
 ilist_node_with_parent ()=default
 
- Protected Member Functions inherited from llvm::ilist_node_impl< ilist_detail::compute_node_options< MCFragment, Options... >::type >
 ilist_node_impl ()=default
 

Protected Attributes

const MCSubtargetInfoSTI = nullptr
 STI - The MCSubtargetInfo in effect when the instruction was encoded. More...
 
- Protected Attributes inherited from llvm::MCFragment
bool HasInstructions
 

Additional Inherited Members

- Public Types inherited from llvm::MCFragment
enum  FragmentType : uint8_t {
  FT_Align, FT_Data, FT_CompactEncodedInst, FT_Fill,
  FT_Relaxable, FT_Org, FT_Dwarf, FT_DwarfFrame,
  FT_LEB, FT_Padding, FT_SymbolId, FT_CVInlineLines,
  FT_CVDefRange, FT_Dummy
}
 
- Protected Types inherited from llvm::ilist_node_impl< ilist_detail::compute_node_options< MCFragment, Options... >::type >
using self_iterator = ilist_iterator< ilist_detail::compute_node_options< MCFragment, Options... >::type, false, false >
 
using const_self_iterator = ilist_iterator< ilist_detail::compute_node_options< MCFragment, Options... >::type, false, true >
 
using reverse_self_iterator = ilist_iterator< ilist_detail::compute_node_options< MCFragment, Options... >::type, true, false >
 
using const_reverse_self_iterator = ilist_iterator< ilist_detail::compute_node_options< MCFragment, Options... >::type, true, true >
 

Detailed Description

Interface implemented by fragments that contain encoded instructions and/or data.

Definition at line 128 of file MCFragment.h.

Constructor & Destructor Documentation

◆ MCEncodedFragment()

llvm::MCEncodedFragment::MCEncodedFragment ( MCFragment::FragmentType  FType,
bool  HasInstructions,
MCSection Sec 
)
inlineprotected

Definition at line 135 of file MCFragment.h.

Member Function Documentation

◆ alignToBundleEnd()

bool llvm::MCEncodedFragment::alignToBundleEnd ( ) const
inline

Should this fragment be placed at the end of an aligned bundle?

Definition at line 158 of file MCFragment.h.

Referenced by llvm::computeBundlePadding(), and llvm::MCAssembler::writeFragmentPadding().

◆ classof()

static bool llvm::MCEncodedFragment::classof ( const MCFragment F)
inlinestatic

◆ getBundlePadding()

uint8_t llvm::MCEncodedFragment::getBundlePadding ( ) const
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 166 of file MCFragment.h.

Referenced by llvm::MCAssembler::writeFragmentPadding().

◆ getSubtargetInfo()

const MCSubtargetInfo* llvm::MCEncodedFragment::getSubtargetInfo ( ) const
inline

Retrieve the MCSubTargetInfo in effect when the instruction was encoded.

Guaranteed to be non-null if hasInstructions() == true

Definition at line 174 of file MCFragment.h.

Referenced by CanReuseDataFragment(), CheckBundleSubtargets(), llvm::MCAssembler::Finish(), llvm::MCELFStreamer::MCELFStreamer(), and llvm::MCWasmStreamer::~MCWasmStreamer().

◆ setAlignToBundleEnd()

void llvm::MCEncodedFragment::setAlignToBundleEnd ( bool  V)
inline

Definition at line 159 of file MCFragment.h.

Referenced by CheckBundleSubtargets(), and llvm::MCELFStreamer::EmitBundleUnlock().

◆ setBundlePadding()

void llvm::MCEncodedFragment::setBundlePadding ( uint8_t  N)
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 170 of file MCFragment.h.

References N.

Referenced by llvm::MCAsmLayout::layoutFragment(), and llvm::MCELFStreamer::MCELFStreamer().

◆ setHasInstructions()

void llvm::MCEncodedFragment::setHasInstructions ( const MCSubtargetInfo STI)
inline

Record that the fragment contains instructions with the MCSubtargetInfo in effect when the instruction was encoded.

Definition at line 178 of file MCFragment.h.

References llvm::MCFragment::HasInstructions.

Referenced by CheckBundleSubtargets(), llvm::MCWasmStreamer::EmitIdent(), llvm::MCWinCOFFStreamer::EmitInstToData(), llvm::MCELFStreamer::MCELFStreamer(), and llvm::MCWasmStreamer::~MCWasmStreamer().

Member Data Documentation

◆ STI

const MCSubtargetInfo* llvm::MCEncodedFragment::STI = nullptr
protected

STI - The MCSubtargetInfo in effect when the instruction was encoded.

must be non-null for instructions.

Definition at line 141 of file MCFragment.h.


The documentation for this class was generated from the following file: