clang 18.0.0git
Public Member Functions | Static Public Member Functions | List of all members
clang::interp::Context Class Referencefinal

Holds all information required to evaluate constexpr code in a module. More...

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

Public Member Functions

 Context (ASTContext &Ctx)
 Initialises the constexpr VM.
 
 ~Context ()
 Cleans up the constexpr VM.
 
bool isPotentialConstantExpr (State &Parent, const FunctionDecl *FnDecl)
 Checks if a function is a potential constant expression.
 
bool evaluateAsRValue (State &Parent, const Expr *E, APValue &Result)
 Evaluates a toplevel expression as an rvalue.
 
bool evaluateAsInitializer (State &Parent, const VarDecl *VD, APValue &Result)
 Evaluates a toplevel initializer.
 
ASTContextgetASTContext () const
 Returns the AST context.
 
const LangOptionsgetLangOpts () const
 Returns the language options.
 
InterpStackgetStack ()
 Returns the interpreter stack.
 
unsigned getCharBit () const
 Returns CHAR_BIT.
 
const llvm::fltSemantics & getFloatSemantics (QualType T) const
 Return the floating-point semantics for T.
 
std::optional< PrimTypeclassify (QualType T) const
 Classifies an expression.
 
const CXXMethodDeclgetOverridingFunction (const CXXRecordDecl *DynamicDecl, const CXXRecordDecl *StaticDecl, const CXXMethodDecl *InitialFunction) const
 
const FunctiongetOrCreateFunction (const FunctionDecl *FD)
 

Static Public Member Functions

static bool shouldBeGloballyIndexed (const ValueDecl *VD)
 Returns whether we should create a global variable for the given ValueDecl.
 

Detailed Description

Holds all information required to evaluate constexpr code in a module.

Definition at line 40 of file Context.h.

Constructor & Destructor Documentation

◆ Context()

Context::Context ( ASTContext Ctx)

Initialises the constexpr VM.

Definition at line 26 of file Context.cpp.

◆ ~Context()

Context::~Context ( )

Cleans up the constexpr VM.

Definition at line 28 of file Context.cpp.

Member Function Documentation

◆ classify()

std::optional< PrimType > Context::classify ( QualType  T) const

◆ evaluateAsInitializer()

bool Context::evaluateAsInitializer ( State Parent,
const VarDecl VD,
APValue Result 
)

Evaluates a toplevel initializer.

Definition at line 71 of file Context.cpp.

References clang::C, clang::interp::InterpStack::clear(), clang::interp::InterpStack::empty(), Parent, and clang::Result.

◆ evaluateAsRValue()

bool Context::evaluateAsRValue ( State Parent,
const Expr E,
APValue Result 
)

Evaluates a toplevel expression as an rvalue.

Definition at line 54 of file Context.cpp.

References clang::C, clang::interp::InterpStack::clear(), clang::interp::InterpStack::empty(), Parent, and clang::Result.

◆ getASTContext()

ASTContext & clang::interp::Context::getASTContext ( ) const
inline

Returns the AST context.

Definition at line 58 of file Context.h.

Referenced by clang::interp::Program::getOrCreateDummy().

◆ getCharBit()

unsigned Context::getCharBit ( ) const

Returns CHAR_BIT.

Definition at line 150 of file Context.cpp.

References clang::TargetInfo::getCharWidth(), and clang::ASTContext::getTargetInfo().

Referenced by clang::interp::Program::createGlobalString().

◆ getFloatSemantics()

const llvm::fltSemantics & Context::getFloatSemantics ( QualType  T) const

Return the floating-point semantics for T.

Simple wrapper around getFloatTypeSemantics() to make code a little shorter.

Definition at line 156 of file Context.cpp.

References clang::ASTContext::getFloatTypeSemantics().

◆ getLangOpts()

const LangOptions & Context::getLangOpts ( ) const

Returns the language options.

Definition at line 89 of file Context.cpp.

References clang::ASTContext::getLangOpts().

◆ getOrCreateFunction()

const Function * Context::getOrCreateFunction ( const FunctionDecl FD)

◆ getOverridingFunction()

const CXXMethodDecl * Context::getOverridingFunction ( const CXXRecordDecl DynamicDecl,
const CXXRecordDecl StaticDecl,
const CXXMethodDecl InitialFunction 
) const

◆ getStack()

InterpStack & clang::interp::Context::getStack ( )
inline

Returns the interpreter stack.

Definition at line 62 of file Context.h.

◆ isPotentialConstantExpr()

bool Context::isPotentialConstantExpr ( State Parent,
const FunctionDecl FnDecl 
)

Checks if a function is a potential constant expression.

Definition at line 30 of file Context.cpp.

References clang::interp::InterpStack::empty(), clang::interp::Function::hasBody(), clang::interp::Function::isConstexpr(), and Parent.

◆ shouldBeGloballyIndexed()

static bool clang::interp::Context::shouldBeGloballyIndexed ( const ValueDecl VD)
inlinestatic

Returns whether we should create a global variable for the given ValueDecl.

Definition at line 80 of file Context.h.

References V.

Referenced by clang::interp::Program::createGlobal(), clang::interp::ByteCodeExprGen< Emitter >::visitDecl(), and clang::interp::ByteCodeExprGen< Emitter >::visitVarDecl().


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