LLVM 17.0.0git
|
Binary assembler expressions. More...
#include "llvm/MC/MCExpr.h"
Public Types | |
enum | Opcode { Add , And , Div , EQ , GT , GTE , LAnd , LOr , LT , LTE , Mod , Mul , NE , Or , OrNot , Shl , AShr , LShr , Sub , Xor } |
![]() | |
enum | ExprKind : uint8_t { Binary , Constant , SymbolRef , Unary , Target } |
Public Member Functions | |
Accessors | |
Opcode | getOpcode () const |
Get the kind of this binary expression. | |
const MCExpr * | getLHS () const |
Get the left-hand side expression of the binary operator. | |
const MCExpr * | getRHS () const |
Get the right-hand side expression of the binary operator. | |
![]() | |
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. | |
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. | |
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. | |
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. | |
Additional Inherited Members | |
![]() | |
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 635 of file MCExpr.h.
References llvm::MCExpr::Binary, and E.
|
static |
Definition at line 183 of file MCExpr.cpp.
Referenced by buildSymbolDiff(), computeLabelDiff(), createAdd(), createAnd(), createAShr(), createDiv(), createEQ(), createGT(), createGTE(), createLAnd(), createLOr(), createLShr(), createLT(), createLTE(), createMod(), createMul(), createNE(), createOr(), createShl(), createSub(), createXor(), makeEndMinusStartExpr(), and makeStartPlusIntExpr().
|
inlinestatic |
Definition at line 525 of file MCExpr.h.
References Add, create(), LHS, and RHS.
Referenced by createPCXRelExprOp(), llvm::MCWinCOFFStreamer::emitCOFFImgRel32(), llvm::MCWinCOFFStreamer::emitCOFFSecRel32(), llvm::ARMAsmPrinter::emitInstruction(), llvm::SystemZAsmPrinter::emitInstruction(), llvm::X86AsmPrinter::emitInstruction(), llvm::ARMAsmPrinter::emitJumpTableAddrs(), llvm::ARMAsmPrinter::emitJumpTableTBInst(), llvm::AsmPrinter::emitLabelPlusOffset(), llvm::ARMAsmPrinter::emitMachineConstantPoolValue(), EmitSymbolRefWithOfs(), llvm::AsmPrinter::emitXRayTable(), llvm::CodeViewContext::encodeDefRange(), llvm::MipsMCCodeEmitter::getBranchTarget21OpValue(), llvm::MipsMCCodeEmitter::getBranchTarget21OpValueMM(), llvm::MipsMCCodeEmitter::getBranchTarget26OpValue(), llvm::MipsMCCodeEmitter::getBranchTarget26OpValueMM(), llvm::MipsMCCodeEmitter::getBranchTargetOpValue(), llvm::MipsMCCodeEmitter::getBranchTargetOpValue1SImm16(), llvm::MipsMCCodeEmitter::getBranchTargetOpValueLsl2MMR6(), llvm::MipsMCCodeEmitter::getBranchTargetOpValueMMR6(), llvm::MipsTargetObjectFile::getDebugThreadLocalSymbol(), llvm::SystemZMCInstLower::getExpr(), llvm::X86_64MCAsmInfoDarwin::getExprForPersonalitySymbol(), llvm::TargetLoweringObjectFileMachO::getIndirectSymViaGOTPCRel(), llvm::X86_64MachoTargetObjectFile::getIndirectSymViaGOTPCRel(), GetSymbolRef(), llvm::X86_64MachoTargetObjectFile::getTTypeGlobalReference(), llvm::AsmPrinter::lowerConstant(), AMDGPUMCInstLower::lowerOperand(), LowerSymbolOperand(), llvm::LanaiMCInstLower::LowerSymbolOperand(), llvm::M68kMCInstLower::LowerSymbolOperand(), llvm::MSP430MCInstLower::LowerSymbolOperand(), lowerSymbolOperand(), llvm::AVRMCInstLower::lowerSymbolOperand(), llvm::AArch64MCInstLower::lowerSymbolOperandCOFF(), llvm::AArch64MCInstLower::lowerSymbolOperandDarwin(), llvm::AArch64MCInstLower::lowerSymbolOperandELF(), llvm::MCExternalSymbolizer::tryAddingSymbolicOperand(), and llvm::AArch64ExternalSymbolizer::tryAddingSymbolicOperand().
|
inlinestatic |
Definition at line 535 of file MCExpr.h.
References create(), Div, LHS, and RHS.
Referenced by llvm::ARMAsmPrinter::emitJumpTableTBInst(), and GetSubDivExpr().
|
inlinestatic |
Definition at line 610 of file MCExpr.h.
References create(), LHS, RHS, and Sub.
Referenced by llvm::CSKYConstantPool::addEntry(), addNegOperand(), createPCXRelExprOp(), EmitAbsDifference(), llvm::MCStreamer::emitAbsoluteSymbolDiff(), llvm::MCStreamer::emitAbsoluteSymbolDiffAsULEB128(), llvm::AMDGPUTargetELFStreamer::EmitAmdhsaKernelDescriptor(), llvm::MipsTargetELFStreamer::emitDirectiveEnd(), llvm::EHStreamer::emitExceptionTable(), llvm::AsmPrinter::emitFunctionBody(), llvm::AMDGPUTargetELFStreamer::EmitHSAMetadata(), llvm::ARMAsmPrinter::emitInstruction(), llvm::X86AsmPrinter::emitInstruction(), llvm::AMDGPUTargetELFStreamer::EmitISAVersion(), llvm::ARMAsmPrinter::emitJumpTableAddrs(), llvm::AsmPrinter::emitJumpTableInfo(), llvm::ARMAsmPrinter::emitJumpTableTBInst(), llvm::X86AsmPrinter::emitKCFITypeId(), llvm::ARMAsmPrinter::emitMachineConstantPoolValue(), llvm::CSKYAsmPrinter::emitMachineConstantPoolValue(), EmitSymbolRefWithOfs(), llvm::AsmPrinter::emitXRayTable(), llvm::WasmException::endFunction(), llvm::MCAsmInfo::getExprForFDESymbol(), llvm::AArch64MCAsmInfoDarwin::getExprForPersonalitySymbol(), llvm::TargetLoweringObjectFileMachO::getIndirectSymViaGOTPCRel(), llvm::AArch64_MachoTargetObjectFile::getIndirectSymViaGOTPCRel(), GetOptionalAbsDifference(), GetSubDivExpr(), GetSymbolRef(), llvm::AArch64_MachoTargetObjectFile::getTTypeGlobalReference(), llvm::TargetLoweringObjectFile::getTTypeReference(), llvm::HexagonAsmPrinter::HexagonProcessInstruction(), llvm::SIInstrInfo::insertIndirectBranch(), llvm::AsmPrinter::lowerConstant(), llvm::VETargetLowering::LowerCustomJumpTableEntry(), llvm::TargetLoweringObjectFileELF::lowerRelativeReference(), llvm::TargetLoweringObjectFileWasm::lowerRelativeReference(), llvm::FaultMaps::recordFaultingOp(), llvm::MCExternalSymbolizer::tryAddingSymbolicOperand(), and llvm::AArch64ExternalSymbolizer::tryAddingSymbolicOperand().
Get the left-hand side expression of the binary operator.
Definition at line 628 of file MCExpr.h.
References LHS.
Referenced by llvm::MCExpr::evaluateAsRelocatableImpl(), EvaluateCRExpr(), llvm::MCExpr::findAssociatedFragment(), fixELFSymbolsInTLSFixupsImpl(), llvm::PPCMCCodeEmitter::getDispRI34PCRelEncoding(), hasGOTReference(), isEvaluated(), llvm::MCParserUtils::isSymbolUsedInExpression(), llvm::MCExpr::print(), llvm::RISCVAsmBackend::relaxDwarfCFA(), llvm::RISCVAsmBackend::relaxDwarfLineAddr(), startsWithGlobalOffsetTable(), and llvm::MCStreamer::visitUsedExpr().
|
inline |
Get the kind of this binary expression.
Definition at line 625 of file MCExpr.h.
References llvm::MCExpr::getSubclassData().
Referenced by llvm::MCExpr::evaluateAsRelocatableImpl(), EvaluateCRExpr(), llvm::MCExpr::findAssociatedFragment(), llvm::PPCMCCodeEmitter::getDispRI34PCRelEncoding(), and llvm::MCExpr::print().
Get the right-hand side expression of the binary operator.
Definition at line 631 of file MCExpr.h.
References RHS.
Referenced by llvm::MCExpr::evaluateAsRelocatableImpl(), EvaluateCRExpr(), llvm::MCExpr::findAssociatedFragment(), fixELFSymbolsInTLSFixupsImpl(), llvm::PPCMCCodeEmitter::getDispRI34PCRelEncoding(), hasGOTReference(), isEvaluated(), llvm::MCParserUtils::isSymbolUsedInExpression(), llvm::MCExpr::print(), llvm::RISCVAsmBackend::relaxDwarfCFA(), llvm::RISCVAsmBackend::relaxDwarfLineAddr(), startsWithGlobalOffsetTable(), and llvm::MCStreamer::visitUsedExpr().