clang 18.0.0git
Public Member Functions | Public Attributes | List of all members
clang::Expr::EvalStatus Struct Reference

EvalStatus is a struct with detailed info about an evaluation in progress. More...

#include "clang/AST/Expr.h"

Inheritance diagram for clang::Expr::EvalStatus:
Inheritance graph
[legend]

Public Member Functions

 EvalStatus ()=default
 
bool hasSideEffects () const
 

Public Attributes

bool HasSideEffects = false
 Whether the evaluated expression has side effects.
 
bool HasUndefinedBehavior = false
 Whether the evaluation hit undefined behavior.
 
SmallVectorImpl< PartialDiagnosticAt > * Diag = nullptr
 Diag - If this is non-null, it will be filled in with a stack of notes indicating why evaluation failed (or why it failed to produce a constant expression).
 

Detailed Description

EvalStatus is a struct with detailed info about an evaluation in progress.

Definition at line 593 of file Expr.h.

Constructor & Destructor Documentation

◆ EvalStatus()

clang::Expr::EvalStatus::EvalStatus ( )
default

Member Function Documentation

◆ hasSideEffects()

bool clang::Expr::EvalStatus::hasSideEffects ( ) const
inline

Definition at line 616 of file Expr.h.

References HasSideEffects.

Referenced by clang::CodeGen::CodeGenModule::GetAddrOfGlobalTemporary().

Member Data Documentation

◆ Diag

SmallVectorImpl<PartialDiagnosticAt>* clang::Expr::EvalStatus::Diag = nullptr

Diag - If this is non-null, it will be filled in with a stack of notes indicating why evaluation failed (or why it failed to produce a constant expression).

If the expression is unfoldable, the notes will indicate why it's not foldable. If the expression is foldable, but not a constant expression, the notes will describes why it isn't a constant expression. If the expression is a constant expression, no notes will be produced.

Definition at line 610 of file Expr.h.

Referenced by calculateConstraintSatisfaction(), clang::Sema::CheckForImmediateInvocation(), clang::Sema::ConstantFoldAttrArgs(), diagnoseWellFormedUnsatisfiedConstraintExpr(), EvaluateAndDiagnoseImmediateInvocation(), clang::Expr::EvaluateAsInitializer(), EvaluateConvertedConstantExpression(), clang::VarDecl::evaluateDestruction(), clang::Expr::EvaluateKnownConstInt(), clang::Expr::EvaluateKnownConstIntCheckOverflow(), isNullPointerValueTemplateArgument(), and clang::Sema::VerifyIntegerConstantExpression().

◆ HasSideEffects

bool clang::Expr::EvalStatus::HasSideEffects = false

Whether the evaluated expression has side effects.

For example, (f() && 0) can be folded, but it still has side effects.

Definition at line 596 of file Expr.h.

Referenced by CheckEvalInICE(), EvaluateDestruction(), clang::VarDecl::evaluateDestruction(), hasSideEffects(), isNullPointerValueTemplateArgument(), and clang::Sema::VerifyIntegerConstantExpression().

◆ HasUndefinedBehavior

bool clang::Expr::EvalStatus::HasUndefinedBehavior = false

Whether the evaluation hit undefined behavior.

For example, 1.0 / 0.0 can be folded to Inf, but has undefined behavior. Likewise, INT_MAX + 1 can be folded to INT_MIN, but has UB.

Definition at line 601 of file Expr.h.


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