LLVM  6.0.0svn
Classes | Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | List of all members
llvm::MCPaddingFragment Class Reference

Fragment for adding required padding. More...

#include "llvm/MC/MCFragment.h"

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

Public Types

enum  MCPaddingFragmentKind { FirstTargetPerfNopFragmentKind = 8, MaxTargetPerfNopFragmentKind = 63 }
 
- 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
}
 

Public Member Functions

 MCPaddingFragment (MCSection *Sec=nullptr)
 
bool isInsertionPoint () const
 
void setAsInsertionPoint ()
 
uint64_t getPaddingPoliciesMask () const
 
void setPaddingPoliciesMask (uint64_t Value)
 
bool hasPaddingPolicy (uint64_t PolicyMask) const
 
const MCInstgetInst () const
 
size_t getInstSize () const
 
void setInstAndInstSize (const MCInst &Inst, size_t InstSize)
 
void setInstAndInstFragment (const MCInst &Inst, MCRelaxableFragment *InstFragment)
 
uint64_t getSize () const
 
void setSize (uint64_t Value)
 
bool isInstructionInitialized () const
 
- 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 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...
 
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)
 

Static Public Attributes

static const uint64_t PFK_None = UINT64_C(0)
 

Additional Inherited Members

- 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 >
 
- Protected Member Functions inherited from llvm::MCFragment
 MCFragment (FragmentType Kind, bool HasInstructions, uint8_t BundlePadding, 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 inherited from llvm::MCFragment
bool HasInstructions
 

Detailed Description

Fragment for adding required padding.

This fragment is always inserted before an instruction, and holds that instruction as context information (as well as a mask of kinds) for determining the padding size.

Definition at line 333 of file MCFragment.h.

Member Enumeration Documentation

◆ MCPaddingFragmentKind

Enumerator
FirstTargetPerfNopFragmentKind 
MaxTargetPerfNopFragmentKind 

Limit range of target MCPerfNopFragment kinds to fit in uint64_t.

Definition at line 363 of file MCFragment.h.

Constructor & Destructor Documentation

◆ MCPaddingFragment()

llvm::MCPaddingFragment::MCPaddingFragment ( MCSection Sec = nullptr)
inline

Definition at line 372 of file MCFragment.h.

Member Function Documentation

◆ classof()

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

Definition at line 415 of file MCFragment.h.

References llvm::MCFragment::FT_Padding, and llvm::MCFragment::getKind().

◆ getInst()

const MCInst& llvm::MCPaddingFragment::getInst ( ) const
inline

Definition at line 386 of file MCFragment.h.

References assert().

Referenced by llvm::MCFragment::dump().

◆ getInstSize()

size_t llvm::MCPaddingFragment::getInstSize ( ) const
inline

Definition at line 390 of file MCFragment.h.

References assert().

Referenced by llvm::MCFragment::dump(), and llvm::MCCodePaddingPolicy::getFragmentInstByte().

◆ getPaddingPoliciesMask()

uint64_t llvm::MCPaddingFragment::getPaddingPoliciesMask ( ) const
inline

◆ getSize()

uint64_t llvm::MCPaddingFragment::getSize ( ) const
inline

◆ hasPaddingPolicy()

bool llvm::MCPaddingFragment::hasPaddingPolicy ( uint64_t  PolicyMask) const
inline

◆ isInsertionPoint()

bool llvm::MCPaddingFragment::isInsertionPoint ( ) const
inline

◆ isInstructionInitialized()

bool llvm::MCPaddingFragment::isInstructionInitialized ( ) const
inline

Definition at line 413 of file MCFragment.h.

◆ setAsInsertionPoint()

void llvm::MCPaddingFragment::setAsInsertionPoint ( )
inline

◆ setInstAndInstFragment()

void llvm::MCPaddingFragment::setInstAndInstFragment ( const MCInst Inst,
MCRelaxableFragment InstFragment 
)
inline

Definition at line 404 of file MCFragment.h.

Referenced by llvm::MCCodePadder::handleInstructionEnd().

◆ setInstAndInstSize()

void llvm::MCPaddingFragment::setInstAndInstSize ( const MCInst Inst,
size_t  InstSize 
)
inline

Definition at line 398 of file MCFragment.h.

Referenced by llvm::MCCodePadder::handleInstructionEnd().

◆ setPaddingPoliciesMask()

void llvm::MCPaddingFragment::setPaddingPoliciesMask ( uint64_t  Value)
inline

◆ setSize()

void llvm::MCPaddingFragment::setSize ( uint64_t  Value)
inline

Definition at line 412 of file MCFragment.h.

Referenced by llvm::MCCodePadder::relaxFragment().

Member Data Documentation

◆ PFK_None

const uint64_t llvm::MCPaddingFragment::PFK_None = UINT64_C(0)
static

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