clang 10.0.0git

Functions
SimpleSValBuilder.cpp File Reference
`#include "clang/StaticAnalyzer/Core/PathSensitive/SValBuilder.h"`
`#include "clang/StaticAnalyzer/Core/PathSensitive/AnalysisManager.h"`
`#include "clang/StaticAnalyzer/Core/PathSensitive/APSIntType.h"`
`#include "clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h"`
`#include "clang/StaticAnalyzer/Core/PathSensitive/SubEngine.h"`
`#include "clang/StaticAnalyzer/Core/PathSensitive/SValVisitor.h"`
Include dependency graph for SimpleSValBuilder.cpp:

Go to the source code of this file.

## Functions
static bool | isInRelation (BinaryOperator::Opcode Rel, SymbolRef Sym, llvm::APSInt Bound, ProgramStateRef State)
static bool | isWithinConstantOverflowBounds (SymbolRef Sym, ProgramStateRef State)
static bool | isWithinConstantOverflowBounds (llvm::APSInt I)
static std::pair< SymbolRef, llvm::APSInt > | decomposeSymbol (SymbolRef Sym, BasicValueFactory &BV)
static NonLoc | doRearrangeUnchecked (ProgramStateRef State, BinaryOperator::Opcode Op, SymbolRef LSym, llvm::APSInt LInt, SymbolRef RSym, llvm::APSInt RInt)
static bool | shouldRearrange (ProgramStateRef State, BinaryOperator::Opcode Op, SymbolRef Sym, llvm::APSInt Int, QualType Ty)
static Optional< NonLoc > | tryRearrange (ProgramStateRef State, BinaryOperator::Opcode Op, NonLoc Lhs, NonLoc Rhs, QualType ResultTy)
static SVal | evalBinOpFieldRegionFieldRegion (const FieldRegion *LeftFR, const FieldRegion *RightFR, BinaryOperator::Opcode op, QualType resultTy, SimpleSValBuilder &SVB)

## Function Documentation

## ◆ decomposeSymbol()

static std::pair<SymbolRef, llvm::APSInt> decomposeSymbol | ( | SymbolRef | Sym,
|  | BasicValueFactory & | BV
| ) |  |
| static

Definition at line 356 of file SimpleSValBuilder.cpp.

References clang::BinaryOperator::isAdditiveOp().

Referenced by tryRearrange().

## ◆ doRearrangeUnchecked()

static NonLoc doRearrangeUnchecked | ( | ProgramStateRef | State,
|  | BinaryOperator::Opcode | Op,
|  | SymbolRef | LSym,
|  | llvm::APSInt | LInt,
|  | SymbolRef | RSym,
|  | llvm::APSInt | RInt
| ) |  |
| static

Definition at line 371 of file SimpleSValBuilder.cpp.

References clang::BinaryOperator::isAdditiveOp(), clang::BinaryOperator::isComparisonOp(), and clang::BinaryOperator::reverseComparisonOp().

Referenced by tryRearrange().

## ◆ evalBinOpFieldRegionFieldRegion()

static SVal evalBinOpFieldRegionFieldRegion | ( | const FieldRegion * | LeftFR,
|  | const FieldRegion * | RightFR,
|  | BinaryOperator::Opcode | op,
|  | QualType | resultTy,
|  | SimpleSValBuilder & | SVB
| ) |  |
| static

Definition at line 774 of file SimpleSValBuilder.cpp.

References clang::RecordDecl::fields(), clang::ento::SVal::getAs(), clang::FieldDecl::getParent(), clang::Type::getPointeeType(), getValue(), clang::Type::isAnyPointerType(), clang::BinaryOperator::isComparisonOp(), clang::Type::isVoidType(), clang::prec::PointerToMember, clang::BinaryOperator::reverseComparisonOp(), clang::CodeGen::state, State, and V.

## ◆ isInRelation()

static bool isInRelation | ( | BinaryOperator::Opcode | Rel,
|  | SymbolRef | Sym,
|  | llvm::APSInt | Bound,
|  | ProgramStateRef | State
| ) |  |
| static

Definition at line 313 of file SimpleSValBuilder.cpp.

Referenced by isWithinConstantOverflowBounds().

## ◆ isWithinConstantOverflowBounds() [1/2]

static bool isWithinConstantOverflowBounds | ( | SymbolRef | Sym,
|  | ProgramStateRef | State
| ) |  |
| static

Definition at line 330 of file SimpleSValBuilder.cpp.

References isInRelation(), and clang::Type::isSignedIntegerOrEnumerationType().

Referenced by shouldRearrange().

## ◆ isWithinConstantOverflowBounds() [2/2]

static bool isWithinConstantOverflowBounds | ( | llvm::APSInt | I | ) |
| static

Definition at line 346 of file SimpleSValBuilder.cpp.

## ◆ shouldRearrange()

static bool shouldRearrange | ( | ProgramStateRef | State,
|  | BinaryOperator::Opcode | Op,
|  | SymbolRef | Sym,
|  | llvm::APSInt | Int,
|  | QualType | Ty
| ) |  |
| static

Definition at line 438 of file SimpleSValBuilder.cpp.

References clang::BinaryOperator::isComparisonOp(), and isWithinConstantOverflowBounds().

Referenced by tryRearrange().

## ◆ tryRearrange()

static Optional<NonLoc> tryRearrange | ( | ProgramStateRef | State,
|  | BinaryOperator::Opcode | Op,
|  | NonLoc | Lhs,
|  | NonLoc | Rhs,
|  | QualType | ResultTy
| ) |  |
| static

Definition at line 446 of file SimpleSValBuilder.cpp.

References decomposeSymbol(), doRearrangeUnchecked(), getValue(), clang::BinaryOperator::isAdditiveOp(), clang::BinaryOperator::isComparisonOp(), clang::Type::isIntegralOrEnumerationType(), clang::QualType::isNull(), clang::Type::isSignedIntegerOrEnumerationType(), clang::prec::PointerToMember, shouldRearrange(), and clang::CodeGen::state.