clang 22.0.0git
clang::Sema::ExpressionEvaluationContextRecord Struct Reference

Data structure used to record current or nested expression evaluation contexts. More...

#include "clang/Sema/Sema.h"

Classes

struct  InitializationContext

Public Types

enum  ExpressionKind {
  EK_Decltype , EK_TemplateArgument , EK_AttrArgument , EK_VariableInit ,
  EK_Other
}
 Describes whether we are in an expression constext which we have to handle differently. More...

Public Member Functions

 ExpressionEvaluationContextRecord (ExpressionEvaluationContext Context, unsigned NumCleanupObjects, CleanupInfo ParentCleanup, Decl *ManglingContextDecl, ExpressionKind ExprContext)
bool isUnevaluated () const
bool isPotentiallyEvaluated () const
bool isConstantEvaluated () const
bool isImmediateFunctionContext () const
bool isDiscardedStatementContext () const

Public Attributes

ExpressionEvaluationContext Context
 The expression evaluation context.
CleanupInfo ParentCleanup
 Whether the enclosing context needed a cleanup.
unsigned NumCleanupObjects
 The number of active cleanup objects when we entered this expression evaluation context.
MaybeODRUseExprSet SavedMaybeODRUseExprs
SmallVector< LambdaExpr *, 2 > Lambdas
 The lambdas that are present within this context, if it is indeed an unevaluated context.
DeclManglingContextDecl
 The declaration that provides context for lambda expressions and block literals if the normal declaration context does not suffice, e.g., in a default function argument.
SmallVector< CallExpr *, 8 > DelayedDecltypeCalls
 If we are processing a decltype type, a set of call expressions for which we have deferred checking the completeness of the return type.
SmallVector< CXXBindTemporaryExpr *, 8 > DelayedDecltypeBinds
 If we are processing a decltype type, a set of temporary binding expressions for which we have deferred checking the destructor.
llvm::SmallPtrSet< const Expr *, 8 > PossibleDerefs
SmallVector< Expr *, 2 > VolatileAssignmentLHSs
 Expressions appearing as the LHS of a volatile assignment in this context.
llvm::SmallVector< ImmediateInvocationCandidate, 4 > ImmediateInvocationCandidates
 Set of candidates for starting an immediate invocation.
llvm::SmallPtrSet< DeclRefExpr *, 4 > ReferenceToConsteval
 Set of DeclRefExprs referencing a consteval function when used in a context not already known to be immediately invoked.
SmallVector< MaterializeTemporaryExpr *, 8 > ForRangeLifetimeExtendTemps
 P2718R0 - Lifetime extension in range-based for loops.
SmallVector< MisalignedMember, 4 > MisalignedMembers
 Small set of gathered accesses to potentially misaligned members due to the packed attribute.
enum clang::Sema::ExpressionEvaluationContextRecord::ExpressionKind ExprContext
bool InDiscardedStatement
bool InImmediateFunctionContext
bool InImmediateEscalatingFunctionContext
bool IsCurrentlyCheckingDefaultArgumentOrInitializer = false
bool InConditionallyConstantEvaluateContext = false
bool InLifetimeExtendingContext = false
 Whether we are currently in a context in which all temporaries must be lifetime-extended, even if they're not bound to a reference (for example, in a for-range initializer).
bool IsCaseExpr = false
 Whether evaluating an expression for a switch case label.
bool RebuildDefaultArgOrDefaultInit = false
 Whether we should rebuild CXXDefaultArgExpr and CXXDefaultInitExpr.
std::optional< InitializationContextDelayedDefaultInitializationContext

Detailed Description

Data structure used to record current or nested expression evaluation contexts.

Definition at line 6731 of file Sema.h.

Member Enumeration Documentation

◆ ExpressionKind

Describes whether we are in an expression constext which we have to handle differently.

Enumerator
EK_Decltype 
EK_TemplateArgument 
EK_AttrArgument 
EK_VariableInit 
EK_Other 

Definition at line 6788 of file Sema.h.

Constructor & Destructor Documentation

◆ ExpressionEvaluationContextRecord()

clang::Sema::ExpressionEvaluationContextRecord::ExpressionEvaluationContextRecord ( ExpressionEvaluationContext Context,
unsigned NumCleanupObjects,
CleanupInfo ParentCleanup,
Decl * ManglingContextDecl,
ExpressionKind ExprContext )
inline

Member Function Documentation

◆ isConstantEvaluated()

◆ isDiscardedStatementContext()

bool clang::Sema::ExpressionEvaluationContextRecord::isDiscardedStatementContext ( ) const
inline

◆ isImmediateFunctionContext()

◆ isPotentiallyEvaluated()

bool clang::Sema::ExpressionEvaluationContextRecord::isPotentiallyEvaluated ( ) const
inline

◆ isUnevaluated()

bool clang::Sema::ExpressionEvaluationContextRecord::isUnevaluated ( ) const
inline

Member Data Documentation

◆ Context

◆ DelayedDecltypeBinds

SmallVector<CXXBindTemporaryExpr *, 8> clang::Sema::ExpressionEvaluationContextRecord::DelayedDecltypeBinds

If we are processing a decltype type, a set of temporary binding expressions for which we have deferred checking the destructor.

Definition at line 6759 of file Sema.h.

◆ DelayedDecltypeCalls

SmallVector<CallExpr *, 8> clang::Sema::ExpressionEvaluationContextRecord::DelayedDecltypeCalls

If we are processing a decltype type, a set of call expressions for which we have deferred checking the completeness of the return type.

Definition at line 6755 of file Sema.h.

◆ DelayedDefaultInitializationContext

std::optional<InitializationContext> clang::Sema::ExpressionEvaluationContextRecord::DelayedDefaultInitializationContext

Definition at line 6835 of file Sema.h.

◆ ExprContext

◆ ForRangeLifetimeExtendTemps

SmallVector<MaterializeTemporaryExpr *, 8> clang::Sema::ExpressionEvaluationContextRecord::ForRangeLifetimeExtendTemps

P2718R0 - Lifetime extension in range-based for loops.

MaterializeTemporaryExprs in for-range-init expressions which need to extend lifetime. Add MaterializeTemporaryExpr* if the value of InLifetimeExtendingContext is true.

Definition at line 6780 of file Sema.h.

Referenced by clang::Sema::CreateMaterializeTemporaryExpr(), and clang::Sema::PopExpressionEvaluationContext().

◆ ImmediateInvocationCandidates

llvm::SmallVector<ImmediateInvocationCandidate, 4> clang::Sema::ExpressionEvaluationContextRecord::ImmediateInvocationCandidates

Set of candidates for starting an immediate invocation.

Definition at line 6770 of file Sema.h.

Referenced by HandleImmediateInvocations(), and RemoveNestedImmediateInvocation().

◆ InConditionallyConstantEvaluateContext

bool clang::Sema::ExpressionEvaluationContextRecord::InConditionallyConstantEvaluateContext = false

Definition at line 6807 of file Sema.h.

Referenced by clang::Sema::isAlwaysConstantEvaluatedContext().

◆ InDiscardedStatement

bool clang::Sema::ExpressionEvaluationContextRecord::InDiscardedStatement

◆ InImmediateEscalatingFunctionContext

bool clang::Sema::ExpressionEvaluationContextRecord::InImmediateEscalatingFunctionContext

◆ InImmediateFunctionContext

bool clang::Sema::ExpressionEvaluationContextRecord::InImmediateFunctionContext

◆ InLifetimeExtendingContext

bool clang::Sema::ExpressionEvaluationContextRecord::InLifetimeExtendingContext = false

Whether we are currently in a context in which all temporaries must be lifetime-extended, even if they're not bound to a reference (for example, in a for-range initializer).

Definition at line 6812 of file Sema.h.

Referenced by clang::Sema::BuildCXXDefaultArgExpr(), clang::Sema::BuildCXXDefaultInitExpr(), clang::Sema::InstantiateVariableInitializer(), clang::Sema::isInLifetimeExtendingContext(), and clang::Sema::PopExpressionEvaluationContext().

◆ IsCaseExpr

bool clang::Sema::ExpressionEvaluationContextRecord::IsCaseExpr = false

Whether evaluating an expression for a switch case label.

Definition at line 6815 of file Sema.h.

Referenced by DoEmitAvailabilityWarning().

◆ IsCurrentlyCheckingDefaultArgumentOrInitializer

bool clang::Sema::ExpressionEvaluationContextRecord::IsCurrentlyCheckingDefaultArgumentOrInitializer = false

Definition at line 6802 of file Sema.h.

Referenced by clang::Sema::isCheckingDefaultArgumentOrInitializer().

◆ Lambdas

SmallVector<LambdaExpr *, 2> clang::Sema::ExpressionEvaluationContextRecord::Lambdas

The lambdas that are present within this context, if it is indeed an unevaluated context.

Definition at line 6746 of file Sema.h.

Referenced by clang::Sema::PopExpressionEvaluationContext().

◆ ManglingContextDecl

Decl* clang::Sema::ExpressionEvaluationContextRecord::ManglingContextDecl

The declaration that provides context for lambda expressions and block literals if the normal declaration context does not suffice, e.g., in a default function argument.

Definition at line 6751 of file Sema.h.

Referenced by ExpressionEvaluationContextRecord(), and HandleImmediateInvocations().

◆ MisalignedMembers

SmallVector<MisalignedMember, 4> clang::Sema::ExpressionEvaluationContextRecord::MisalignedMembers

Small set of gathered accesses to potentially misaligned members due to the packed attribute.

Definition at line 6784 of file Sema.h.

Referenced by clang::Sema::DiagnoseMisalignedMembers(), and clang::Sema::DiscardMisalignedMemberAddress().

◆ NumCleanupObjects

unsigned clang::Sema::ExpressionEvaluationContextRecord::NumCleanupObjects

The number of active cleanup objects when we entered this expression evaluation context.

Definition at line 6740 of file Sema.h.

Referenced by ExpressionEvaluationContextRecord(), and clang::Sema::PopExpressionEvaluationContext().

◆ ParentCleanup

CleanupInfo clang::Sema::ExpressionEvaluationContextRecord::ParentCleanup

Whether the enclosing context needed a cleanup.

Definition at line 6736 of file Sema.h.

Referenced by ExpressionEvaluationContextRecord(), and clang::Sema::PopExpressionEvaluationContext().

◆ PossibleDerefs

llvm::SmallPtrSet<const Expr *, 8> clang::Sema::ExpressionEvaluationContextRecord::PossibleDerefs

Definition at line 6761 of file Sema.h.

Referenced by clang::Sema::WarnOnPendingNoDerefs().

◆ RebuildDefaultArgOrDefaultInit

bool clang::Sema::ExpressionEvaluationContextRecord::RebuildDefaultArgOrDefaultInit = false

◆ ReferenceToConsteval

llvm::SmallPtrSet<DeclRefExpr *, 4> clang::Sema::ExpressionEvaluationContextRecord::ReferenceToConsteval

Set of DeclRefExprs referencing a consteval function when used in a context not already known to be immediately invoked.

Definition at line 6774 of file Sema.h.

Referenced by clang::Sema::ActOnCallExpr(), HandleImmediateInvocations(), and RemoveNestedImmediateInvocation().

◆ SavedMaybeODRUseExprs

MaybeODRUseExprSet clang::Sema::ExpressionEvaluationContextRecord::SavedMaybeODRUseExprs

Definition at line 6742 of file Sema.h.

Referenced by clang::Sema::PopExpressionEvaluationContext().

◆ VolatileAssignmentLHSs

SmallVector<Expr *, 2> clang::Sema::ExpressionEvaluationContextRecord::VolatileAssignmentLHSs

Expressions appearing as the LHS of a volatile assignment in this context.

We produce a warning for these when popping the context if they are not discarded-value expressions nor unevaluated operands.

Definition at line 6766 of file Sema.h.

Referenced by clang::Sema::PopExpressionEvaluationContext().


The documentation for this struct was generated from the following file: