LLVM 20.0.0git
|
This is an extension point for target-specific MCExpr subclasses to implement. More...
#include "llvm/MC/MCExpr.h"
Public Member Functions | |
virtual void | printImpl (raw_ostream &OS, const MCAsmInfo *MAI) const =0 |
virtual bool | evaluateAsRelocatableImpl (MCValue &Res, const MCAssembler *Asm, const MCFixup *Fixup) const =0 |
virtual bool | isEqualTo (const MCExpr *x) const |
virtual bool | isSymbolUsedInExpression (const MCSymbol *Sym) const |
virtual bool | inlineAssignedExpr () const |
virtual void | visitUsedExpr (MCStreamer &Streamer) const =0 |
virtual MCFragment * | findAssociatedFragment () const =0 |
virtual void | fixELFSymbolsInTLSFixups (MCAssembler &) const =0 |
Public Member Functions inherited from llvm::MCExpr | |
MCExpr (const MCExpr &)=delete | |
MCExpr & | operator= (const MCExpr &)=delete |
ExprKind | getKind () const |
SMLoc | getLoc () const |
void | print (raw_ostream &OS, const MCAsmInfo *MAI, bool InParens=false) const |
void | dump () const |
bool | isSymbolUsedInExpression (const MCSymbol *Sym) const |
Returns whether the given symbol is used anywhere in the expression or subexpressions. | |
bool | evaluateAsAbsolute (int64_t &Res, const MCAssembler &Asm, const SectionAddrMap &Addrs) const |
Try to evaluate the expression to an absolute value. | |
bool | evaluateAsAbsolute (int64_t &Res) const |
bool | evaluateAsAbsolute (int64_t &Res, const MCAssembler &Asm) const |
bool | evaluateAsAbsolute (int64_t &Res, const MCAssembler *Asm) const |
bool | evaluateKnownAbsolute (int64_t &Res, const MCAssembler &Asm) const |
Aggressive variant of evaluateAsRelocatable when relocations are unavailable (e.g. | |
bool | evaluateAsRelocatable (MCValue &Res, const MCAssembler *Asm, const MCFixup *Fixup) const |
Try to evaluate the expression to a relocatable value, i.e. | |
bool | evaluateAsValue (MCValue &Res, const MCAssembler &Asm) const |
Try to evaluate the expression to the form (a - b + constant) where neither a nor b are variables. | |
MCFragment * | findAssociatedFragment () const |
Find the "associated section" for this expression, which is currently defined as the absolute section for constants, or otherwise the section associated with the first defined symbol in the expression. | |
Static Public Member Functions | |
static bool | classof (const MCExpr *E) |
Protected Member Functions | |
MCTargetExpr () | |
virtual | ~MCTargetExpr ()=default |
Protected Member Functions inherited from llvm::MCExpr | |
MCExpr (ExprKind Kind, SMLoc Loc, unsigned SubclassData=0) | |
bool | evaluateAsRelocatableImpl (MCValue &Res, const MCAssembler *Asm, const MCFixup *Fixup, const SectionAddrMap *Addrs, bool InSet) const |
unsigned | getSubclassData () const |
Additional Inherited Members | |
Public Types inherited from llvm::MCExpr | |
enum | ExprKind : uint8_t { Binary , Constant , SymbolRef , Unary , Target } |
This is an extension point for target-specific MCExpr subclasses to implement.
NOTE: All subclasses are required to have trivial destructors because MCExprs are bump pointer allocated and not destructed.
|
protectedvirtualdefault |
Definition at line 681 of file MCExpr.h.
References E, and llvm::MCExpr::Target.
|
pure virtual |
Implemented in llvm::AArch64MCExpr, llvm::AArch64AuthMCExpr, llvm::AMDGPUMCExpr, llvm::ARMMCExpr, llvm::AVRMCExpr, llvm::CSKYMCExpr, llvm::HexagonMCExpr, llvm::LanaiMCExpr, llvm::LoongArchMCExpr, llvm::MipsMCExpr, llvm::NVPTXFloatMCExpr, llvm::NVPTXGenericMCSymbolRefExpr, llvm::PPCMCExpr, llvm::RISCVMCExpr, llvm::SparcMCExpr, llvm::SystemZMCExpr, llvm::VEMCExpr, llvm::X86MCExpr, and llvm::XtensaMCExpr.
|
pure virtual |
Implemented in llvm::AArch64MCExpr, llvm::AArch64AuthMCExpr, llvm::AMDGPUMCExpr, llvm::ARMMCExpr, llvm::AVRMCExpr, llvm::CSKYMCExpr, llvm::HexagonMCExpr, llvm::LanaiMCExpr, llvm::LoongArchMCExpr, llvm::MipsMCExpr, llvm::NVPTXFloatMCExpr, llvm::NVPTXGenericMCSymbolRefExpr, llvm::PPCMCExpr, llvm::RISCVMCExpr, llvm::SparcMCExpr, llvm::SystemZMCExpr, llvm::VEMCExpr, llvm::X86MCExpr, and llvm::XtensaMCExpr.
|
pure virtual |
Implemented in llvm::AMDGPUMCExpr, llvm::LanaiMCExpr, llvm::AArch64MCExpr, llvm::ARMMCExpr, llvm::AVRMCExpr, llvm::CSKYMCExpr, llvm::HexagonMCExpr, llvm::LoongArchMCExpr, llvm::MipsMCExpr, llvm::NVPTXFloatMCExpr, llvm::NVPTXGenericMCSymbolRefExpr, llvm::PPCMCExpr, llvm::RISCVMCExpr, llvm::SparcMCExpr, llvm::SystemZMCExpr, llvm::VEMCExpr, llvm::X86MCExpr, and llvm::XtensaMCExpr.
|
inlinevirtual |
Reimplemented in llvm::X86MCExpr.
Reimplemented in llvm::X86MCExpr.
|
inlinevirtual |
Reimplemented in llvm::AMDGPUMCExpr.
|
pure virtual |
Implemented in llvm::AArch64MCExpr, llvm::AArch64AuthMCExpr, llvm::AMDGPUMCExpr, llvm::ARMMCExpr, llvm::AVRMCExpr, llvm::CSKYMCExpr, llvm::HexagonMCExpr, llvm::LanaiMCExpr, llvm::LoongArchMCExpr, llvm::MipsMCExpr, llvm::NVPTXFloatMCExpr, llvm::NVPTXGenericMCSymbolRefExpr, llvm::PPCMCExpr, llvm::RISCVMCExpr, llvm::SparcMCExpr, llvm::SystemZMCExpr, llvm::VEMCExpr, llvm::X86MCExpr, and llvm::XtensaMCExpr.
|
pure virtual |
Implemented in llvm::AArch64MCExpr, llvm::AArch64AuthMCExpr, llvm::AMDGPUMCExpr, llvm::ARMMCExpr, llvm::AVRMCExpr, llvm::CSKYMCExpr, llvm::HexagonMCExpr, llvm::LanaiMCExpr, llvm::LoongArchMCExpr, llvm::MipsMCExpr, llvm::NVPTXFloatMCExpr, llvm::NVPTXGenericMCSymbolRefExpr, llvm::PPCMCExpr, llvm::RISCVMCExpr, llvm::SparcMCExpr, llvm::SystemZMCExpr, llvm::VEMCExpr, llvm::X86MCExpr, and llvm::XtensaMCExpr.