class RangedConstraintManager

Declaration

class RangedConstraintManager : public SimpleConstraintManager { /* full declaration omitted */ };

Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/RangedConstraintManager.h:407

Inherits from: SimpleConstraintManager

Member Variables

Inherited from ConstraintManager:

protected AssumeStack

Method Overview

  • public RangedConstraintManager(clang::ento::ExprEngine * EE, clang::ento::SValBuilder & SB)
  • public clang::ento::ProgramStateRef assumeSym(clang::ento::ProgramStateRef State, clang::ento::SymbolRef Sym, bool Assumption)
  • protected virtual clang::ento::ProgramStateRef assumeSymEQ(clang::ento::ProgramStateRef State, clang::ento::SymbolRef Sym, const llvm::APSInt & V, const llvm::APSInt & Adjustment)
  • protected virtual clang::ento::ProgramStateRef assumeSymGE(clang::ento::ProgramStateRef State, clang::ento::SymbolRef Sym, const llvm::APSInt & V, const llvm::APSInt & Adjustment)
  • protected virtual clang::ento::ProgramStateRef assumeSymGT(clang::ento::ProgramStateRef State, clang::ento::SymbolRef Sym, const llvm::APSInt & V, const llvm::APSInt & Adjustment)
  • public clang::ento::ProgramStateRef assumeSymInclusiveRange(clang::ento::ProgramStateRef State, clang::ento::SymbolRef Sym, const llvm::APSInt & From, const llvm::APSInt & To, bool InRange)
  • protected virtual clang::ento::ProgramStateRef assumeSymLE(clang::ento::ProgramStateRef State, clang::ento::SymbolRef Sym, const llvm::APSInt & V, const llvm::APSInt & Adjustment)
  • protected virtual clang::ento::ProgramStateRef assumeSymLT(clang::ento::ProgramStateRef State, clang::ento::SymbolRef Sym, const llvm::APSInt & V, const llvm::APSInt & Adjustment)
  • protected virtual clang::ento::ProgramStateRef assumeSymNE(clang::ento::ProgramStateRef State, clang::ento::SymbolRef Sym, const llvm::APSInt & V, const llvm::APSInt & Adjustment)
  • protected virtual clang::ento::ProgramStateRef assumeSymOutsideInclusiveRange(clang::ento::ProgramStateRef State, clang::ento::SymbolRef Sym, const llvm::APSInt & From, const llvm::APSInt & To, const llvm::APSInt & Adjustment)
  • protected virtual clang::ento::ProgramStateRef assumeSymRel(clang::ento::ProgramStateRef State, clang::ento::SymbolRef Sym, BinaryOperator::Opcode op, const llvm::APSInt & Int)
  • public clang::ento::ProgramStateRef assumeSymUnsupported(clang::ento::ProgramStateRef State, clang::ento::SymbolRef Sym, bool Assumption)
  • protected virtual clang::ento::ProgramStateRef assumeSymWithinInclusiveRange(clang::ento::ProgramStateRef State, clang::ento::SymbolRef Sym, const llvm::APSInt & From, const llvm::APSInt & To, const llvm::APSInt & Adjustment)
  • private static void computeAdjustment(clang::ento::SymbolRef & Sym, llvm::APSInt & Adjustment)
  • public ~RangedConstraintManager()

Inherited from SimpleConstraintManager:

Inherited from ConstraintManager:

Methods

RangedConstraintManager(
    clang::ento::ExprEngine* EE,
    clang::ento::SValBuilder& SB)

Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/RangedConstraintManager.h:409

Parameters

clang::ento::ExprEngine* EE
clang::ento::SValBuilder& SB

clang::ento::ProgramStateRef assumeSym(
    clang::ento::ProgramStateRef State,
    clang::ento::SymbolRef Sym,
    bool Assumption)

Description

Given a symbolic expression that can be reasoned about, assume that it is true/false and generate the new program state.

Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/RangedConstraintManager.h:418

Parameters

clang::ento::ProgramStateRef State
clang::ento::SymbolRef Sym
bool Assumption

virtual clang::ento::ProgramStateRef assumeSymEQ(
    clang::ento::ProgramStateRef State,
    clang::ento::SymbolRef Sym,
    const llvm::APSInt& V,
    const llvm::APSInt& Adjustment)

Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/RangedConstraintManager.h:446

Parameters

clang::ento::ProgramStateRef State
clang::ento::SymbolRef Sym
const llvm::APSInt& V
const llvm::APSInt& Adjustment

virtual clang::ento::ProgramStateRef assumeSymGE(
    clang::ento::ProgramStateRef State,
    clang::ento::SymbolRef Sym,
    const llvm::APSInt& V,
    const llvm::APSInt& Adjustment)

Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/RangedConstraintManager.h:462

Parameters

clang::ento::ProgramStateRef State
clang::ento::SymbolRef Sym
const llvm::APSInt& V
const llvm::APSInt& Adjustment

virtual clang::ento::ProgramStateRef assumeSymGT(
    clang::ento::ProgramStateRef State,
    clang::ento::SymbolRef Sym,
    const llvm::APSInt& V,
    const llvm::APSInt& Adjustment)

Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/RangedConstraintManager.h:454

Parameters

clang::ento::ProgramStateRef State
clang::ento::SymbolRef Sym
const llvm::APSInt& V
const llvm::APSInt& Adjustment

clang::ento::ProgramStateRef
assumeSymInclusiveRange(
    clang::ento::ProgramStateRef State,
    clang::ento::SymbolRef Sym,
    const llvm::APSInt& From,
    const llvm::APSInt& To,
    bool InRange)

Description

Given a symbolic expression within the range [From, To], assume that it is true/false and generate the new program state. This function is used to handle case ranges produced by a language extension for switch case statements.

Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/RangedConstraintManager.h:421

Parameters

clang::ento::ProgramStateRef State
clang::ento::SymbolRef Sym
const llvm::APSInt& From
const llvm::APSInt& To
bool InRange

virtual clang::ento::ProgramStateRef assumeSymLE(
    clang::ento::ProgramStateRef State,
    clang::ento::SymbolRef Sym,
    const llvm::APSInt& V,
    const llvm::APSInt& Adjustment)

Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/RangedConstraintManager.h:458

Parameters

clang::ento::ProgramStateRef State
clang::ento::SymbolRef Sym
const llvm::APSInt& V
const llvm::APSInt& Adjustment

virtual clang::ento::ProgramStateRef assumeSymLT(
    clang::ento::ProgramStateRef State,
    clang::ento::SymbolRef Sym,
    const llvm::APSInt& V,
    const llvm::APSInt& Adjustment)

Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/RangedConstraintManager.h:450

Parameters

clang::ento::ProgramStateRef State
clang::ento::SymbolRef Sym
const llvm::APSInt& V
const llvm::APSInt& Adjustment

virtual clang::ento::ProgramStateRef assumeSymNE(
    clang::ento::ProgramStateRef State,
    clang::ento::SymbolRef Sym,
    const llvm::APSInt& V,
    const llvm::APSInt& Adjustment)

Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/RangedConstraintManager.h:442

Parameters

clang::ento::ProgramStateRef State
clang::ento::SymbolRef Sym
const llvm::APSInt& V
const llvm::APSInt& Adjustment

virtual clang::ento::ProgramStateRef
assumeSymOutsideInclusiveRange(
    clang::ento::ProgramStateRef State,
    clang::ento::SymbolRef Sym,
    const llvm::APSInt& From,
    const llvm::APSInt& To,
    const llvm::APSInt& Adjustment)

Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/RangedConstraintManager.h:470

Parameters

clang::ento::ProgramStateRef State
clang::ento::SymbolRef Sym
const llvm::APSInt& From
const llvm::APSInt& To
const llvm::APSInt& Adjustment

virtual clang::ento::ProgramStateRef assumeSymRel(
    clang::ento::ProgramStateRef State,
    clang::ento::SymbolRef Sym,
    BinaryOperator::Opcode op,
    const llvm::APSInt& Int)

Description

Assume a constraint between a symbolic expression and a concrete integer.

Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/RangedConstraintManager.h:431

Parameters

clang::ento::ProgramStateRef State
clang::ento::SymbolRef Sym
BinaryOperator::Opcode op
const llvm::APSInt& Int

clang::ento::ProgramStateRef assumeSymUnsupported(
    clang::ento::ProgramStateRef State,
    clang::ento::SymbolRef Sym,
    bool Assumption)

Description

Given a symbolic expression that cannot be reasoned about, assume that it is zero/nonzero and add it directly to the solver state.

Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/RangedConstraintManager.h:426

Parameters

clang::ento::ProgramStateRef State
clang::ento::SymbolRef Sym
bool Assumption

virtual clang::ento::ProgramStateRef
assumeSymWithinInclusiveRange(
    clang::ento::ProgramStateRef State,
    clang::ento::SymbolRef Sym,
    const llvm::APSInt& From,
    const llvm::APSInt& To,
    const llvm::APSInt& Adjustment)

Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/RangedConstraintManager.h:466

Parameters

clang::ento::ProgramStateRef State
clang::ento::SymbolRef Sym
const llvm::APSInt& From
const llvm::APSInt& To
const llvm::APSInt& Adjustment

static void computeAdjustment(
    clang::ento::SymbolRef& Sym,
    llvm::APSInt& Adjustment)

Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/RangedConstraintManager.h:478

Parameters

clang::ento::SymbolRef& Sym
llvm::APSInt& Adjustment

~RangedConstraintManager()

Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/RangedConstraintManager.h:412