LLVM: lib/MC/MCAssembler.cpp File Reference (original) (raw)

Go to the source code of this file.

Namespaces
namespace llvm
This is an optimization pass for GlobalISel generic memory operations.
namespace stats
Functions
static uint64_t computeBundlePadding (unsigned BundleSize, const MCEncodedFragment *F, uint64_t FOffset, uint64_t FSize)
static bool getLabelOffset (const MCAssembler &Asm, const MCSymbol &S, bool ReportError, uint64_t &Val)
static bool getSymbolOffsetImpl (const MCAssembler &Asm, const MCSymbol &S, bool ReportError, uint64_t &Val)
static void writeFragment (raw_ostream &OS, const MCAssembler &Asm, const MCFragment &F)
Write the fragment F to the output file.
static bool mayCrossBoundary (uint64_t StartAddr, uint64_t Size, Align BoundaryAlignment)
Check if the branch crosses the boundary.
static bool isAgainstBoundary (uint64_t StartAddr, uint64_t Size, Align BoundaryAlignment)
Check if the branch is against the boundary.
static bool needPadding (uint64_t StartAddr, uint64_t Size, Align BoundaryAlignment)
Check if the branch needs padding.

DEBUG_TYPE

#define DEBUG_TYPE "assembler"

computeBundlePadding()

getLabelOffset()

getSymbolOffsetImpl()

Definition at line 459 of file MCAssembler.cpp.

References A, B, llvm::MCExpr::evaluateAsValue(), getLabelOffset(), llvm::MCSymbol::getName(), getSymbolOffsetImpl(), llvm::MCSymbol::getVariableValue(), llvm::MCSymbol::isVariable(), llvm::Offset, and llvm::report_fatal_error().

Referenced by llvm::MCAssembler::getSymbolOffset(), and getSymbolOffsetImpl().

isAgainstBoundary()

Check if the branch is against the boundary.

Parameters

StartAddr start address of the fused/unfused branch.
Size size of the fused/unfused branch.
BoundaryAlignment alignment requirement of the branch.

Returns

true if the branch is against the boundary.

Definition at line 1152 of file MCAssembler.cpp.

References Size, and llvm::Align::value().

Referenced by needPadding().

mayCrossBoundary()

Check if the branch crosses the boundary.

Parameters

StartAddr start address of the fused/unfused branch.
Size size of the fused/unfused branch.
BoundaryAlignment alignment requirement of the branch.

Returns

true if the branch cross the boundary.

Definition at line 1139 of file MCAssembler.cpp.

References llvm::Log2(), and Size.

Referenced by needPadding().

needPadding()

Check if the branch needs padding.

Parameters

StartAddr start address of the fused/unfused branch.
Size size of the fused/unfused branch.
BoundaryAlignment alignment requirement of the branch.

Returns

true if the branch needs padding.

Definition at line 1164 of file MCAssembler.cpp.

References isAgainstBoundary(), mayCrossBoundary(), and Size.

writeFragment()

Write the fragment F to the output file.

Definition at line 602 of file MCAssembler.cpp.

References assert(), llvm::Data, Endian, F, llvm::MCFragment::FT_Align, llvm::MCFragment::FT_BoundaryAlign, llvm::MCFragment::FT_CVDefRange, llvm::MCFragment::FT_CVInlineLines, llvm::MCFragment::FT_Data, llvm::MCFragment::FT_Dummy, llvm::MCFragment::FT_Dwarf, llvm::MCFragment::FT_DwarfFrame, llvm::MCFragment::FT_Fill, llvm::MCFragment::FT_LEB, llvm::MCFragment::FT_Nops, llvm::MCFragment::FT_Org, llvm::MCFragment::FT_PseudoProbe, llvm::MCFragment::FT_Relaxable, llvm::MCFragment::FT_SymbolId, llvm::MCEncodedFragmentWithFixups< ContentsSize, FixupsSize >::getContents(), llvm::MCNopsFragment::getControlledNopLength(), llvm::MCSymbol::getIndex(), llvm::MCNopsFragment::getLoc(), llvm::MCNopsFragment::getNumBytes(), llvm::MCAlignFragment::getSubtargetInfo(), llvm::MCNopsFragment::getSubtargetInfo(), llvm::MCBoundaryAlignFragment::getSubtargetInfo(), llvm::MCSymbolIdFragment::getSymbol(), llvm::MCAlignFragment::getValue(), llvm::MCFillFragment::getValue(), llvm::MCOrgFragment::getValue(), llvm::MCAlignFragment::getValueSize(), llvm::MCFillFragment::getValueSize(), llvm::MCAlignFragment::hasEmitNops(), I, llvm::little, llvm_unreachable, OS, llvm::Ref, llvm::report_fatal_error(), llvm::raw_ostream::tell(), and llvm::raw_ostream::write().

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