LLVM  6.0.0svn
Public Types | Public Member Functions | Static Public Member Functions | List of all members
llvm::MipsMCExpr Class Reference

#include "Target/Mips/MCTargetDesc/MipsMCExpr.h"

Inheritance diagram for llvm::MipsMCExpr:
Inheritance graph
[legend]
Collaboration diagram for llvm::MipsMCExpr:
Collaboration graph
[legend]

Public Types

enum  MipsExprKind {
  MEK_None, MEK_CALL_HI16, MEK_CALL_LO16, 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 MCExprgetSubExpr () 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
 
MCFragmentfindAssociatedFragment () const override
 
void fixELFSymbolsInTLSFixups (MCAssembler &Asm) const override
 
bool isGpOff (MipsExprKind &Kind) const
 
bool isGpOff () const
 
- Public Member Functions inherited from llvm::MCExpr
 MCExpr (const MCExpr &)=delete
 
MCExproperator= (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 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...
 
MCFragmentfindAssociatedFragment () 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 MipsMCExprcreate (MipsExprKind Kind, const MCExpr *Expr, MCContext &Ctx)
 
static const MipsMCExprcreateGpOff (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
 

Detailed Description

Definition at line 19 of file MipsMCExpr.h.

Member Enumeration Documentation

◆ MipsExprKind

Enumerator
MEK_None 
MEK_CALL_HI16 
MEK_CALL_LO16 
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 

Definition at line 21 of file MipsMCExpr.h.

Member Function Documentation

◆ classof()

static bool llvm::MipsMCExpr::classof ( const MCExpr E)
inlinestatic

Definition at line 80 of file MipsMCExpr.h.

References llvm::MCExpr::getKind(), isGpOff(), and llvm::MCExpr::Target.

◆ create()

const MipsMCExpr * MipsMCExpr::create ( MipsMCExpr::MipsExprKind  Kind,
const MCExpr Expr,
MCContext Ctx 
)
static

◆ createGpOff()

const MipsMCExpr * MipsMCExpr::createGpOff ( MipsMCExpr::MipsExprKind  Kind,
const MCExpr Expr,
MCContext Ctx 
)
static

◆ evaluateAsRelocatableImpl()

bool MipsMCExpr::evaluateAsRelocatableImpl ( MCValue Res,
const MCAsmLayout Layout,
const MCFixup Fixup 
) const
overridevirtual

◆ findAssociatedFragment()

MCFragment* llvm::MipsMCExpr::findAssociatedFragment ( ) const
inlineoverridevirtual

◆ fixELFSymbolsInTLSFixups()

void MipsMCExpr::fixELFSymbolsInTLSFixups ( MCAssembler Asm) const
overridevirtual

◆ getKind()

MipsExprKind llvm::MipsMCExpr::getKind ( ) const
inline

Get the kind of this expression.

Definition at line 64 of file MipsMCExpr.h.

Referenced by evaluateAsRelocatableImpl(), fixELFSymbolsInTLSFixups(), llvm::MipsMCCodeEmitter::getExprOpValue(), and isGpOff().

◆ getSubExpr()

const MCExpr* llvm::MipsMCExpr::getSubExpr ( ) const
inline

◆ isGpOff() [1/2]

bool MipsMCExpr::isGpOff ( MipsExprKind Kind) const

Definition at line 281 of file MipsMCExpr.cpp.

References getKind(), getSubExpr(), MEK_GPREL, MEK_HI, MEK_LO, and MEK_NEG.

Referenced by llvm::MipsMCCodeEmitter::getExprOpValue().

◆ isGpOff() [2/2]

bool llvm::MipsMCExpr::isGpOff ( ) const
inline

Definition at line 85 of file MipsMCExpr.h.

Referenced by classof(), and evaluateAsRelocatableImpl().

◆ printImpl()

void MipsMCExpr::printImpl ( raw_ostream OS,
const MCAsmInfo MAI 
) const
overridevirtual

◆ visitUsedExpr()

void MipsMCExpr::visitUsedExpr ( MCStreamer Streamer) const
overridevirtual

Implements llvm::MCTargetExpr.

Definition at line 211 of file MipsMCExpr.cpp.

References getSubExpr(), and llvm::MCStreamer::visitUsedExpr().

Referenced by getSubExpr().


The documentation for this class was generated from the following files: