LLVM
15.0.0git
|
#include "Target/CSKY/MCTargetDesc/CSKYMCExpr.h"
Public Types | |
enum | VariantKind { VK_CSKY_None, VK_CSKY_ADDR, VK_CSKY_ADDR_HI16, VK_CSKY_ADDR_LO16, VK_CSKY_PCREL, VK_CSKY_GOT, VK_CSKY_GOT_IMM18_BY4, VK_CSKY_GOTPC, VK_CSKY_GOTOFF, VK_CSKY_PLT, VK_CSKY_PLT_IMM18_BY4, VK_CSKY_TLSIE, VK_CSKY_TLSLE, VK_CSKY_TLSGD, VK_CSKY_TLSLDO, VK_CSKY_TLSLDM, VK_CSKY_Invalid } |
![]() | |
enum | ExprKind : uint8_t { Binary, Constant, SymbolRef, Unary, Target } |
Public Member Functions | |
VariantKind | getKind () const |
const MCExpr * | getSubExpr () const |
void | printImpl (raw_ostream &OS, const MCAsmInfo *MAI) const override |
bool | evaluateAsRelocatableImpl (MCValue &Res, const MCAsmLayout *Layout, const MCFixup *Fixup) const override |
void | visitUsedExpr (MCStreamer &Streamer) const override |
MCFragment * | findAssociatedFragment () const override |
void | fixELFSymbolsInTLSFixups (MCAssembler &Asm) const override |
![]() | |
virtual bool | isEqualTo (const MCExpr *x) const |
virtual bool | inlineAssignedExpr () const |
![]() | |
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 | evaluateAsAbsolute (int64_t &Res, const MCAsmLayout &Layout, const SectionAddrMap &Addrs) const |
Try to evaluate the expression to an absolute value. More... | |
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 | evaluateAsAbsolute (int64_t &Res, const MCAsmLayout &Layout) const |
bool | evaluateKnownAbsolute (int64_t &Res, const MCAsmLayout &Layout) const |
bool | evaluateAsRelocatable (MCValue &Res, const MCAsmLayout *Layout, const MCFixup *Fixup) const |
Try to evaluate the expression to a relocatable value, i.e. More... | |
bool | evaluateAsValue (MCValue &Res, const MCAsmLayout &Layout) const |
Try to evaluate the expression to the form (a - b + constant) where neither a nor b are variables. More... | |
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. More... | |
Static Public Member Functions | |
static const CSKYMCExpr * | create (const MCExpr *Expr, VariantKind Kind, MCContext &Ctx) |
static bool | classof (const MCExpr *E) |
static StringRef | getVariantKindName (VariantKind Kind) |
![]() | |
static bool | classof (const MCExpr *E) |
Additional Inherited Members | |
![]() | |
MCTargetExpr () | |
virtual | ~MCTargetExpr ()=default |
![]() | |
MCExpr (ExprKind Kind, SMLoc Loc, unsigned SubclassData=0) | |
bool | evaluateAsRelocatableImpl (MCValue &Res, const MCAssembler *Asm, const MCAsmLayout *Layout, const MCFixup *Fixup, const SectionAddrMap *Addrs, bool InSet) const |
unsigned | getSubclassData () const |
Definition at line 17 of file CSKYMCExpr.h.
Definition at line 19 of file CSKYMCExpr.h.
Definition at line 68 of file CSKYMCExpr.h.
References E, and llvm::MCExpr::Target.
|
static |
Definition at line 22 of file CSKYMCExpr.cpp.
Referenced by llvm::CSKYConstantPool::addEntry(), llvm::CSKYAsmPrinter::emitMachineConstantPoolValue(), and llvm::CSKYMCInstLower::lowerSymbolOperand().
|
overridevirtual |
Implements llvm::MCTargetExpr.
Definition at line 112 of file CSKYMCExpr.cpp.
References llvm::MCExpr::evaluateAsRelocatable(), Fixup, getKind(), getSubExpr(), llvm::MCValue::getSymA(), llvm::MCValue::getSymB(), VK_CSKY_GOT, VK_CSKY_GOT_IMM18_BY4, VK_CSKY_GOTOFF, VK_CSKY_GOTPC, VK_CSKY_PLT, VK_CSKY_PLT_IMM18_BY4, VK_CSKY_TLSGD, VK_CSKY_TLSIE, VK_CSKY_TLSLDM, VK_CSKY_TLSLDO, and VK_CSKY_TLSLE.
|
inlineoverridevirtual |
Implements llvm::MCTargetExpr.
Definition at line 62 of file CSKYMCExpr.h.
References llvm::MCExpr::findAssociatedFragment(), and getSubExpr().
|
overridevirtual |
Implements llvm::MCTargetExpr.
Definition at line 99 of file CSKYMCExpr.cpp.
References llvm::HexStyle::Asm, fixELFSymbolsInTLSFixupsImpl(), getKind(), getSubExpr(), VK_CSKY_TLSGD, VK_CSKY_TLSIE, and VK_CSKY_TLSLE.
|
inline |
Definition at line 51 of file CSKYMCExpr.h.
Referenced by llvm::CSKYConstantPool::addEntry(), evaluateAsRelocatableImpl(), fixELFSymbolsInTLSFixups(), llvm::CSKYMCCodeEmitter::getTargetFixup(), and printImpl().
Definition at line 54 of file CSKYMCExpr.h.
Referenced by llvm::CSKYConstantPool::addEntry(), evaluateAsRelocatableImpl(), findAssociatedFragment(), fixELFSymbolsInTLSFixups(), and visitUsedExpr().
|
static |
Definition at line 27 of file CSKYMCExpr.cpp.
References llvm_unreachable, VK_CSKY_ADDR, VK_CSKY_ADDR_HI16, VK_CSKY_ADDR_LO16, VK_CSKY_GOT, VK_CSKY_GOT_IMM18_BY4, VK_CSKY_GOTOFF, VK_CSKY_GOTPC, VK_CSKY_None, VK_CSKY_PLT, VK_CSKY_PLT_IMM18_BY4, VK_CSKY_TLSGD, VK_CSKY_TLSIE, VK_CSKY_TLSLDM, VK_CSKY_TLSLDO, and VK_CSKY_TLSLE.
Referenced by printImpl().
|
overridevirtual |
Implements llvm::MCTargetExpr.
Definition at line 65 of file CSKYMCExpr.cpp.
References getKind(), getVariantKindName(), and llvm::MCExpr::print().
|
overridevirtual |
Implements llvm::MCTargetExpr.
Definition at line 61 of file CSKYMCExpr.cpp.
References getSubExpr(), and llvm::MCStreamer::visitUsedExpr().