LLVM
8.0.1
|
#include "Target/Mips/MCTargetDesc/MipsMCExpr.h"
Public Types | |
enum | MipsExprKind { MEK_None, MEK_CALL_HI16, MEK_CALL_LO16, MEK_DTPREL, MEK_DTPREL_HI, MEK_DTPREL_LO, MEK_GOT, MEK_GOTTPREL, MEK_GOT_CALL, MEK_GOT_DISP, MEK_GOT_HI16, MEK_GOT_LO16, MEK_GOT_OFST, MEK_GOT_PAGE, MEK_GPREL, MEK_HI, MEK_HIGHER, MEK_HIGHEST, MEK_LO, MEK_NEG, MEK_PCREL_HI16, MEK_PCREL_LO16, MEK_TLSGD, MEK_TLSLDM, MEK_TPREL_HI, MEK_TPREL_LO, MEK_Special } |
Public Types inherited from llvm::MCExpr | |
enum | ExprKind { Binary, Constant, SymbolRef, Unary, Target } |
Public Member Functions | |
MipsExprKind | getKind () const |
Get the kind of this expression. More... | |
const MCExpr * | getSubExpr () const |
Get the child of this expression. More... | |
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 |
bool | isGpOff (MipsExprKind &Kind) const |
bool | isGpOff () const |
Public Member Functions inherited from llvm::MCTargetExpr | |
virtual bool | isEqualTo (const MCExpr *x) const |
virtual bool | inlineAssignedExpr () const |
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 | 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 MipsMCExpr * | create (MipsExprKind Kind, const MCExpr *Expr, MCContext &Ctx) |
static const MipsMCExpr * | createGpOff (MipsExprKind Kind, const MCExpr *Expr, MCContext &Ctx) |
static bool | classof (const MCExpr *E) |
Static Public Member Functions inherited from llvm::MCTargetExpr | |
static bool | classof (const MCExpr *E) |
Additional Inherited Members | |
Protected Member Functions inherited from llvm::MCTargetExpr | |
MCTargetExpr () | |
virtual | ~MCTargetExpr ()=default |
Protected Member Functions inherited from llvm::MCExpr | |
MCExpr (ExprKind Kind, SMLoc Loc) | |
bool | evaluateAsRelocatableImpl (MCValue &Res, const MCAssembler *Asm, const MCAsmLayout *Layout, const MCFixup *Fixup, const SectionAddrMap *Addrs, bool InSet) const |
Definition at line 19 of file MipsMCExpr.h.
Definition at line 21 of file MipsMCExpr.h.
Definition at line 81 of file MipsMCExpr.h.
References llvm::MCExpr::getKind(), isGpOff(), and llvm::MCExpr::Target.
|
static |
Definition at line 28 of file MipsMCExpr.cpp.
Referenced by countMCSymbolRefExpr(), createGpOff(), llvm::MipsTargetELFStreamer::emitDirectiveCpLoad(), llvm::MipsTargetELFStreamer::emitDirectiveCpsetup(), llvm::MipsTargetObjectFile::getDebugThreadLocalSymbol(), llvm::MipsMCInstLower::Initialize(), isShiftedUIntAtAnyPosition(), llvm::MipsMCInstLower::LowerOperand(), and nextReg().
|
static |
Definition at line 33 of file MipsMCExpr.cpp.
References create(), MEK_GPREL, and MEK_NEG.
Referenced by llvm::MipsTargetELFStreamer::emitDirectiveCpsetup(), and llvm::MipsMCInstLower::Initialize().
|
overridevirtual |
Implements llvm::MCTargetExpr.
Definition at line 134 of file MipsMCExpr.cpp.
References llvm::MCExpr::evaluateAsRelocatable(), llvm::MCValue::get(), llvm::MCValue::getConstant(), getKind(), llvm::MCValue::getRefKind(), getSubExpr(), llvm::MCValue::getSymA(), llvm::MCValue::getSymB(), llvm::MCValue::isAbsolute(), isGpOff(), llvm_unreachable, MEK_CALL_HI16, MEK_CALL_LO16, MEK_DTPREL, MEK_DTPREL_HI, MEK_DTPREL_LO, MEK_GOT, MEK_GOT_CALL, MEK_GOT_DISP, MEK_GOT_HI16, MEK_GOT_LO16, MEK_GOT_OFST, MEK_GOT_PAGE, MEK_GOTTPREL, MEK_GPREL, MEK_HI, MEK_HIGHER, MEK_HIGHEST, MEK_LO, MEK_NEG, MEK_None, MEK_PCREL_HI16, MEK_PCREL_LO16, MEK_Special, MEK_TLSGD, MEK_TLSLDM, MEK_TPREL_HI, MEK_TPREL_LO, and llvm::MCSymbolRefExpr::VK_None.
Referenced by getSubExpr().
|
inlineoverridevirtual |
Implements llvm::MCTargetExpr.
Definition at line 75 of file MipsMCExpr.h.
References llvm::HexStyle::Asm, llvm::MCExpr::findAssociatedFragment(), fixELFSymbolsInTLSFixups(), and getSubExpr().
|
overridevirtual |
Implements llvm::MCTargetExpr.
Definition at line 250 of file MipsMCExpr.cpp.
References E, fixELFSymbolsInTLSFixupsImpl(), getKind(), getSubExpr(), llvm_unreachable, MEK_CALL_HI16, MEK_CALL_LO16, MEK_DTPREL, MEK_DTPREL_HI, MEK_DTPREL_LO, MEK_GOT, MEK_GOT_CALL, MEK_GOT_DISP, MEK_GOT_HI16, MEK_GOT_LO16, MEK_GOT_OFST, MEK_GOT_PAGE, MEK_GOTTPREL, MEK_GPREL, MEK_HI, MEK_HIGHER, MEK_HIGHEST, MEK_LO, MEK_NEG, MEK_None, MEK_PCREL_HI16, MEK_PCREL_LO16, MEK_Special, MEK_TLSGD, MEK_TLSLDM, MEK_TPREL_HI, and MEK_TPREL_LO.
Referenced by findAssociatedFragment().
|
inline |
Get the kind of this expression.
Definition at line 65 of file MipsMCExpr.h.
Referenced by evaluateAsRelocatableImpl(), fixELFSymbolsInTLSFixups(), llvm::MipsMCCodeEmitter::getExprOpValue(), and isGpOff().
Get the child of this expression.
Definition at line 68 of file MipsMCExpr.h.
References evaluateAsRelocatableImpl(), Fixup, printImpl(), and visitUsedExpr().
Referenced by evaluateAsRelocatableImpl(), findAssociatedFragment(), fixELFSymbolsInTLSFixups(), fixELFSymbolsInTLSFixupsImpl(), llvm::MipsMCCodeEmitter::getExprOpValue(), isGpOff(), printImpl(), and visitUsedExpr().
bool MipsMCExpr::isGpOff | ( | MipsExprKind & | Kind | ) | const |
Definition at line 291 of file MipsMCExpr.cpp.
References getKind(), getSubExpr(), MEK_GPREL, MEK_HI, MEK_LO, and MEK_NEG.
Referenced by llvm::MipsMCCodeEmitter::getExprOpValue().
|
inline |
Definition at line 86 of file MipsMCExpr.h.
Referenced by classof(), and evaluateAsRelocatableImpl().
|
overridevirtual |
Implements llvm::MCTargetExpr.
Definition at line 38 of file MipsMCExpr.cpp.
References getSubExpr(), llvm_unreachable, MEK_CALL_HI16, MEK_CALL_LO16, MEK_DTPREL, MEK_DTPREL_HI, MEK_DTPREL_LO, MEK_GOT, MEK_GOT_CALL, MEK_GOT_DISP, MEK_GOT_HI16, MEK_GOT_LO16, MEK_GOT_OFST, MEK_GOT_PAGE, MEK_GOTTPREL, MEK_GPREL, MEK_HI, MEK_HIGHER, MEK_HIGHEST, MEK_LO, MEK_NEG, MEK_None, MEK_PCREL_HI16, MEK_PCREL_LO16, MEK_Special, MEK_TLSGD, MEK_TLSLDM, MEK_TPREL_HI, MEK_TPREL_LO, and llvm::MCExpr::print().
Referenced by getSubExpr().
|
overridevirtual |
Implements llvm::MCTargetExpr.
Definition at line 220 of file MipsMCExpr.cpp.
References getSubExpr(), and llvm::MCStreamer::visitUsedExpr().
Referenced by getSubExpr().