|
LLVM
4.0.0
|
#include <MCFragment.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, FT_CVInlineLines, FT_CVDefRange, FT_Dummy } |
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... | |
| bool | isDummy () const |
| Return true if given frgment has FT_Dummy type. More... | |
| void | dump () |
Public Member Functions inherited from llvm::ilist_node_with_parent< MCFragment, MCSection > | |
| MCFragment * | getPrevNode () |
| const MCFragment * | getPrevNode () const |
Get the previous node, or nullptr for the list head. More... | |
| MCFragment * | getNextNode () |
Get the next node, or nullptr for the list tail. More... | |
| const MCFragment * | getNextNode () 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... | |
Protected Member Functions | |
| 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 | |
| bool | HasInstructions |
Friends | |
| class | MCAsmLayout |
Additional Inherited Members | |
Protected Types inherited from llvm::ilist_node_impl< ilist_detail::compute_node_options< MCFragment, Options...>::type > | |
| typedef ilist_iterator < ilist_detail::compute_node_options < MCFragment, Options...> ::type, false, false > | self_iterator |
| typedef ilist_iterator < ilist_detail::compute_node_options < MCFragment, Options...> ::type, false, true > | const_self_iterator |
| typedef ilist_iterator < ilist_detail::compute_node_options < MCFragment, Options...> ::type, true, false > | reverse_self_iterator |
| typedef ilist_iterator < ilist_detail::compute_node_options < MCFragment, Options...> ::type, true, true > | const_reverse_self_iterator |
Definition at line 25 of file MCFragment.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 | |
| FT_CVInlineLines | |
| FT_CVDefRange | |
| FT_Dummy | |
Definition at line 33 of file MCFragment.h.
|
protected |
Definition at line 239 of file MCFragment.cpp.
References llvm::MCSection::getFragmentList(), isDummy(), and llvm::iplist_impl< IntrusiveListT, TraitsT >::push_back().
|
protected |
Definition at line 237 of file MCFragment.cpp.
|
inline |
Should this fragment be placed at the end of an aligned bundle?
Definition at line 111 of file MCFragment.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 248 of file MCFragment.cpp.
References FT_Align, FT_CompactEncodedInst, FT_CVDefRange, FT_CVInlineLines, FT_Data, FT_Dummy, FT_Dwarf, FT_DwarfFrame, FT_Fill, FT_LEB, FT_Org, FT_Relaxable, and FT_SafeSEH.
| LLVM_DUMP_METHOD void MCFragment::dump | ( | ) |
Definition at line 313 of file MCFragment.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_CVDefRange, FT_CVInlineLines, FT_Data, FT_Dummy, 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::MCAlignFragment::hasEmitNops(), hasInstructions(), llvm::hexdigit(), i, llvm::MCLEBFragment::isSigned(), and llvm::SmallVectorTemplateCommon< T, typename >::size().
Definition at line 100 of file MCFragment.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 119 of file MCFragment.h.
Referenced by dump(), and llvm::MCAssembler::writeFragmentPadding().
|
inline |
Definition at line 95 of file MCFragment.h.
References Kind.
Referenced by llvm::MCDummyFragment::classof(), 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::MCCVInlineLineTableFragment::classof(), llvm::MCCVDefRangeFragment::classof(), llvm::MCAssembler::computeFragmentSize(), dump(), and writeFragment().
|
inline |
Definition at line 103 of file MCFragment.h.
|
inline |
Definition at line 97 of file MCFragment.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 108 of file MCFragment.h.
References HasInstructions.
Referenced by dump(), llvm::MCObjectStreamer::getOrCreateDataFragment(), llvm::MCAsmLayout::layoutFragment(), and llvm::MCAssembler::writeFragmentPadding().
|
inline |
Return true if given frgment has FT_Dummy type.
Definition at line 126 of file MCFragment.h.
References FT_Dummy, and Kind.
Referenced by MCFragment().
|
inline |
Definition at line 112 of file MCFragment.h.
Referenced by llvm::MCELFStreamer::EmitBundleUnlock().
Definition at line 101 of file MCFragment.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 123 of file MCFragment.h.
References N.
Referenced by llvm::MCAsmLayout::layoutFragment().
|
inline |
Definition at line 104 of file MCFragment.h.
|
inline |
Definition at line 98 of file MCFragment.h.
Referenced by llvm::MCObjectStreamer::flushPendingLabels(), llvm::MCSection::getSubsectionInsertionPoint(), and llvm::MCObjectStreamer::insert().
|
friend |
Definition at line 26 of file MCFragment.h.
|
protected |
Definition at line 53 of file MCFragment.h.
Referenced by hasInstructions(), and llvm::MCDataFragment::setHasInstructions().
1.8.6