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

#include "clang/StaticAnalyzer/Core/PathSensitive/SimpleConstraintManager.h"

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

Public Member Functions

 SimpleConstraintManager (SubEngine *subengine, SValBuilder &SB)
 
 ~SimpleConstraintManager () override
 
ProgramStateRef assume (ProgramStateRef State, DefinedSVal Cond, bool Assumption) override
 Ensures that the DefinedSVal conditional is expressed as a NonLoc by creating boolean casts to handle Loc's. More...
 
ProgramStateRef assumeInclusiveRange (ProgramStateRef State, NonLoc Value, const llvm::APSInt &From, const llvm::APSInt &To, bool InRange) override
 
- 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 assumeInclusiveRangeDual (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
 Scan all symbols referenced by the constraints. More...
 
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 assumeSym (ProgramStateRef State, SymbolRef Sym, bool Assumption)=0
 Given a symbolic expression that can be reasoned about, assume that it is true/false and generate the new program state. More...
 
virtual ProgramStateRef assumeSymInclusiveRange (ProgramStateRef State, SymbolRef Sym, const llvm::APSInt &From, const llvm::APSInt &To, bool InRange)=0
 Given a symbolic expression within the range [From, To], assume that it is true/false and generate the new program state. More...
 
virtual ProgramStateRef assumeSymUnsupported (ProgramStateRef State, SymbolRef Sym, bool Assumption)=0
 Given a symbolic expression that cannot be reasoned about, assume that it is zero/nonzero and add it directly to the solver state. More...
 
BasicValueFactorygetBasicVals () const
 
SymbolManagergetSymbolManager () const
 
- Protected Member Functions inherited from clang::ento::ConstraintManager
virtual bool canReasonAbout (SVal X) const =0
 canReasonAbout - Not all ConstraintManagers can accurately reason about all SVal values. More...
 
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, ProgramStateRefProgramStatePair
 
- 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

◆ SimpleConstraintManager()

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

◆ ~SimpleConstraintManager()

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

Definition at line 24 of file SimpleConstraintManager.cpp.

Referenced by SimpleConstraintManager().

Member Function Documentation

◆ assume()

ProgramStateRef clang::ento::SimpleConstraintManager::assume ( ProgramStateRef  State,
DefinedSVal  Cond,
bool  Assumption 
)
overridevirtual

◆ assumeInclusiveRange()

ProgramStateRef clang::ento::SimpleConstraintManager::assumeInclusiveRange ( ProgramStateRef  State,
NonLoc  Value,
const llvm::APSInt &  From,
const llvm::APSInt &  To,
bool  InRange 
)
overridevirtual

◆ assumeSym()

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

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

Implemented in clang::ento::RangedConstraintManager.

Referenced by assume(), and SimpleConstraintManager().

◆ assumeSymInclusiveRange()

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

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.

Implemented in clang::ento::RangedConstraintManager.

Referenced by assumeInclusiveRange(), and SimpleConstraintManager().

◆ assumeSymUnsupported()

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

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

Implemented in clang::ento::RangedConstraintManager.

Referenced by assume(), and SimpleConstraintManager().

◆ getBasicVals()

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

◆ getSymbolManager()

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

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