A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://clang.llvm.org/doxygen/ExprEngineC_8cpp_source.html below:

clang: lib/StaticAnalyzer/Core/ExprEngineC.cpp Source File

19using namespace clang

;

58 SVal

LeftV = state->getSVal(LHS, LCtx);

59 SVal

RightV = state->getSVal(RHS, LCtx);

63 if

(Op == BO_Assign) {

74 evalStore

(Tmp2, B, LHS, *it, state->BindExpr(B, LCtx, ExprVal),

87

RightV, LeftV, RHS, svalBuilder, Count, LCtx);

89

LeftV, RightV, LHS, svalBuilder, Count, LCtx);

96

state = createTemporaryRegionIfNeeded(state, LCtx, LHS);

101 if

(!

Result

.isUnknown()) {

102

state = state->BindExpr(B, LCtx,

Result

);

117

llvm_unreachable(

"Invalid opcode for compound assignment."

);

118 case

BO_MulAssign: Op = BO_Mul;

break

;

119 case

BO_DivAssign: Op = BO_Div;

break

;

120 case

BO_RemAssign: Op = BO_Rem;

break

;

121 case

BO_AddAssign: Op = BO_Add;

break

;

122 case

BO_SubAssign: Op = BO_Sub;

break

;

123 case

BO_ShlAssign: Op = BO_Shl;

break

;

124 case

BO_ShrAssign: Op = BO_Shr;

break

;

125 case

BO_AndAssign: Op = BO_And;

break

;

126 case

BO_XorAssign: Op = BO_Xor;

break

;

127 case

BO_OrAssign: Op = BO_Or;

break

;

133 SVal

location = LeftV;

134 evalLoad

(Tmp, B, LHS, *it, state, location);

137

state = N->getState();

139 SVal V

= state->getSVal(LHS, LCtx);

143

cast<CompoundAssignOperator>(B)->getComputationResultType();

147

cast<CompoundAssignOperator>(B)->getComputationLHSType();

164 if

(

Result

.isUnknown()) {

181

state = state->BindExpr(B, LCtx, location);

183

state = state->BindExpr(B, LCtx,

Result

);

185 evalStore

(Tmp2, B, LHS, N, state, location, LHSVal);

209

dyn_cast_or_null<BlockDataRegion>(

V

.getAsRegion())) {

211 auto

ReferencedVars = BDR->referenced_vars();

214 for

(

auto

Var : ReferencedVars) {

215 const VarRegion

*capturedR = Var.getCapturedRegion();

224 const Expr

*copyExpr =

nullptr

;

226

assert(CI->getVariable() == capturedR->

getDecl

());

227

copyExpr = CI->getCopyExpr();

231 if

(capturedR != originalR) {

235

originalV = State->getSVal(copyExpr, LCtx);

266 SVal

OrigV = state->getSVal(Ex, LCtx);

270 if

(CastE->

getCastKind

() == CK_BooleanToSignedIntegral &&

V

.isValid())

273

state = state->BindExpr(CastE, LCtx,

V

);

274 if

(

V

.isUnknown() && !OrigV.

isUnknown

()) {

289

CastE->

getCastKind

() == CK_LValueToRValueBitCast) {

293 evalLoad

(Dst, CastE, CastE, subExprNode, state, state->getSVal(Ex, LCtx));

302 if

(

const ExplicitCastExpr

*ExCast=dyn_cast_or_null<ExplicitCastExpr>(CastE))

303 T

= ExCast->getTypeAsWritten();

311 case

CK_LValueToRValue:

312 case

CK_LValueToRValueBitCast:

313

llvm_unreachable(

"LValueToRValue casts handled earlier."

);

318 case

CK_ARCProduceObject:

319 case

CK_ARCConsumeObject:

320 case

CK_ARCReclaimReturnedObject:

321 case

CK_ARCExtendBlockObject:

322 case

CK_CopyAndAutoreleaseBlockObject:

326 case

CK_AtomicToNonAtomic:

327 case

CK_NonAtomicToAtomic:

330 case

CK_ConstructorConversion:

331 case

CK_UserDefinedConversion:

332 case

CK_FunctionToPointerDecay:

333 case

CK_BuiltinFnToFnPtr:

334 case

CK_HLSLArrayRValue: {

338 SVal V

= state->getSVal(Ex, LCtx);

339

state = state->BindExpr(CastE, LCtx,

V

);

343 case

CK_MemberPointerToBoolean:

344 case

CK_PointerToBoolean: {

345 SVal V

= state->getSVal(Ex, LCtx);

348 V

= svalBuilder.

makeTruthVal

(!PTMSV->isNullMemberPointer(), ExTy);

349 if

(

V

.isUndef() || PTMSV) {

350

state = state->BindExpr(CastE, LCtx,

V

);

360 case

CK_ArrayToPointerDecay:

362 case

CK_AddressSpaceConversion:

363 case

CK_BooleanToSignedIntegral:

364 case

CK_IntegralToPointer:

365 case

CK_PointerToIntegral: {

366 SVal V

= state->getSVal(Ex, LCtx);

367 if

(isa<nonloc::PointerToMember>(

V

)) {

368

state = state->BindExpr(CastE, LCtx,

UnknownVal

());

377 case

CK_IntegralToBoolean:

378 case

CK_IntegralToFloating:

379 case

CK_FloatingToIntegral:

380 case

CK_FloatingToBoolean:

381 case

CK_FloatingCast:

382 case

CK_FloatingRealToComplex:

383 case

CK_FloatingComplexToReal:

384 case

CK_FloatingComplexToBoolean:

385 case

CK_FloatingComplexCast:

386 case

CK_FloatingComplexToIntegralComplex:

387 case

CK_IntegralRealToComplex:

388 case

CK_IntegralComplexToReal:

389 case

CK_IntegralComplexToBoolean:

390 case

CK_IntegralComplexCast:

391 case

CK_IntegralComplexToFloatingComplex:

392 case

CK_CPointerToObjCPointerCast:

393 case

CK_BlockPointerToObjCPointerCast:

394 case

CK_AnyPointerToBlockPointerCast:

395 case

CK_ObjCObjectLValueCast:

396 case

CK_ZeroToOCLOpaqueType:

397 case

CK_IntToOCLSampler:

398 case

CK_LValueBitCast:

399 case

CK_FloatingToFixedPoint:

400 case

CK_FixedPointToFloating:

401 case

CK_FixedPointCast:

402 case

CK_FixedPointToBoolean:

403 case

CK_FixedPointToIntegral:

404 case

CK_IntegralToFixedPoint: {

409 case

CK_IntegralCast: {

411 SVal V

= state->getSVal(Ex, LCtx);

412 if

(AMgr.

options

.ShouldSupportSymbolicIntegerCasts)

416

state = state->BindExpr(CastE, LCtx,

V

);

420 case

CK_DerivedToBase:

421 case

CK_UncheckedDerivedToBase: {

423 SVal

val = state->getSVal(Ex, LCtx);

425

state = state->BindExpr(CastE, LCtx, val);

431 SVal

val = state->getSVal(Ex, LCtx);

442 if

(std::optional<SVal>

V

=

456

state = state->BindExpr(CastE, LCtx,

465

state = state->BindExpr(CastE, LCtx, NewSym);

468

state = state->BindExpr(CastE, LCtx, val);

473 case

CK_BaseToDerived: {

474 SVal

val = state->getSVal(Ex, LCtx);

490

state = state->BindExpr(CastE, LCtx, val);

494 case

CK_NullToPointer: {

496

state = state->BindExpr(CastE, LCtx,

V

);

500 case

CK_NullToMemberPointer: {

502

state = state->BindExpr(CastE, LCtx,

V

);

506 case

CK_DerivedToBaseMemberPointer:

507 case

CK_BaseToDerivedMemberPointer:

508 case

CK_ReinterpretMemberPointer: {

509 SVal V

= state->getSVal(Ex, LCtx);

514

state = state->BindExpr(CastE, LCtx, CastedPTMSV);

525 case

CK_HLSLVectorTruncation: {

530 nullptr

, CastE, LCtx, resultType,

532

state = state->BindExpr(CastE, LCtx, result);

551 if

(isa<CXXConstructExpr, CXXStdInitializerListExpr>(

Init

)) {

554

assert(isa<InitListExpr>(

Init

));

555 Loc

CLLoc = State->getLValue(CL, LCtx);

556

State = State->bindLoc(CLLoc,

V

, LCtx);

567 if

(isa<TypedefNameDecl>(*DS->

decl_begin

())) {

605 SVal

InitVal = state->getSVal(InitEx, LC);

609

state = finishObjectConstruction(state, DS, LC);

618 if

(InitEx->isGLValue()) {

629

evalBind(Dst2, DS, UpdatedN, state->getLValue(VD, LC), InitVal,

true

);

703 if

(

const BinaryOperator

*Term = cast_or_null<BinaryOperator>(

T

.getStmt())) {

705

assert(Term->isLogicalOp());

715

assert(!SrcBlock->

empty

());

752 if

(NumInitElements == 0) {

758 for

(

const Stmt

*S : llvm::reverse(*IE)) {

759 SVal V

= state->getSVal(cast<Expr>(S), LCtx);

764

state->BindExpr(IE, LCtx,

772

assert(NumInitElements <= 1);

775 if

(NumInitElements == 0)

778 V

= state->getSVal(IE->

getInit

(0), LCtx);

793 const CFGBlock

*SrcBlock =

nullptr

;

808

SrcState = N->getState();

812

assert(SrcBlock &&

"missing function entry"

);

816 bool

hasValue =

false

;

819 for

(

CFGElement

CE : llvm::reverse(*SrcBlock)) {

820 if

(std::optional<CFGStmt> CS = CE.getAs<

CFGStmt

>()) {

821 const Expr

*ValEx = cast<Expr>(CS->getStmt());

827

L = OpaqueEx->getSourceExpr();

833 V

= SrcState->getSVal(ValEx, LCtx);

844

B.

generateNode

(Ex, Pred, state->BindExpr(Ex, LCtx,

V

,

true

));

880 if

(Ex->

getKind

() == UETT_SizeOf) {

899

state = state->BindExpr(

900

Ex, N->getLocationContext(),

917 const Expr

*Ex =

U

->getSubExpr()->IgnoreParens();

920

Bldr.

generateNode

(

U

, N, state->BindExpr(

U

, LCtx, state->getSVal(Ex, LCtx)));

933 switch

(

U

->getOpcode()) {

942 const Expr

*Ex =

U

->getSubExpr()->IgnoreParens();

951

assert (

U

->getType() == Ex->

getType

());

955

state->BindExpr(

U

, LCtx, state->getSVal(Ex, LCtx)));

960 const Expr

*Ex =

U

->getSubExpr()->IgnoreParens();

976 const Expr

*Ex =

U

->getSubExpr()->IgnoreParens();

977 if

(

const DeclRefExpr

*DRE = dyn_cast<DeclRefExpr>(Ex)) {

980 if

(isa<CXXMethodDecl, FieldDecl, IndirectFieldDecl>(VD)) {

993

assert(!

U

->isGLValue());

1004

assert (!

U

->isGLValue());

1005 const Expr

*Ex =

U

->getSubExpr()->IgnoreParens();

1010 SVal V

= state->getSVal(Ex, LCtx);

1012 if

(

V

.isUnknownOrUndef()) {

1017 switch

(

U

->getOpcode()) {

1019

llvm_unreachable(

"Invalid Opcode."

);

1022

state = state->BindExpr(

1027

state = state->BindExpr(

U

, LCtx,

1036 if

(std::optional<Loc> LV =

V

.getAs<

Loc

>()) {

1047

state = state->BindExpr(

U

, LCtx,

Result

);

1063

assert (

U

->isIncrementDecrementOp());

1064 const Expr

*Ex =

U

->getSubExpr()->IgnoreParens();

1068 SVal

loc = state->getSVal(Ex, LCtx);

1072 evalLoad

(Tmp,

U

, Ex, Pred, state, loc);

1077

state = N->getState();

1078

assert(LCtx == N->getLocationContext());

1079 SVal

V2_untested = state->getSVal(Ex, LCtx);

1083

state = state->BindExpr(

U

, LCtx, V2_untested);

1088 evalStore

(Dst3,

U

, Ex, N, state, loc, V2_untested);

1104 if

(

U

->getType()->isAnyPointerType())

1106 else if

(

U

->getType()->isIntegralOrEnumerationType())

1115 if

(

U

->getType()->isBooleanType() &&

U

->isIncrementOp())

1121 if

(

Result

.isUnknown()){

1134 if

(!state->assume(Constraint,

true

)) {

1137

Constraint = svalBuilder.

evalEQ

(state, SymVal,

1140

state = state->assume(Constraint,

false

);

1148 if

(

U

->isGLValue())

1149

state = state->BindExpr(

U

, LCtx, loc);

1151

state = state->BindExpr(

U

, LCtx,

U

->isPostfix() ? V2 :

Result

);

Defines the C++ Decl subclasses, other than those for templates (found in DeclTemplate....

Defines the clang::Expr interface and subclasses for C++ expressions.

static SVal conjureOffsetSymbolOnLocation(SVal Symbol, SVal Other, Expr *Expression, SValBuilder &svalBuilder, unsigned Count, const LocationContext *LCtx)

Optionally conjure and return a symbol for offset when processing an expression Expression.

QualType getRValueReferenceType(QualType T) const

Return the uniqued reference to the type for an rvalue reference to the specified type.

CanQualType getCanonicalType(QualType T) const

Return the canonical (structural) type corresponding to the specified potentially non-canonical type ...

QualType getPointerType(QualType T) const

Return the uniqued reference to the type for a pointer to the specified type.

QualType getLValueReferenceType(QualType T, bool SpelledAsLValue=true) const

Return the uniqued reference to the type for an lvalue reference to the specified type.

A builtin binary operation expression such as "x + y" or "x <= y".

static bool isAdditiveOp(Opcode Opc)

static bool isAssignmentOp(Opcode Opc)

static bool isCompoundAssignmentOp(Opcode Opc)

Represents a block literal declaration, which is like an unnamed FunctionDecl.

capture_const_iterator capture_begin() const

capture_const_iterator capture_end() const

const CFGBlock * getSrc() const

const CFGBlock * getDst() const

BlockExpr - Adaptor class for mixing a BlockDecl with expressions.

const BlockDecl * getBlockDecl() const

This class is used for builtin types like 'int'.

Represents a single basic block in a source-level CFG.

reverse_iterator rbegin()

CFGTerminator getTerminator() const

succ_iterator succ_begin()

unsigned succ_size() const

Represents a top-level expression in a basic block.

T castAs() const

Convert to the specified CFGElement type, asserting that this CFGElement is of the desired type.

const Stmt * getStmt() const

Represents CFGBlock terminator statement.

CastExpr - Base class for type casts, including both implicit casts (ImplicitCastExpr) and explicit c...

CastKind getCastKind() const

llvm::iterator_range< path_iterator > path()

Path through the class hierarchy taken by casts between base and derived classes (see implementation ...

CharUnits - This is an opaque type for sizes expressed in character units.

QuantityType getQuantity() const

getQuantity - Get the raw integer representation of this quantity.

static CharUnits fromQuantity(QuantityType Quantity)

fromQuantity - Construct a CharUnits quantity from a raw integer type.

CompoundLiteralExpr - [C99 6.5.2.5].

const Expr * getInitializer() const

A reference to a declared variable, function, enum, etc.

DeclStmt - Adaptor class for mixing declarations with statements and expressions.

bool isSingleDecl() const

isSingleDecl - This method returns true if this DeclStmt refers to a single Decl.

decl_iterator decl_begin()

ExplicitCastExpr - An explicit cast written in the source code.

This represents one expression.

bool EvaluateAsInt(EvalResult &Result, const ASTContext &Ctx, SideEffectsKind AllowSideEffects=SE_NoSideEffects, bool InConstantContext=false) const

EvaluateAsInt - Return true if this is a constant which we can fold and convert to an integer,...

llvm::APSInt EvaluateKnownConstInt(const ASTContext &Ctx, SmallVectorImpl< PartialDiagnosticAt > *Diag=nullptr) const

EvaluateKnownConstInt - Call EvaluateAsRValue and return the folded integer.

Expr * IgnoreParens() LLVM_READONLY

Skip past any parentheses which might surround this expression until reaching a fixed point.

Describes an C or C++ initializer list.

bool isTransparent() const

Is this a transparent initializer list (that is, an InitListExpr that is purely syntactic,...

unsigned getNumInits() const

const Expr * getInit(unsigned Init) const

It wraps the AnalysisDeclContext to represent both the call stack with the help of StackFrameContext ...

Represents a class type in Objective C.

OffsetOfExpr - [C99 7.17] - This represents an expression of the form offsetof(record-type,...

OpaqueValueExpr - An expression referring to an opaque object of a fixed type and value class.

Represents a point after we ran remove dead bindings BEFORE processing the given statement.

T castAs() const

Convert to the specified ProgramPoint type, asserting that this ProgramPoint is of the desired type.

std::optional< T > getAs() const

Convert to the specified ProgramPoint type, returning std::nullopt if this ProgramPoint is not of the...

A (possibly-)qualified type.

Stmt - This represents one statement.

bool isSignedIntegerType() const

Return true if this is an integer type that is signed, according to C99 6.2.5p4 [char,...

bool isRValueReferenceType() const

bool isConstantSizeType() const

Return true if this is not a variable sized type, according to the rules of C99 6....

const T * castAs() const

Member-template castAs<specific type>.

bool isReferenceType() const

bool isVariableArrayType() const

bool isIntegralOrEnumerationType() const

Determine whether this type is an integral or enumeration type.

bool isLValueReferenceType() const

bool isAnyComplexType() const

bool isIncompleteType(NamedDecl **Def=nullptr) const

Types are partitioned into 3 broad categories (C99 6.2.5p1): object types, function types,...

bool isVectorType() const

bool isFloatingType() const

const T * getAs() const

Member-template getAs<specific type>'.

bool isRecordType() const

UnaryExprOrTypeTraitExpr - expression with either a type or (unevaluated) expression operand.

QualType getTypeOfArgument() const

Gets the argument type, or the type of the argument expression, whichever is appropriate.

UnaryExprOrTypeTrait getKind() const

UnaryOperator - This represents the unary-expression's (except sizeof and alignof),...

Represent the declaration of a variable (in which case it is an lvalue) a function (in which case it ...

Represents a variable declaration or definition.

const Expr * getInit() const

AnalyzerOptions & options

llvm::ImmutableList< SVal > getEmptySValList()

llvm::ImmutableList< SVal > prependSVal(SVal X, llvm::ImmutableList< SVal > L)

BlockDataRegion - A region that represents a block instance.

void runCheckersForPostStmt(ExplodedNodeSet &Dst, const ExplodedNodeSet &Src, const Stmt *S, ExprEngine &Eng, bool wasInlined=false)

Run checkers for post-visiting Stmts.

void runCheckersForPreStmt(ExplodedNodeSet &Dst, const ExplodedNodeSet &Src, const Stmt *S, ExprEngine &Eng)

Run checkers for pre-visiting Stmts.

ImplTy::iterator iterator

void insert(const ExplodedNodeSet &S)

const ProgramStateRef & getState() const

pred_iterator pred_begin()

ProgramPoint getLocation() const

getLocation - Returns the edge associated with the given node.

unsigned pred_size() const

const LocationContext * getLocationContext() const

void VisitBinaryOperator(const BinaryOperator *B, ExplodedNode *Pred, ExplodedNodeSet &Dst)

VisitBinaryOperator - Transfer function logic for binary operators.

void VisitGuardedExpr(const Expr *Ex, const Expr *L, const Expr *R, ExplodedNode *Pred, ExplodedNodeSet &Dst)

VisitGuardedExpr - Transfer function logic for ?, __builtin_choose.

void VisitCast(const CastExpr *CastE, const Expr *Ex, ExplodedNode *Pred, ExplodedNodeSet &Dst)

VisitCast - Transfer function logic for all casts (implicit and explicit).

BasicValueFactory & getBasicVals()

void VisitLogicalExpr(const BinaryOperator *B, ExplodedNode *Pred, ExplodedNodeSet &Dst)

VisitLogicalExpr - Transfer function logic for '&&', '||'.

SVal evalBinOp(ProgramStateRef ST, BinaryOperator::Opcode Op, SVal LHS, SVal RHS, QualType T)

void VisitUnaryOperator(const UnaryOperator *B, ExplodedNode *Pred, ExplodedNodeSet &Dst)

VisitUnaryOperator - Transfer function logic for unary operators.

void VisitDeclStmt(const DeclStmt *DS, ExplodedNode *Pred, ExplodedNodeSet &Dst)

VisitDeclStmt - Transfer function logic for DeclStmts.

ProgramStateRef handleLValueBitCast(ProgramStateRef state, const Expr *Ex, const LocationContext *LCtx, QualType T, QualType ExTy, const CastExpr *CastE, StmtNodeBuilder &Bldr, ExplodedNode *Pred)

static std::optional< SVal > getObjectUnderConstruction(ProgramStateRef State, const ConstructionContextItem &Item, const LocationContext *LC)

By looking at a certain item that may be potentially part of an object's ConstructionContext,...

void VisitBlockExpr(const BlockExpr *BE, ExplodedNode *Pred, ExplodedNodeSet &Dst)

VisitBlockExpr - Transfer function logic for BlockExprs.

void VisitIncrementDecrementOperator(const UnaryOperator *U, ExplodedNode *Pred, ExplodedNodeSet &Dst)

Handle ++ and – (both pre- and post-increment).

ASTContext & getContext() const

getContext - Return the ASTContext associated with this analysis.

StoreManager & getStoreManager()

void VisitInitListExpr(const InitListExpr *E, ExplodedNode *Pred, ExplodedNodeSet &Dst)

void VisitUnaryExprOrTypeTraitExpr(const UnaryExprOrTypeTraitExpr *Ex, ExplodedNode *Pred, ExplodedNodeSet &Dst)

VisitUnaryExprOrTypeTraitExpr - Transfer function for sizeof.

CheckerManager & getCheckerManager() const

void VisitOffsetOfExpr(const OffsetOfExpr *Ex, ExplodedNode *Pred, ExplodedNodeSet &Dst)

VisitOffsetOfExpr - Transfer function for offsetof.

void evalLoad(ExplodedNodeSet &Dst, const Expr *NodeEx, const Expr *BoundExpr, ExplodedNode *Pred, ProgramStateRef St, SVal location, const ProgramPointTag *tag=nullptr, QualType LoadTy=QualType())

Simulate a read of the result of Ex.

void handleUOExtension(ExplodedNode *N, const UnaryOperator *U, StmtNodeBuilder &Bldr)

void VisitCompoundLiteralExpr(const CompoundLiteralExpr *CL, ExplodedNode *Pred, ExplodedNodeSet &Dst)

VisitCompoundLiteralExpr - Transfer function logic for compound literals.

SValBuilder & getSValBuilder()

void evalStore(ExplodedNodeSet &Dst, const Expr *AssignE, const Expr *StoreE, ExplodedNode *Pred, ProgramStateRef St, SVal TargetLV, SVal Val, const ProgramPointTag *tag=nullptr)

evalStore - Handle the semantics of a store via an assignment.

static bool isLocType(QualType T)

unsigned blockCount() const

Returns the number of times the current basic block has been visited on the exploded graph path.

void takeNodes(const ExplodedNodeSet &S)

void addNodes(const ExplodedNodeSet &S)

const ExplodedNodeSet & getResults()

StoreManager & getStoreManager()

DefinedOrUnknownSVal makeZeroVal(QualType type)

Construct an SVal representing '0' for the specified type.

DefinedSVal getMemberPointer(const NamedDecl *ND)

NonLoc makePointerToMember(const DeclaratorDecl *DD)

SVal evalMinus(NonLoc val)

SVal evalComplement(NonLoc val)

NonLoc makeCompoundVal(QualType type, llvm::ImmutableList< SVal > vals)

DefinedSVal getBlockPointer(const BlockDecl *block, CanQualType locTy, const LocationContext *locContext, unsigned blockCount)

NonLoc makeArrayIndex(uint64_t idx)

nonloc::ConcreteInt makeIntVal(const IntegerLiteral *integer)

SVal evalCast(SVal V, QualType CastTy, QualType OriginalTy)

Cast a given SVal to another SVal using given QualType's.

DefinedOrUnknownSVal conjureSymbolVal(const void *symbolTag, const Expr *expr, const LocationContext *LCtx, unsigned count)

Create a new symbol with a unique 'name'.

virtual SVal simplifySVal(ProgramStateRef State, SVal Val)=0

Simplify symbolic expressions within a given SVal.

SVal evalEQ(ProgramStateRef state, SVal lhs, SVal rhs)

nonloc::ConcreteInt makeTruthVal(bool b, QualType type)

loc::ConcreteInt makeNullWithType(QualType type)

Create NULL pointer, with proper pointer bit-width for given address space.

SVal evalIntegralCast(ProgramStateRef state, SVal val, QualType castTy, QualType originalType)

SVal - This represents a symbolic expression, which can be either an L-value or an R-value.

bool isZeroConstant() const

bool isUnknownOrUndef() const

T castAs() const

Convert to the specified SVal type, asserting that this SVal is of the desired type.

This builder class is useful for generating nodes that resulted from visiting a statement.

ExplodedNode * generateNode(const Stmt *S, ExplodedNode *Pred, ProgramStateRef St, const ProgramPointTag *tag=nullptr, ProgramPoint::Kind K=ProgramPoint::PostStmtKind)

ExplodedNode * generateSink(const Stmt *S, ExplodedNode *Pred, ProgramStateRef St, const ProgramPointTag *tag=nullptr, ProgramPoint::Kind K=ProgramPoint::PostStmtKind)

SVal evalDerivedToBase(SVal Derived, const CastExpr *Cast)

Evaluates a chain of derived-to-base casts through the path specified in Cast.

std::optional< SVal > evalBaseToDerived(SVal Base, QualType DerivedPtrType)

Attempts to do a down cast.

TypedValueRegion - An abstract class representing regions having a typed value.

const VarDecl * getDecl() const override=0

Value representing integer constant.

Value representing pointer-to-member.

@ PSK_EscapeOther

The reason for pointer escape is unknown.

The JSON file list parser is used to communicate input to InstallAPI.

@ Result

The result type of a method or function.

const FunctionProtoType * T

@ Other

Other implicit parameter.

EvalResult is a struct with detailed info about an evaluated expression.


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4