|
LLVM 22.0.0git
|
#include "llvm/MC/MCAssembler.h"#include "llvm/ADT/ArrayRef.h"#include "llvm/ADT/SmallVector.h"#include "llvm/ADT/Statistic.h"#include "llvm/ADT/StringRef.h"#include "llvm/ADT/Twine.h"#include "llvm/MC/MCAsmBackend.h"#include "llvm/MC/MCAsmInfo.h"#include "llvm/MC/MCCodeEmitter.h"#include "llvm/MC/MCCodeView.h"#include "llvm/MC/MCContext.h"#include "llvm/MC/MCDwarf.h"#include "llvm/MC/MCExpr.h"#include "llvm/MC/MCFixup.h"#include "llvm/MC/MCInst.h"#include "llvm/MC/MCObjectWriter.h"#include "llvm/MC/MCSFrame.h"#include "llvm/MC/MCSection.h"#include "llvm/MC/MCSymbol.h"#include "llvm/MC/MCValue.h"#include "llvm/Support/Alignment.h"#include "llvm/Support/Casting.h"#include "llvm/Support/Debug.h"#include "llvm/Support/EndianStream.h"#include "llvm/Support/ErrorHandling.h"#include "llvm/Support/LEB128.h"#include "llvm/Support/raw_ostream.h"#include <cassert>#include <cstdint>#include <tuple>#include <utility>Go to the source code of this file.
Namespaces | |
| namespace | llvm |
| This is an optimization pass for GlobalISel generic memory operations. | |
| namespace | stats |
Macros | |
| #define | DEBUG_TYPE "assembler" |
Functions | |
| 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. | |
| #define DEBUG_TYPE "assembler" |
Definition at line 47 of file MCAssembler.cpp.
|
static |
Definition at line 264 of file MCAssembler.cpp.
References llvm::MCSymbol::getFragment(), llvm::MCSymbol::getName(), llvm::MCSymbol::getOffset(), and llvm::reportFatalUsageError().
Referenced by getSymbolOffsetImpl().
|
static |
Definition at line 276 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::reportFatalUsageError().
Referenced by llvm::MCAssembler::getSymbolOffset(), llvm::MCAssembler::getSymbolOffset(), and getSymbolOffsetImpl().
Check if the branch is against the boundary.
| StartAddr | start address of the fused/unfused branch. |
| Size | size of the fused/unfused branch. |
| BoundaryAlignment | alignment requirement of the branch. |
Definition at line 843 of file MCAssembler.cpp.
References Size, and llvm::Align::value().
Referenced by needPadding().
Check if the branch crosses the boundary.
| StartAddr | start address of the fused/unfused branch. |
| Size | size of the fused/unfused branch. |
| BoundaryAlignment | alignment requirement of the branch. |
Definition at line 830 of file MCAssembler.cpp.
References llvm::Log2(), and Size.
Referenced by needPadding().
Check if the branch needs padding.
| StartAddr | start address of the fused/unfused branch. |
| Size | size of the fused/unfused branch. |
| BoundaryAlignment | alignment requirement of the branch. |
Definition at line 855 of file MCAssembler.cpp.
References isAgainstBoundary(), mayCrossBoundary(), and Size.
|
static |
Write the fragment F to the output file.
Definition at line 384 of file MCAssembler.cpp.
References assert(), llvm::cast(), llvm::Count, llvm::Data, E(), F, llvm::MCFragment::FT_Align, llvm::MCFragment::FT_BoundaryAlign, llvm::MCFragment::FT_CVDefRange, llvm::MCFragment::FT_CVInlineLines, llvm::MCFragment::FT_Data, 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_Relaxable, llvm::MCFragment::FT_SFrame, llvm::MCFragment::FT_SymbolId, llvm::MCNopsFragment::getControlledNopLength(), llvm::MCSymbol::getIndex(), llvm::MCNopsFragment::getLoc(), llvm::MCNopsFragment::getNumBytes(), llvm::MCBoundaryAlignFragment::getSubtargetInfo(), llvm::MCNopsFragment::getSubtargetInfo(), llvm::MCSymbolIdFragment::getSymbol(), llvm::MCFillFragment::getValue(), llvm::MCFillFragment::getValueSize(), I, llvm::little, llvm_unreachable, llvm::Ref, llvm::report_fatal_error(), llvm::reportFatalInternalError(), llvm::raw_ostream::tell(), llvm::raw_ostream::write(), and llvm::support::endian::write().
Referenced by llvm::MCAssembler::writeSectionData().