clang 17.0.0git
Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | Friends | List of all members
clang::interp::ByteCodeExprGen< Emitter > Class Template Reference

Compilation context for expressions. More...

#include "/home/buildbot/as-worker-4/publish-doxygen-docs/llvm-project/clang/lib/AST/Interp/ByteCodeExprGen.h"

Inheritance diagram for clang::interp::ByteCodeExprGen< Emitter >:
Inheritance graph
[legend]
Collaboration diagram for clang::interp::ByteCodeExprGen< Emitter >:
Collaboration graph
[legend]

Public Member Functions

template<typename... Tys>
 ByteCodeExprGen (Context &Ctx, Program &P, Tys &&... Args)
 Initializes the compiler and the backend emitter.
 
bool VisitCastExpr (const CastExpr *E)
 
bool VisitIntegerLiteral (const IntegerLiteral *E)
 
bool VisitFloatingLiteral (const FloatingLiteral *E)
 
bool VisitParenExpr (const ParenExpr *E)
 
bool VisitBinaryOperator (const BinaryOperator *E)
 
bool VisitLogicalBinOp (const BinaryOperator *E)
 
bool VisitPointerArithBinOp (const BinaryOperator *E)
 Perform addition/subtraction of a pointer and an integer or subtraction of two pointers.
 
bool VisitCXXDefaultArgExpr (const CXXDefaultArgExpr *E)
 
bool VisitCallExpr (const CallExpr *E)
 
bool VisitBuiltinCallExpr (const CallExpr *E)
 
bool VisitCXXMemberCallExpr (const CXXMemberCallExpr *E)
 
bool VisitCXXDefaultInitExpr (const CXXDefaultInitExpr *E)
 
bool VisitCXXBoolLiteralExpr (const CXXBoolLiteralExpr *E)
 
bool VisitCXXNullPtrLiteralExpr (const CXXNullPtrLiteralExpr *E)
 
bool VisitCXXThisExpr (const CXXThisExpr *E)
 
bool VisitUnaryOperator (const UnaryOperator *E)
 
bool VisitDeclRefExpr (const DeclRefExpr *E)
 
bool VisitImplicitValueInitExpr (const ImplicitValueInitExpr *E)
 
bool VisitSubstNonTypeTemplateParmExpr (const SubstNonTypeTemplateParmExpr *E)
 
bool VisitArraySubscriptExpr (const ArraySubscriptExpr *E)
 
bool VisitInitListExpr (const InitListExpr *E)
 
bool VisitConstantExpr (const ConstantExpr *E)
 
bool VisitUnaryExprOrTypeTraitExpr (const UnaryExprOrTypeTraitExpr *E)
 
bool VisitMemberExpr (const MemberExpr *E)
 
bool VisitArrayInitIndexExpr (const ArrayInitIndexExpr *E)
 
bool VisitOpaqueValueExpr (const OpaqueValueExpr *E)
 
bool VisitAbstractConditionalOperator (const AbstractConditionalOperator *E)
 
bool VisitStringLiteral (const StringLiteral *E)
 
bool VisitCharacterLiteral (const CharacterLiteral *E)
 
bool VisitCompoundAssignOperator (const CompoundAssignOperator *E)
 
bool VisitFloatCompoundAssignOperator (const CompoundAssignOperator *E)
 
bool VisitPointerCompoundAssignOperator (const CompoundAssignOperator *E)
 
bool VisitExprWithCleanups (const ExprWithCleanups *E)
 
bool VisitMaterializeTemporaryExpr (const MaterializeTemporaryExpr *E)
 
bool VisitCompoundLiteralExpr (const CompoundLiteralExpr *E)
 
- Public Member Functions inherited from clang::StmtVisitorBase< Ptr, ImplClass, RetTy, ParamTys >
RetTy Visit (PTR(Stmt) S, ParamTys... P)
 
 BINOP_FALLBACK (PtrMemD) BINOP_FALLBACK(PtrMemI) BINOP_FALLBACK(Mul) BINOP_FALLBACK(Div) BINOP_FALLBACK(Rem) BINOP_FALLBACK(Add) BINOP_FALLBACK(Sub) BINOP_FALLBACK(Shl) BINOP_FALLBACK(LT) BINOP_FALLBACK(GT) BINOP_FALLBACK(LE) BINOP_FALLBACK(GE) BINOP_FALLBACK(EQ) BINOP_FALLBACK(NE) BINOP_FALLBACK(And) BINOP_FALLBACK(Xor) BINOP_FALLBACK(Or) BINOP_FALLBACK(LAnd) BINOP_FALLBACK(LOr) CAO_FALLBACK(MulAssign) CAO_FALLBACK(DivAssign) CAO_FALLBACK(RemAssign) CAO_FALLBACK(AddAssign) CAO_FALLBACK(SubAssign) CAO_FALLBACK(ShlAssign) CAO_FALLBACK(ShrAssign) CAO_FALLBACK(AndAssign) CAO_FALLBACK(OrAssign) UNARYOP_FALLBACK(PostInc) UNARYOP_FALLBACK(PostDec) UNARYOP_FALLBACK(PreInc) UNARYOP_FALLBACK(PreDec) UNARYOP_FALLBACK(AddrOf) UNARYOP_FALLBACK(Deref) UNARYOP_FALLBACK(Plus) UNARYOP_FALLBACK(Minus) UNARYOP_FALLBACK(Not) UNARYOP_FALLBACK(LNot) UNARYOP_FALLBACK(Real) UNARYOP_FALLBACK(Imag) UNARYOP_FALLBACK(Extension) UNARYOP_FALLBACK(Coawait) RetTy VisitStmt(PTR(Stmt) Node
 

Protected Types

using LabelTy = typename Emitter::LabelTy
 
using AddrTy = typename Emitter::AddrTy
 

Protected Member Functions

bool visitExpr (const Expr *E) override
 
bool visitDecl (const VarDecl *VD) override
 Toplevel visitDecl().
 
void emitCleanup ()
 Emits scope cleanup instructions.
 
const RecordTypegetRecordTy (QualType Ty)
 Returns a record type from a record or pointer type.
 
RecordgetRecord (QualType Ty)
 Returns a record from a record or pointer type.
 
RecordgetRecord (const RecordDecl *RD)
 
const FunctiongetFunction (const FunctionDecl *FD)
 
std::optional< PrimTypeclassify (const Expr *E) const
 Classifies a type.
 
std::optional< PrimTypeclassify (QualType Ty) const
 
PrimType classifyPrim (QualType Ty) const
 Classifies a known primitive type.
 
bool discard (const Expr *E)
 Evaluates an expression for side effects and discards the result.
 
bool visit (const Expr *E)
 Evaluates an expression and places result on stack.
 
bool visitInitializer (const Expr *E)
 Compiles an initializer.
 
bool visitArrayInitializer (const Expr *Initializer)
 Compiles an array initializer.
 
bool visitRecordInitializer (const Expr *Initializer)
 Compiles a record initializer.
 
bool visitVarDecl (const VarDecl *VD)
 Creates and initializes a variable from the given decl.
 
bool visitBool (const Expr *E)
 Visits an expression and converts it to a boolean.
 
bool visitLocalInitializer (const Expr *Init, unsigned I)
 Visits an initializer for a local.
 
bool visitGlobalInitializer (const Expr *Init, unsigned I)
 Visits an initializer for a global.
 
bool visitThisInitializer (const Expr *I)
 Visits a delegated initializer.
 
unsigned allocateLocalPrimitive (DeclTy &&Decl, PrimType Ty, bool IsMutable, bool IsExtended=false)
 Creates a local primitive value.
 
std::optional< unsignedallocateLocal (DeclTy &&Decl, bool IsExtended=false)
 Allocates a space storing a local given its type.
 

Protected Attributes

ContextCtx
 Current compilation context.
 
ProgramP
 Program to link to.
 
llvm::DenseMap< const ValueDecl *, Scope::LocalLocals
 Variable to storage mapping.
 
llvm::DenseMap< const OpaqueValueExpr *, unsignedOpaqueExprs
 OpaqueValueExpr to location mapping.
 
VariableScope< Emitter > * VarScope = nullptr
 Current scope.
 
std::optional< uint64_t > ArrayIndex
 Current argument index. Needed to emit ArrayInitIndexExpr.
 
bool DiscardResult = false
 Flag indicating if return value is to be discarded.
 

Friends

class VariableScope< Emitter >
 
class LocalScope< Emitter >
 
class RecordScope< Emitter >
 
class DeclScope< Emitter >
 
class OptionScope< Emitter >
 
class ArrayIndexScope< Emitter >
 

Additional Inherited Members

- Public Attributes inherited from clang::StmtVisitorBase< Ptr, ImplClass, RetTy, ParamTys >
ParamTys P { return RetTy()
 

Detailed Description

template<class Emitter>
class clang::interp::ByteCodeExprGen< Emitter >

Compilation context for expressions.

Definition at line 40 of file ByteCodeExprGen.h.

Member Typedef Documentation

◆ AddrTy

template<class Emitter >
using clang::interp::ByteCodeExprGen< Emitter >::AddrTy = typename Emitter::AddrTy
protected

Definition at line 45 of file ByteCodeExprGen.h.

◆ LabelTy

template<class Emitter >
using clang::interp::ByteCodeExprGen< Emitter >::LabelTy = typename Emitter::LabelTy
protected

Definition at line 44 of file ByteCodeExprGen.h.

Constructor & Destructor Documentation

◆ ByteCodeExprGen()

template<class Emitter >
template<typename... Tys>
clang::interp::ByteCodeExprGen< Emitter >::ByteCodeExprGen ( Context Ctx,
Program P,
Tys &&...  Args 
)
inline

Initializes the compiler and the backend emitter.

Definition at line 55 of file ByteCodeExprGen.h.

Member Function Documentation

◆ allocateLocal()

template<class Emitter >
std::optional< unsigned > ByteCodeExprGen::allocateLocal ( DeclTy &&  Decl,
bool  IsExtended = false 
)
protected

◆ allocateLocalPrimitive()

template<class Emitter >
unsigned ByteCodeExprGen::allocateLocalPrimitive ( DeclTy &&  Decl,
PrimType  Ty,
bool  IsMutable,
bool  IsExtended = false 
)
protected

Creates a local primitive value.

Definition at line 1134 of file ByteCodeExprGen.cpp.

References clang::interp::Descriptor::InlineDescMD, and P.

◆ classify() [1/2]

template<class Emitter >
std::optional< PrimType > clang::interp::ByteCodeExprGen< Emitter >::classify ( const Expr E) const
inlineprotected

◆ classify() [2/2]

template<class Emitter >
std::optional< PrimType > clang::interp::ByteCodeExprGen< Emitter >::classify ( QualType  Ty) const
inlineprotected

◆ classifyPrim()

template<class Emitter >
PrimType clang::interp::ByteCodeExprGen< Emitter >::classifyPrim ( QualType  Ty) const
inlineprotected

Classifies a known primitive type.

Definition at line 123 of file ByteCodeExprGen.h.

References clang::interp::ByteCodeExprGen< Emitter >::classify().

◆ discard()

template<class Emitter >
bool ByteCodeExprGen::discard ( const Expr E)
protected

Evaluates an expression for side effects and discards the result.

Definition at line 904 of file ByteCodeExprGen.cpp.

References clang::Expr::containsErrors().

◆ emitCleanup()

template<class Emitter >
void ByteCodeExprGen::emitCleanup
protected

Emits scope cleanup instructions.

Definition at line 1855 of file ByteCodeExprGen.cpp.

References clang::C.

◆ getFunction()

template<class Emitter >
const Function * ByteCodeExprGen::getFunction ( const FunctionDecl FD)
protected

◆ getRecord() [1/2]

template<class Emitter >
Record * ByteCodeExprGen::getRecord ( const RecordDecl RD)
protected

Definition at line 1455 of file ByteCodeExprGen.cpp.

References P.

◆ getRecord() [2/2]

template<class Emitter >
Record * ByteCodeExprGen::getRecord ( QualType  Ty)
protected

Returns a record from a record or pointer type.

Definition at line 1447 of file ByteCodeExprGen.cpp.

◆ getRecordTy()

template<class Emitter >
const RecordType * ByteCodeExprGen::getRecordTy ( QualType  Ty)
protected

Returns a record type from a record or pointer type.

Definition at line 1439 of file ByteCodeExprGen.cpp.

References clang::Type::getAs(), and clang::Type::getPointeeType().

◆ visit()

template<class Emitter >
bool ByteCodeExprGen::visit ( const Expr E)
protected

Evaluates an expression and places result on stack.

Definition at line 913 of file ByteCodeExprGen.cpp.

References clang::Expr::containsErrors().

◆ VisitAbstractConditionalOperator()

template<class Emitter >
bool ByteCodeExprGen::VisitAbstractConditionalOperator ( const AbstractConditionalOperator E)

◆ visitArrayInitializer()

template<class Emitter >
bool ByteCodeExprGen::visitArrayInitializer ( const Expr Initializer)
protected

◆ VisitArrayInitIndexExpr()

template<class Emitter >
bool ByteCodeExprGen::VisitArrayInitIndexExpr ( const ArrayInitIndexExpr E)

Definition at line 557 of file ByteCodeExprGen.cpp.

◆ VisitArraySubscriptExpr()

template<class Emitter >
bool ByteCodeExprGen::VisitArraySubscriptExpr ( const ArraySubscriptExpr E)

◆ VisitBinaryOperator()

template<class Emitter >
bool ByteCodeExprGen::VisitBinaryOperator ( const BinaryOperator E)

◆ visitBool()

template<class Emitter >
bool ByteCodeExprGen::visitBool ( const Expr E)
protected

Visits an expression and converts it to a boolean.

Definition at line 922 of file ByteCodeExprGen.cpp.

References clang::Expr::getType().

◆ VisitBuiltinCallExpr()

template<class Emitter >
bool ByteCodeExprGen::VisitBuiltinCallExpr ( const CallExpr E)

◆ VisitCallExpr()

template<class Emitter >
bool ByteCodeExprGen::VisitCallExpr ( const CallExpr E)

◆ VisitCastExpr()

template<class Emitter >
bool ByteCodeExprGen::VisitCastExpr ( const CastExpr E)

◆ VisitCharacterLiteral()

template<class Emitter >
bool ByteCodeExprGen::VisitCharacterLiteral ( const CharacterLiteral E)

Definition at line 609 of file ByteCodeExprGen.cpp.

References clang::CharacterLiteral::getValue().

◆ VisitCompoundAssignOperator()

template<class Emitter >
bool ByteCodeExprGen::VisitCompoundAssignOperator ( const CompoundAssignOperator E)

◆ VisitCompoundLiteralExpr()

template<class Emitter >
bool ByteCodeExprGen::VisitCompoundLiteralExpr ( const CompoundLiteralExpr E)

◆ VisitConstantExpr()

template<class Emitter >
bool ByteCodeExprGen::VisitConstantExpr ( const ConstantExpr E)

Definition at line 449 of file ByteCodeExprGen.cpp.

References clang::FullExpr::getSubExpr().

◆ VisitCXXBoolLiteralExpr()

template<class Emitter >
bool ByteCodeExprGen::VisitCXXBoolLiteralExpr ( const CXXBoolLiteralExpr E)

Definition at line 1681 of file ByteCodeExprGen.cpp.

References clang::CXXBoolLiteralExpr::getValue().

◆ VisitCXXDefaultArgExpr()

template<class Emitter >
bool ByteCodeExprGen::VisitCXXDefaultArgExpr ( const CXXDefaultArgExpr E)

Definition at line 1675 of file ByteCodeExprGen.cpp.

References clang::CXXDefaultArgExpr::getExpr().

◆ VisitCXXDefaultInitExpr()

template<class Emitter >
bool ByteCodeExprGen::VisitCXXDefaultInitExpr ( const CXXDefaultInitExpr E)

Definition at line 1669 of file ByteCodeExprGen.cpp.

References clang::CXXDefaultInitExpr::getExpr().

◆ VisitCXXMemberCallExpr()

template<class Emitter >
bool ByteCodeExprGen::VisitCXXMemberCallExpr ( const CXXMemberCallExpr E)

◆ VisitCXXNullPtrLiteralExpr()

template<class Emitter >
bool ByteCodeExprGen::VisitCXXNullPtrLiteralExpr ( const CXXNullPtrLiteralExpr E)

Definition at line 1690 of file ByteCodeExprGen.cpp.

◆ VisitCXXThisExpr()

template<class Emitter >
bool ByteCodeExprGen::VisitCXXThisExpr ( const CXXThisExpr E)

Definition at line 1699 of file ByteCodeExprGen.cpp.

◆ visitDecl()

template<class Emitter >
bool ByteCodeExprGen::visitDecl ( const VarDecl VD)
overrideprotected

Toplevel visitDecl().

We get here from evaluateAsInitializer(). We need to evaluate the initializer and return its value.

Definition at line 1497 of file ByteCodeExprGen.cpp.

References clang::ValueDecl::getType(), clang::Decl::isInvalidDecl(), and P.

◆ VisitDeclRefExpr()

template<class Emitter >
bool ByteCodeExprGen::VisitDeclRefExpr ( const DeclRefExpr E)

Definition at line 1820 of file ByteCodeExprGen.cpp.

References clang::DeclRefExpr::getDecl(), Offset, P, and clang::interp::PT_Ptr.

◆ visitExpr()

template<class Emitter >
bool ByteCodeExprGen::visitExpr ( const Expr E)
overrideprotected

Definition at line 1482 of file ByteCodeExprGen.cpp.

◆ VisitExprWithCleanups()

template<class Emitter >
bool ByteCodeExprGen::VisitExprWithCleanups ( const ExprWithCleanups E)

◆ VisitFloatCompoundAssignOperator()

template<class Emitter >
bool ByteCodeExprGen::VisitFloatCompoundAssignOperator ( const CompoundAssignOperator E)

◆ VisitFloatingLiteral()

template<class Emitter >
bool ByteCodeExprGen::VisitFloatingLiteral ( const FloatingLiteral E)

Definition at line 176 of file ByteCodeExprGen.cpp.

References clang::FloatingLiteral::getValue().

◆ visitGlobalInitializer()

template<class Emitter >
bool clang::interp::ByteCodeExprGen< Emitter >::visitGlobalInitializer ( const Expr Init,
unsigned  I 
)
inlineprotected

Visits an initializer for a global.

Definition at line 158 of file ByteCodeExprGen.h.

References clang::interp::ByteCodeExprGen< Emitter >::visitInitializer().

◆ VisitImplicitValueInitExpr()

template<class Emitter >
bool ByteCodeExprGen::VisitImplicitValueInitExpr ( const ImplicitValueInitExpr E)

Definition at line 397 of file ByteCodeExprGen.cpp.

References clang::Expr::getType(), and clang::Type::isPointerType().

◆ visitInitializer()

template<class Emitter >
bool ByteCodeExprGen::visitInitializer ( const Expr E)
protected

◆ VisitInitListExpr()

template<class Emitter >
bool ByteCodeExprGen::VisitInitListExpr ( const InitListExpr E)

Definition at line 434 of file ByteCodeExprGen.cpp.

References clang::InitListExpr::inits().

◆ VisitIntegerLiteral()

template<class Emitter >
bool ByteCodeExprGen::VisitIntegerLiteral ( const IntegerLiteral E)

Definition at line 168 of file ByteCodeExprGen.cpp.

References clang::interp::LE().

◆ visitLocalInitializer()

template<class Emitter >
bool clang::interp::ByteCodeExprGen< Emitter >::visitLocalInitializer ( const Expr Init,
unsigned  I 
)
inlineprotected

Visits an initializer for a local.

Definition at line 147 of file ByteCodeExprGen.h.

References clang::interp::ByteCodeExprGen< Emitter >::visitInitializer().

◆ VisitLogicalBinOp()

template<class Emitter >
bool ByteCodeExprGen::VisitLogicalBinOp ( const BinaryOperator E)

◆ VisitMaterializeTemporaryExpr()

template<class Emitter >
bool ByteCodeExprGen::VisitMaterializeTemporaryExpr ( const MaterializeTemporaryExpr E)

◆ VisitMemberExpr()

template<class Emitter >
bool ByteCodeExprGen::VisitMemberExpr ( const MemberExpr E)

◆ VisitOpaqueValueExpr()

template<class Emitter >
bool ByteCodeExprGen::VisitOpaqueValueExpr ( const OpaqueValueExpr E)

Definition at line 567 of file ByteCodeExprGen.cpp.

References clang::OpaqueValueExpr::getSourceExpr().

◆ VisitParenExpr()

template<class Emitter >
bool ByteCodeExprGen::VisitParenExpr ( const ParenExpr E)

Definition at line 184 of file ByteCodeExprGen.cpp.

References clang::ParenExpr::getSubExpr().

◆ VisitPointerArithBinOp()

template<class Emitter >
bool ByteCodeExprGen::VisitPointerArithBinOp ( const BinaryOperator E)

Perform addition/subtraction of a pointer and an integer or subtraction of two pointers.

Definition at line 290 of file ByteCodeExprGen.cpp.

References clang::BinaryOperator::getLHS(), clang::BinaryOperator::getOpcode(), clang::BinaryOperator::getRHS(), clang::Expr::getType(), clang::Type::isIntegerType(), clang::Type::isPointerType(), and LT.

◆ VisitPointerCompoundAssignOperator()

template<class Emitter >
bool ByteCodeExprGen::VisitPointerCompoundAssignOperator ( const CompoundAssignOperator E)

◆ visitRecordInitializer()

template<class Emitter >
bool ByteCodeExprGen::visitRecordInitializer ( const Expr Initializer)
protected

◆ VisitStringLiteral()

template<class Emitter >
bool ByteCodeExprGen::VisitStringLiteral ( const StringLiteral E)

Definition at line 603 of file ByteCodeExprGen.cpp.

References P.

◆ VisitSubstNonTypeTemplateParmExpr()

template<class Emitter >
bool ByteCodeExprGen::VisitSubstNonTypeTemplateParmExpr ( const SubstNonTypeTemplateParmExpr E)

◆ visitThisInitializer()

template<class Emitter >
bool clang::interp::ByteCodeExprGen< Emitter >::visitThisInitializer ( const Expr I)
inlineprotected

Visits a delegated initializer.

Definition at line 172 of file ByteCodeExprGen.h.

References clang::interp::ByteCodeExprGen< Emitter >::visitInitializer().

◆ VisitUnaryExprOrTypeTraitExpr()

template<class Emitter >
bool ByteCodeExprGen::VisitUnaryExprOrTypeTraitExpr ( const UnaryExprOrTypeTraitExpr E)

◆ VisitUnaryOperator()

template<class Emitter >
bool ByteCodeExprGen::VisitUnaryOperator ( const UnaryOperator E)

◆ visitVarDecl()

template<class Emitter >
bool ByteCodeExprGen::visitVarDecl ( const VarDecl VD)
protected

Creates and initializes a variable from the given decl.

Definition at line 1530 of file ByteCodeExprGen.cpp.

References clang::VarDecl::getInit(), clang::ValueDecl::getType(), clang::QualType::isConstQualified(), clang::QualType::isNull(), Offset, and P.

Friends And Related Function Documentation

◆ ArrayIndexScope< Emitter >

template<class Emitter >
friend class ArrayIndexScope< Emitter >
friend

Definition at line 187 of file ByteCodeExprGen.h.

◆ DeclScope< Emitter >

template<class Emitter >
friend class DeclScope< Emitter >
friend

Definition at line 187 of file ByteCodeExprGen.h.

◆ LocalScope< Emitter >

template<class Emitter >
friend class LocalScope< Emitter >
friend

Definition at line 187 of file ByteCodeExprGen.h.

◆ OptionScope< Emitter >

template<class Emitter >
friend class OptionScope< Emitter >
friend

Definition at line 187 of file ByteCodeExprGen.h.

◆ RecordScope< Emitter >

template<class Emitter >
friend class RecordScope< Emitter >
friend

Definition at line 187 of file ByteCodeExprGen.h.

◆ VariableScope< Emitter >

template<class Emitter >
friend class VariableScope< Emitter >
friend

Definition at line 187 of file ByteCodeExprGen.h.

Member Data Documentation

◆ ArrayIndex

template<class Emitter >
std::optional<uint64_t> clang::interp::ByteCodeExprGen< Emitter >::ArrayIndex
protected

Current argument index. Needed to emit ArrayInitIndexExpr.

Definition at line 270 of file ByteCodeExprGen.h.

Referenced by clang::interp::ArrayIndexScope< Emitter >::ArrayIndexScope().

◆ Ctx

template<class Emitter >
Context& clang::interp::ByteCodeExprGen< Emitter >::Ctx
protected

Current compilation context.

Definition at line 48 of file ByteCodeExprGen.h.

Referenced by clang::interp::ByteCodeExprGen< Emitter >::classify().

◆ DiscardResult

template<class Emitter >
bool clang::interp::ByteCodeExprGen< Emitter >::DiscardResult = false
protected

Flag indicating if return value is to be discarded.

Definition at line 273 of file ByteCodeExprGen.h.

Referenced by clang::interp::OptionScope< Emitter >::OptionScope().

◆ Locals

template<class Emitter >
llvm::DenseMap<const ValueDecl *, Scope::Local> clang::interp::ByteCodeExprGen< Emitter >::Locals
protected

Variable to storage mapping.

Definition at line 261 of file ByteCodeExprGen.h.

◆ OpaqueExprs

template<class Emitter >
llvm::DenseMap<const OpaqueValueExpr *, unsigned> clang::interp::ByteCodeExprGen< Emitter >::OpaqueExprs
protected

OpaqueValueExpr to location mapping.

Definition at line 264 of file ByteCodeExprGen.h.

◆ P

template<class Emitter >
Program& clang::interp::ByteCodeExprGen< Emitter >::P
protected

Program to link to.

Definition at line 50 of file ByteCodeExprGen.h.

◆ VarScope

template<class Emitter >
VariableScope<Emitter>* clang::interp::ByteCodeExprGen< Emitter >::VarScope = nullptr
protected

Current scope.

Definition at line 267 of file ByteCodeExprGen.h.

Referenced by clang::interp::VariableScope< Emitter >::VariableScope().


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