LLVM  3.7.0
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | Friends | List of all members
llvm::MCFragment Class Reference

#include <MCAssembler.h>

Inheritance diagram for llvm::MCFragment:
[legend]
Collaboration diagram for llvm::MCFragment:
[legend]

Public Types

enum  FragmentType : uint8_t {
  FT_Align, FT_Data, FT_CompactEncodedInst, FT_Fill,
  FT_Relaxable, FT_Org, FT_Dwarf, FT_DwarfFrame,
  FT_LEB, FT_SafeSEH
}
 

Public Member Functions

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...
 
void dump ()
 
- Public Member Functions inherited from llvm::ilist_node< MCFragment >
MCFragmentgetPrevNode ()
 Get the previous node, or 0 for the list head. More...
 
const MCFragmentgetPrevNode () const
 Get the previous node, or 0 for the list head. More...
 
MCFragmentgetNextNode ()
 Get the next node, or 0 for the list tail. More...
 
const MCFragmentgetNextNode () const
 Get the next node, or 0 for the list tail. More...
 

Protected Member Functions

 MCFragment (FragmentType Kind, bool HasInstructions, uint8_t BundlePadding, MCSection *Parent=nullptr)
 
 ~MCFragment ()
 
- Protected Member Functions inherited from llvm::ilist_node< MCFragment >
 ilist_node ()
 

Protected Attributes

bool HasInstructions
 

Friends

class MCAsmLayout
 
struct ilist_sentinel_traits< MCFragment >
 

Detailed Description

Definition at line 45 of file MCAssembler.h.

Member Enumeration Documentation

Enumerator
FT_Align 
FT_Data 
FT_CompactEncodedInst 
FT_Fill 
FT_Relaxable 
FT_Org 
FT_Dwarf 
FT_DwarfFrame 
FT_LEB 
FT_SafeSEH 

Definition at line 52 of file MCAssembler.h.

Constructor & Destructor Documentation

MCFragment::MCFragment ( FragmentType  Kind,
bool  HasInstructions,
uint8_t  BundlePadding,
MCSection Parent = nullptr 
)
protected
MCFragment::~MCFragment ( )
protected

Definition at line 273 of file MCAssembler.cpp.

Member Function Documentation

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

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

Definition at line 132 of file MCAssembler.h.

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

void MCFragment::destroy ( )

Destroys the current fragment.

This must be used instead of delete as MCFragment is non-virtual. This method will dispatch to the appropriate subclass.

Definition at line 284 of file MCAssembler.cpp.

References FT_Align, FT_CompactEncodedInst, FT_Data, FT_Dwarf, FT_DwarfFrame, FT_Fill, FT_LEB, FT_Org, FT_Relaxable, and FT_SafeSEH.

void MCFragment::dump ( )
const MCSymbol* llvm::MCFragment::getAtom ( ) const
inline
uint8_t llvm::MCFragment::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 140 of file MCAssembler.h.

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

FragmentType llvm::MCFragment::getKind ( ) const
inline
unsigned llvm::MCFragment::getLayoutOrder ( ) const
inline

Definition at line 124 of file MCAssembler.h.

MCSection* llvm::MCFragment::getParent ( ) const
inline
bool llvm::MCFragment::hasInstructions ( ) const
inline

Does this fragment have instructions emitted into it? By default this is false, but specific fragment types may set it to true.

Definition at line 129 of file MCAssembler.h.

References HasInstructions.

Referenced by dump(), llvm::MCObjectStreamer::getOrCreateDataFragment(), llvm::MCAsmLayout::layoutFragment(), and llvm::MCAssembler::writeFragmentPadding().

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

Definition at line 133 of file MCAssembler.h.

Referenced by llvm::MCELFStreamer::EmitBundleUnlock().

void llvm::MCFragment::setAtom ( const MCSymbol Value)
inline

Definition at line 122 of file MCAssembler.h.

void llvm::MCFragment::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 144 of file MCAssembler.h.

References N.

Referenced by llvm::MCAsmLayout::layoutFragment().

void llvm::MCFragment::setLayoutOrder ( unsigned  Value)
inline

Definition at line 125 of file MCAssembler.h.

void llvm::MCFragment::setParent ( MCSection Value)
inline

Friends And Related Function Documentation

friend struct ilist_sentinel_traits< MCFragment >
friend

Definition at line 106 of file MCAssembler.h.

friend class MCAsmLayout
friend

Definition at line 46 of file MCAssembler.h.

Member Data Documentation

bool llvm::MCFragment::HasInstructions
protected

Definition at line 69 of file MCAssembler.h.

Referenced by hasInstructions(), and llvm::MCDataFragment::setHasInstructions().


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