|
LLVM
3.7.0
|
#include <MCAssembler.h>
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 |
| 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. 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 > | |
| MCFragment * | getPrevNode () |
| Get the previous node, or 0 for the list head. More... | |
| const MCFragment * | getPrevNode () const |
| Get the previous node, or 0 for the list head. More... | |
| MCFragment * | getNextNode () |
| Get the next node, or 0 for the list tail. More... | |
| const MCFragment * | getNextNode () 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 > |
Definition at line 45 of file MCAssembler.h.
| enum llvm::MCFragment::FragmentType : uint8_t |
| 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.
|
protected |
Definition at line 275 of file MCAssembler.cpp.
References llvm::MCSection::getFragmentList(), and llvm::iplist< NodeTy, Traits >::push_back().
|
protected |
Definition at line 273 of file MCAssembler.cpp.
|
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 | ( | ) |
Definition at line 1131 of file MCAssembler.cpp.
References llvm::MCInst::dump_pretty(), llvm::errs(), llvm::MCEncodedFragmentWithFixups< ContentsSize, FixupsSize >::fixup_begin(), llvm::MCEncodedFragmentWithFixups< ContentsSize, FixupsSize >::fixup_end(), FT_Align, FT_CompactEncodedInst, FT_Data, FT_Dwarf, FT_DwarfFrame, FT_Fill, FT_LEB, FT_Org, FT_Relaxable, FT_SafeSEH, llvm::MCDwarfLineAddrFragment::getAddrDelta(), llvm::MCDwarfCallFrameFragment::getAddrDelta(), llvm::MCAlignFragment::getAlignment(), getBundlePadding(), llvm::MCEncodedFragmentWithContents< ContentsSize >::getContents(), llvm::MCRelaxableFragment::getInst(), getKind(), llvm::MCDwarfLineAddrFragment::getLineDelta(), llvm::MCAlignFragment::getMaxBytesToEmit(), llvm::MCOrgFragment::getOffset(), llvm::MCFillFragment::getSize(), llvm::MCSafeSEHFragment::getSymbol(), llvm::MCAlignFragment::getValue(), llvm::MCFillFragment::getValue(), llvm::MCOrgFragment::getValue(), llvm::MCLEBFragment::getValue(), llvm::MCAlignFragment::getValueSize(), llvm::MCFillFragment::getValueSize(), llvm::MCAlignFragment::hasEmitNops(), hasInstructions(), llvm::hexdigit(), llvm::MCLEBFragment::isSigned(), and llvm::SmallVectorTemplateCommon< T, typename >::size().
Definition at line 121 of file MCAssembler.h.
Referenced by llvm::MCAssembler::getAtom(), and llvm::MachObjectWriter::isSymbolRefDifferenceFullyResolvedImpl().
|
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().
|
inline |
Definition at line 116 of file MCAssembler.h.
References Kind.
Referenced by llvm::MCEncodedFragment::classof(), llvm::MCEncodedFragmentWithFixups< 8, 1 >::classof(), llvm::MCDataFragment::classof(), llvm::MCCompactEncodedInstFragment::classof(), llvm::MCRelaxableFragment::classof(), llvm::MCAlignFragment::classof(), llvm::MCFillFragment::classof(), llvm::MCOrgFragment::classof(), llvm::MCLEBFragment::classof(), llvm::MCDwarfLineAddrFragment::classof(), llvm::MCDwarfCallFrameFragment::classof(), llvm::MCSafeSEHFragment::classof(), llvm::MCAssembler::computeFragmentSize(), dump(), and writeFragment().
|
inline |
Definition at line 124 of file MCAssembler.h.
|
inline |
Definition at line 118 of file MCAssembler.h.
Referenced by llvm::MCAssembler::getAtom(), llvm::MachObjectWriter::getFragmentAddress(), llvm::MachObjectWriter::getSymbolAddress(), llvm::MCAsmLayout::invalidateFragmentsFrom(), llvm::MCObjectWriter::isSymbolRefDifferenceFullyResolvedImpl(), llvm::MachObjectWriter::isSymbolRefDifferenceFullyResolvedImpl(), and llvm::MCAsmLayout::layoutFragment().
|
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().
|
inline |
Definition at line 133 of file MCAssembler.h.
Referenced by llvm::MCELFStreamer::EmitBundleUnlock().
Definition at line 122 of file MCAssembler.h.
|
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().
|
inline |
Definition at line 125 of file MCAssembler.h.
|
inline |
Definition at line 119 of file MCAssembler.h.
Referenced by llvm::MCObjectStreamer::flushPendingLabels(), llvm::MCSection::getSubsectionInsertionPoint(), and llvm::MCObjectStreamer::insert().
|
friend |
Definition at line 106 of file MCAssembler.h.
|
friend |
Definition at line 46 of file MCAssembler.h.
|
protected |
Definition at line 69 of file MCAssembler.h.
Referenced by hasInstructions(), and llvm::MCDataFragment::setHasInstructions().
1.8.6