clang  3.9.0
Public Member Functions | Protected Member Functions | List of all members
clang::ento::SimpleConstraintManager Class Referenceabstract

#include <SimpleConstraintManager.h>

Inheritance diagram for clang::ento::SimpleConstraintManager:
[legend]
Collaboration diagram for clang::ento::SimpleConstraintManager:
[legend]

Public Member Functions

 SimpleConstraintManager (SubEngine *subengine, SValBuilder &SB)
 
 ~SimpleConstraintManager () override
 
ProgramStateRef assume (ProgramStateRef state, DefinedSVal Cond, bool Assumption) override
 
ProgramStateRef assume (ProgramStateRef state, NonLoc Cond, bool Assumption)
 
ProgramStateRef assumeWithinInclusiveRange (ProgramStateRef State, NonLoc Value, const llvm::APSInt &From, const llvm::APSInt &To, bool InRange) override
 
ProgramStateRef assumeSymRel (ProgramStateRef state, const SymExpr *LHS, BinaryOperator::Opcode op, const llvm::APSInt &Int)
 
ProgramStateRef assumeSymWithinInclusiveRange (ProgramStateRef State, SymbolRef Sym, const llvm::APSInt &From, const llvm::APSInt &To, bool InRange)
 
- Public Member Functions inherited from clang::ento::ConstraintManager
 ConstraintManager ()
 
virtual ~ConstraintManager ()
 
ProgramStatePair assumeDual (ProgramStateRef State, DefinedSVal Cond)
 Returns a pair of states (StTrue, StFalse) where the given condition is assumed to be true or false, respectively. More...
 
virtual ProgramStatePair assumeWithinInclusiveRangeDual (ProgramStateRef State, NonLoc Value, const llvm::APSInt &From, const llvm::APSInt &To)
 
virtual const llvm::APSInt * getSymVal (ProgramStateRef state, SymbolRef sym) const
 If a symbol is perfectly constrained to a constant, attempt to return the concrete value. More...
 
virtual ProgramStateRef removeDeadBindings (ProgramStateRef state, SymbolReaper &SymReaper)=0
 
virtual void print (ProgramStateRef state, raw_ostream &Out, const char *nl, const char *sep)=0
 
virtual void EndPath (ProgramStateRef state)
 
ConditionTruthVal isNull (ProgramStateRef State, SymbolRef Sym)
 Convenience method to query the state to see if a symbol is null or not null, or if neither assumption can be made. More...
 

Protected Member Functions

virtual ProgramStateRef assumeSymNE (ProgramStateRef state, SymbolRef sym, const llvm::APSInt &V, const llvm::APSInt &Adjustment)=0
 
virtual ProgramStateRef assumeSymEQ (ProgramStateRef state, SymbolRef sym, const llvm::APSInt &V, const llvm::APSInt &Adjustment)=0
 
virtual ProgramStateRef assumeSymLT (ProgramStateRef state, SymbolRef sym, const llvm::APSInt &V, const llvm::APSInt &Adjustment)=0
 
virtual ProgramStateRef assumeSymGT (ProgramStateRef state, SymbolRef sym, const llvm::APSInt &V, const llvm::APSInt &Adjustment)=0
 
virtual ProgramStateRef assumeSymLE (ProgramStateRef state, SymbolRef sym, const llvm::APSInt &V, const llvm::APSInt &Adjustment)=0
 
virtual ProgramStateRef assumeSymGE (ProgramStateRef state, SymbolRef sym, const llvm::APSInt &V, const llvm::APSInt &Adjustment)=0
 
virtual ProgramStateRef assumeSymbolWithinInclusiveRange (ProgramStateRef State, SymbolRef Sym, const llvm::APSInt &From, const llvm::APSInt &To, const llvm::APSInt &Adjustment)=0
 
virtual ProgramStateRef assumeSymbolOutOfInclusiveRange (ProgramStateRef state, SymbolRef Sym, const llvm::APSInt &From, const llvm::APSInt &To, const llvm::APSInt &Adjustment)=0
 
BasicValueFactorygetBasicVals () const
 
SymbolManagergetSymbolManager () const
 
bool canReasonAbout (SVal X) const override
 canReasonAbout - Not all ConstraintManagers can accurately reason about all SVal values. More...
 
ProgramStateRef assumeAux (ProgramStateRef state, NonLoc Cond, bool Assumption)
 
ProgramStateRef assumeAuxForSymbol (ProgramStateRef State, SymbolRef Sym, bool Assumption)
 
- Protected Member Functions inherited from clang::ento::ConstraintManager
virtual ConditionTruthVal checkNull (ProgramStateRef State, SymbolRef Sym)
 Returns whether or not a symbol is known to be null ("true"), known to be non-null ("false"), or may be either ("underconstrained"). More...
 

Additional Inherited Members

- Public Types inherited from clang::ento::ConstraintManager
typedef std::pair
< ProgramStateRef,
ProgramStateRef
ProgramStatePair
 
- Protected Attributes inherited from clang::ento::ConstraintManager
bool NotifyAssumeClients
 A flag to indicate that clients should be notified of assumptions. More...
 

Detailed Description

Definition at line 24 of file SimpleConstraintManager.h.

Constructor & Destructor Documentation

clang::ento::SimpleConstraintManager::SimpleConstraintManager ( SubEngine subengine,
SValBuilder SB 
)
inline

Definition at line 28 of file SimpleConstraintManager.h.

clang::ento::SimpleConstraintManager::~SimpleConstraintManager ( )
override

Definition at line 24 of file SimpleConstraintManager.cpp.

Member Function Documentation

ProgramStateRef clang::ento::SimpleConstraintManager::assume ( ProgramStateRef  state,
DefinedSVal  Cond,
bool  Assumption 
)
overridevirtual
ProgramStateRef clang::ento::SimpleConstraintManager::assume ( ProgramStateRef  state,
NonLoc  Cond,
bool  Assumption 
)
ProgramStateRef clang::ento::SimpleConstraintManager::assumeAux ( ProgramStateRef  state,
NonLoc  Cond,
bool  Assumption 
)
protected
ProgramStateRef clang::ento::SimpleConstraintManager::assumeAuxForSymbol ( ProgramStateRef  State,
SymbolRef  Sym,
bool  Assumption 
)
protected
virtual ProgramStateRef clang::ento::SimpleConstraintManager::assumeSymbolOutOfInclusiveRange ( ProgramStateRef  state,
SymbolRef  Sym,
const llvm::APSInt &  From,
const llvm::APSInt &  To,
const llvm::APSInt &  Adjustment 
)
protectedpure virtual
virtual ProgramStateRef clang::ento::SimpleConstraintManager::assumeSymbolWithinInclusiveRange ( ProgramStateRef  State,
SymbolRef  Sym,
const llvm::APSInt &  From,
const llvm::APSInt &  To,
const llvm::APSInt &  Adjustment 
)
protectedpure virtual
virtual ProgramStateRef clang::ento::SimpleConstraintManager::assumeSymEQ ( ProgramStateRef  state,
SymbolRef  sym,
const llvm::APSInt &  V,
const llvm::APSInt &  Adjustment 
)
protectedpure virtual

Referenced by assumeAuxForSymbol(), and assumeSymRel().

virtual ProgramStateRef clang::ento::SimpleConstraintManager::assumeSymGE ( ProgramStateRef  state,
SymbolRef  sym,
const llvm::APSInt &  V,
const llvm::APSInt &  Adjustment 
)
protectedpure virtual

Referenced by assumeSymRel().

virtual ProgramStateRef clang::ento::SimpleConstraintManager::assumeSymGT ( ProgramStateRef  state,
SymbolRef  sym,
const llvm::APSInt &  V,
const llvm::APSInt &  Adjustment 
)
protectedpure virtual

Referenced by assumeSymRel().

virtual ProgramStateRef clang::ento::SimpleConstraintManager::assumeSymLE ( ProgramStateRef  state,
SymbolRef  sym,
const llvm::APSInt &  V,
const llvm::APSInt &  Adjustment 
)
protectedpure virtual

Referenced by assumeSymRel().

virtual ProgramStateRef clang::ento::SimpleConstraintManager::assumeSymLT ( ProgramStateRef  state,
SymbolRef  sym,
const llvm::APSInt &  V,
const llvm::APSInt &  Adjustment 
)
protectedpure virtual

Referenced by assumeSymRel().

virtual ProgramStateRef clang::ento::SimpleConstraintManager::assumeSymNE ( ProgramStateRef  state,
SymbolRef  sym,
const llvm::APSInt &  V,
const llvm::APSInt &  Adjustment 
)
protectedpure virtual

Referenced by assumeAuxForSymbol(), and assumeSymRel().

ProgramStateRef clang::ento::SimpleConstraintManager::assumeSymRel ( ProgramStateRef  state,
const SymExpr LHS,
BinaryOperator::Opcode  op,
const llvm::APSInt &  Int 
)
ProgramStateRef clang::ento::SimpleConstraintManager::assumeSymWithinInclusiveRange ( ProgramStateRef  State,
SymbolRef  Sym,
const llvm::APSInt &  From,
const llvm::APSInt &  To,
bool  InRange 
)
ProgramStateRef clang::ento::SimpleConstraintManager::assumeWithinInclusiveRange ( ProgramStateRef  State,
NonLoc  Value,
const llvm::APSInt &  From,
const llvm::APSInt &  To,
bool  InRange 
)
overridevirtual
bool clang::ento::SimpleConstraintManager::canReasonAbout ( SVal  X) const
overrideprotectedvirtual

canReasonAbout - Not all ConstraintManagers can accurately reason about all SVal values.

This method returns true if the ConstraintManager can reasonably handle a given SVal value. This is typically queried by ExprEngine to determine if the value should be replaced with a conjured symbolic value in order to recover some precision.

Implements clang::ento::ConstraintManager.

Definition at line 26 of file SimpleConstraintManager.cpp.

References clang::ento::SVal::getAs(), clang::BinaryOperator::isComparisonOp(), and clang::ento::Loc::isLocType().

Referenced by assumeAux(), and assumeWithinInclusiveRange().

BasicValueFactory& clang::ento::SimpleConstraintManager::getBasicVals ( ) const
inlineprotected
SymbolManager& clang::ento::SimpleConstraintManager::getSymbolManager ( ) const
inlineprotected

Definition at line 104 of file SimpleConstraintManager.h.

References clang::ento::SValBuilder::getSymbolManager().

Referenced by assumeAux().


The documentation for this class was generated from the following files: