clang 20.0.0git
Public Types | Public Member Functions | Friends | List of all members
clang::interp::EvaluationResult Class Referencefinal

Defines the result of an evaluation. More...

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

Public Types

enum  ResultKind {
  Empty , LValue , RValue , Invalid ,
  Valid
}
 
using DeclTy = llvm::PointerUnion< const Decl *, const Expr * >
 

Public Member Functions

 EvaluationResult (const Context *Ctx)
 
bool empty () const
 
bool isInvalid () const
 
bool isLValue () const
 
bool isRValue () const
 
APValue toAPValue () const
 Returns an APValue for the evaluation result.
 
std::optional< APValuetoRValue () const
 If the result is an LValue, convert that to an RValue and return it.
 
bool checkFullyInitialized (InterpState &S, const Pointer &Ptr) const
 Check that all subobjects of the given pointer have been initialized.
 
bool checkReturnValue (InterpState &S, const Context &Ctx, const Pointer &Ptr, const SourceInfo &Info)
 Check that none of the blocks the given pointer (transitively) points to are dynamically allocated.
 
QualType getSourceType () const
 
void dump () const
 Dump to stderr.
 

Friends

class EvalEmitter
 
class InterpState
 

Detailed Description

Defines the result of an evaluation.

The result might be in different forms–one of the pointer types, an APValue, or nothing.

We use this class to inspect and diagnose the result, as well as convert it to the requested form.

Definition at line 32 of file EvaluationResult.h.

Member Typedef Documentation

◆ DeclTy

using clang::interp::EvaluationResult::DeclTy = llvm::PointerUnion<const Decl *, const Expr *>

Definition at line 42 of file EvaluationResult.h.

Member Enumeration Documentation

◆ ResultKind

Enumerator
Empty 
LValue 
RValue 
Invalid 
Valid 

Definition at line 34 of file EvaluationResult.h.

Constructor & Destructor Documentation

◆ EvaluationResult()

clang::interp::EvaluationResult::EvaluationResult ( const Context Ctx)
inline

Definition at line 85 of file EvaluationResult.h.

Member Function Documentation

◆ checkFullyInitialized()

bool clang::interp::EvaluationResult::checkFullyInitialized ( InterpState S,
const Pointer Ptr 
) const

◆ checkReturnValue()

bool clang::interp::EvaluationResult::checkReturnValue ( InterpState S,
const Context Ctx,
const Pointer Ptr,
const SourceInfo Info 
)

Check that none of the blocks the given pointer (transitively) points to are dynamically allocated.

Definition at line 219 of file EvaluationResult.cpp.

References clang::interp::collectBlocks(), clang::interp::Pointer::getType(), clang::Type::isReferenceType(), and clang::interp::Pointer::isRoot().

◆ dump()

LLVM_DUMP_METHOD void EvaluationResult::dump ( ) const

Dump to stderr.

Definition at line 355 of file Disasm.cpp.

References D, E, Empty, clang::interp::Context::getASTContext(), clang::Expr::getType(), Invalid, LValue, P, RValue, and Valid.

◆ empty()

bool clang::interp::EvaluationResult::empty ( ) const
inline

Definition at line 87 of file EvaluationResult.h.

References Empty.

Referenced by checkFullyInitialized(), and toAPValue().

◆ getSourceType()

QualType clang::interp::EvaluationResult::getSourceType ( ) const
inline

Definition at line 108 of file EvaluationResult.h.

References D, and E.

Referenced by toRValue().

◆ isInvalid()

bool clang::interp::EvaluationResult::isInvalid ( ) const
inline

Definition at line 88 of file EvaluationResult.h.

References Invalid.

◆ isLValue()

bool clang::interp::EvaluationResult::isLValue ( ) const
inline

Definition at line 89 of file EvaluationResult.h.

References LValue.

◆ isRValue()

bool clang::interp::EvaluationResult::isRValue ( ) const
inline

Definition at line 90 of file EvaluationResult.h.

References RValue.

◆ toAPValue()

APValue clang::interp::EvaluationResult::toAPValue ( ) const

Returns an APValue for the evaluation result.

The returned APValue might be an LValue or RValue.

Definition at line 19 of file EvaluationResult.cpp.

References empty(), clang::interp::Context::getASTContext(), LValue, P, RValue, and Valid.

Referenced by toRValue().

◆ toRValue()

std::optional< APValue > clang::interp::EvaluationResult::toRValue ( ) const

If the result is an LValue, convert that to an RValue and return it.

This may fail, e.g. if the result is an LValue and we can't read from it.

Definition at line 40 of file EvaluationResult.cpp.

References clang::interp::Context::getASTContext(), getSourceType(), LValue, P, RValue, and toAPValue().

Friends And Related Function Documentation

◆ EvalEmitter

friend class EvalEmitter
friend

Definition at line 120 of file EvaluationResult.h.

◆ InterpState

friend class InterpState
friend

Definition at line 121 of file EvaluationResult.h.


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