class MCExpr

Declaration

class MCExpr { /* full declaration omitted */ };

Description

Base class for the full range of assembler expressions which are needed for parsing.

Declared at: llvm/include/llvm/MC/MCExpr.h:35

Member Variables

private llvm::MCExpr::ExprKind Kind
private unsigned int SubclassData
Field reserved for use by MCExpr subclasses.
private llvm::SMLoc Loc
private static const unsigned int NumSubclassDataBits = 24

Method Overview

  • protected MCExpr(llvm::MCExpr::ExprKind Kind, llvm::SMLoc Loc, unsigned int SubclassData = 0)
  • public MCExpr(const llvm::MCExpr &)
  • public void dump() const
  • public bool evaluateAsAbsolute(int64_t & Res, const llvm::MCAsmLayout & Layout, const llvm::SectionAddrMap & Addrs) const
  • public bool evaluateAsAbsolute(int64_t & Res, const llvm::MCAsmLayout & Layout) const
  • public bool evaluateAsAbsolute(int64_t & Res, const llvm::MCAssembler * Asm) const
  • public bool evaluateAsAbsolute(int64_t & Res, const llvm::MCAssembler & Asm) const
  • public bool evaluateAsAbsolute(int64_t & Res) const
  • private bool evaluateAsAbsolute(int64_t & Res, const llvm::MCAssembler * Asm, const llvm::MCAsmLayout * Layout, const llvm::SectionAddrMap * Addrs, bool InSet) const
  • public bool evaluateAsRelocatable(llvm::MCValue & Res, const llvm::MCAsmLayout * Layout, const llvm::MCFixup * Fixup) const
  • protected bool evaluateAsRelocatableImpl(llvm::MCValue & Res, const llvm::MCAssembler * Asm, const llvm::MCAsmLayout * Layout, const llvm::MCFixup * Fixup, const llvm::SectionAddrMap * Addrs, bool InSet) const
  • public bool evaluateAsValue(llvm::MCValue & Res, const llvm::MCAsmLayout & Layout) const
  • public bool evaluateKnownAbsolute(int64_t & Res, const llvm::MCAsmLayout & Layout) const
  • public llvm::MCFragment * findAssociatedFragment() const
  • public llvm::MCExpr::ExprKind getKind() const
  • public llvm::SMLoc getLoc() const
  • protected unsigned int getSubclassData() const
  • public void print(llvm::raw_ostream & OS, const llvm::MCAsmInfo * MAI, bool InParens = false) const

Methods

MCExpr(llvm::MCExpr::ExprKind Kind,
       llvm::SMLoc Loc,
       unsigned int SubclassData = 0)

Declared at: llvm/include/llvm/MC/MCExpr.h:61

Parameters

llvm::MCExpr::ExprKind Kind
llvm::SMLoc Loc
unsigned int SubclassData = 0

MCExpr(const llvm::MCExpr&)

Declared at: llvm/include/llvm/MC/MCExpr.h:75

Parameters

const llvm::MCExpr&

void dump() const

Declared at: llvm/include/llvm/MC/MCExpr.h:90

bool evaluateAsAbsolute(
    int64_t& Res,
    const llvm::MCAsmLayout& Layout,
    const llvm::SectionAddrMap& Addrs) const

Description

Try to evaluate the expression to an absolute value.

Declared at: llvm/include/llvm/MC/MCExpr.h:103

Parameters

int64_t& Res
- The absolute value, if evaluation succeeds.
const llvm::MCAsmLayout& Layout
- The assembler layout object to use for evaluating symbol values. If not given, then only non-symbolic expressions will be evaluated.
const llvm::SectionAddrMap& Addrs

Returns

- True on success.

bool evaluateAsAbsolute(
    int64_t& Res,
    const llvm::MCAsmLayout& Layout) const

Declared at: llvm/include/llvm/MC/MCExpr.h:108

Parameters

int64_t& Res
const llvm::MCAsmLayout& Layout

bool evaluateAsAbsolute(
    int64_t& Res,
    const llvm::MCAssembler* Asm) const

Declared at: llvm/include/llvm/MC/MCExpr.h:107

Parameters

int64_t& Res
const llvm::MCAssembler* Asm

bool evaluateAsAbsolute(
    int64_t& Res,
    const llvm::MCAssembler& Asm) const

Declared at: llvm/include/llvm/MC/MCExpr.h:106

Parameters

int64_t& Res
const llvm::MCAssembler& Asm

bool evaluateAsAbsolute(int64_t& Res) const

Declared at: llvm/include/llvm/MC/MCExpr.h:105

Parameters

int64_t& Res

bool evaluateAsAbsolute(
    int64_t& Res,
    const llvm::MCAssembler* Asm,
    const llvm::MCAsmLayout* Layout,
    const llvm::SectionAddrMap* Addrs,
    bool InSet) const

Declared at: llvm/include/llvm/MC/MCExpr.h:56

Parameters

int64_t& Res
const llvm::MCAssembler* Asm
const llvm::MCAsmLayout* Layout
const llvm::SectionAddrMap* Addrs
bool InSet

bool evaluateAsRelocatable(
    llvm::MCValue& Res,
    const llvm::MCAsmLayout* Layout,
    const llvm::MCFixup* Fixup) const

Description

Try to evaluate the expression to a relocatable value, i.e. an expression of the fixed form (a - b + constant).

Declared at: llvm/include/llvm/MC/MCExpr.h:119

Parameters

llvm::MCValue& Res
- The relocatable value, if evaluation succeeds.
const llvm::MCAsmLayout* Layout
- The assembler layout object to use for evaluating values.
const llvm::MCFixup* Fixup
- The Fixup object if available.

Returns

- True on success.

bool evaluateAsRelocatableImpl(
    llvm::MCValue& Res,
    const llvm::MCAssembler* Asm,
    const llvm::MCAsmLayout* Layout,
    const llvm::MCFixup* Fixup,
    const llvm::SectionAddrMap* Addrs,
    bool InSet) const

Declared at: llvm/include/llvm/MC/MCExpr.h:67

Parameters

llvm::MCValue& Res
const llvm::MCAssembler* Asm
const llvm::MCAsmLayout* Layout
const llvm::MCFixup* Fixup
const llvm::SectionAddrMap* Addrs
bool InSet

bool evaluateAsValue(
    llvm::MCValue& Res,
    const llvm::MCAsmLayout& Layout) const

Description

Try to evaluate the expression to the form (a - b + constant) where neither a nor b are variables. This is a more aggressive variant of evaluateAsRelocatable. The intended use is for when relocations are not available, like the .size directive.

Declared at: llvm/include/llvm/MC/MCExpr.h:127

Parameters

llvm::MCValue& Res
const llvm::MCAsmLayout& Layout

bool evaluateKnownAbsolute(
    int64_t& Res,
    const llvm::MCAsmLayout& Layout) const

Declared at: llvm/include/llvm/MC/MCExpr.h:110

Parameters

int64_t& Res
const llvm::MCAsmLayout& Layout

llvm::MCFragment* findAssociatedFragment() const

Description

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.

Declared at: llvm/include/llvm/MC/MCExpr.h:133

llvm::MCExpr::ExprKind getKind() const

Description

@ {

Declared at: llvm/include/llvm/MC/MCExpr.h:81

llvm::SMLoc getLoc() const

Declared at: llvm/include/llvm/MC/MCExpr.h:82

unsigned int getSubclassData() const

Declared at: llvm/include/llvm/MC/MCExpr.h:72

void print(llvm::raw_ostream& OS,
           const llvm::MCAsmInfo* MAI,
           bool InParens = false) const

Description

@ } @ {

Declared at: llvm/include/llvm/MC/MCExpr.h:88

Parameters

llvm::raw_ostream& OS
const llvm::MCAsmInfo* MAI
bool InParens = false