clang
7.0.0
|
#include "clang/AST/Attr.h"
#include "clang/AST/CharUnits.h"
#include "clang/Analysis/Analyses/LiveVariables.h"
#include "clang/Analysis/AnalysisDeclContext.h"
#include "clang/Basic/TargetInfo.h"
#include "clang/StaticAnalyzer/Core/PathSensitive/AnalysisManager.h"
#include "clang/StaticAnalyzer/Core/PathSensitive/CallEvent.h"
#include "clang/StaticAnalyzer/Core/PathSensitive/MemRegion.h"
#include "clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h"
#include "clang/StaticAnalyzer/Core/PathSensitive/ProgramStateTrait.h"
#include "clang/StaticAnalyzer/Core/PathSensitive/SubEngine.h"
#include "llvm/ADT/ImmutableMap.h"
#include "llvm/ADT/Optional.h"
#include "llvm/Support/raw_ostream.h"
#include <utility>
Go to the source code of this file.
Classes | |
struct | llvm::isPodLike< typename > |
struct | llvm::isPodLike< BindingKey > |
Namespaces | |
llvm | |
DominatorTree GraphTraits specialization so the DominatorTree can be iterable by generic graph iterators. | |
Typedefs | |
typedef llvm::ImmutableMap< BindingKey, SVal > | ClusterBindings |
typedef llvm::ImmutableMapRef< BindingKey, SVal > | ClusterBindingsRef |
typedef std::pair< BindingKey, SVal > | BindingPair |
typedef llvm::ImmutableMap< const MemRegion *, ClusterBindings > | RegionBindings |
typedef const RegionBindingsRef & | RegionBindingsConstRef |
typedef SmallVector< const FieldDecl *, 8 > | FieldVector |
Enumerations | |
enum | GlobalsFilterKind |
Used to determine which global regions are automatically included in the initial worklist of a ClusterAnalysis. More... | |
Functions | |
static raw_ostream & | llvm::operator<< (raw_ostream &os, BindingKey K) |
static bool | isUnionField (const FieldRegion *FR) |
static void | getSymbolicOffsetFields (BindingKey K, FieldVector &Fields) |
static bool | isCompatibleWithFields (BindingKey K, const FieldVector &Fields) |
static void | collectSubRegionBindings (SmallVectorImpl< BindingPair > &Bindings, SValBuilder &SVB, const ClusterBindings &Cluster, const SubRegion *Top, BindingKey TopKey, bool IncludeAllDefaultBindings) |
Collects all bindings in Cluster that may refer to bindings within Top . More... | |
static void | collectSubRegionBindings (SmallVectorImpl< BindingPair > &Bindings, SValBuilder &SVB, const ClusterBindings &Cluster, const SubRegion *Top, bool IncludeAllDefaultBindings) |
static QualType | getUnderlyingType (const SubRegion *R) |
static Optional< nonloc::LazyCompoundVal > | getExistingLazyBinding (SValBuilder &SVB, RegionBindingsConstRef B, const SubRegion *R, bool AllowSubregionBindings) |
Checks to see if store B has a lazy binding for region R . More... | |
static bool | isRecordEmpty (const RecordDecl *RD) |
typedef std::pair<BindingKey, SVal> BindingPair |
Definition at line 147 of file RegionStore.cpp.
typedef llvm::ImmutableMap<BindingKey, SVal> ClusterBindings |
Definition at line 145 of file RegionStore.cpp.
typedef llvm::ImmutableMapRef<BindingKey, SVal> ClusterBindingsRef |
Definition at line 146 of file RegionStore.cpp.
typedef SmallVector<const FieldDecl *, 8> FieldVector |
Definition at line 774 of file RegionStore.cpp.
typedef llvm::ImmutableMap<const MemRegion *, ClusterBindings> RegionBindings |
Definition at line 150 of file RegionStore.cpp.
typedef const RegionBindingsRef& RegionBindingsConstRef |
Definition at line 226 of file RegionStore.cpp.
enum GlobalsFilterKind |
Used to determine which global regions are automatically included in the initial worklist of a ClusterAnalysis.
Definition at line 650 of file RegionStore.cpp.
|
static |
Collects all bindings in Cluster
that may refer to bindings within Top
.
Each binding is a pair whose first
is the key (a BindingKey) and whose second
is the value (an SVal).
The IncludeAllDefaultBindings
parameter specifies whether to include default bindings that may extend beyond Top
itself, e.g. if Top
is an aggregate within a larger aggregate with a default binding.
Definition at line 820 of file RegionStore.cpp.
References clang::Default, clang::ento::SVal::getAs(), clang::ASTContext::getCharWidth(), clang::ento::SValBuilder::getContext(), clang::ento::SubRegion::getExtent(), getSymbolicOffsetFields(), and clang::Make.
Referenced by collectSubRegionBindings(), and getExistingLazyBinding().
|
static |
Definition at line 892 of file RegionStore.cpp.
References collectSubRegionBindings(), clang::Default, and clang::Make.
|
static |
Checks to see if store B
has a lazy binding for region R
.
If AllowSubregionBindings
is false
, a lazy binding will be rejected if there are additional bindings within R
.
Note that unlike RegionStoreManager::findLazyBinding, this will not search for lazy bindings for super-regions of R
.
Definition at line 1520 of file RegionStore.cpp.
References collectSubRegionBindings(), clang::ento::SVal::getAs(), clang::ento::ElementRegion::getAsArrayOffset(), clang::ento::SVal::getAsSymbol(), clang::ento::MemRegion::getBaseRegion(), clang::StringLiteral::getCodeUnit(), clang::ento::SValBuilder::getContext(), clang::ento::FieldRegion::getDecl(), clang::ento::ElementRegion::getElementType(), clang::FieldDecl::getInClassInitializer(), clang::ento::ElementRegion::getIndex(), clang::VarDecl::getInit(), clang::StringLiteral::getLength(), clang::ento::RegionRawOffset::getRegion(), clang::ento::SubRegion::getSuperRegion(), clang::ValueDecl::getType(), getUnderlyingType(), clang::ASTContext::hasSameUnqualifiedType(), clang::QualType::isConstQualified(), clang::QualType::isNull(), clang::Type::isScalarType(), clang::ento::SVal::isUnknownOrUndef(), clang::Type::isVoidPointerType(), and length().
|
static |
Definition at line 776 of file RegionStore.cpp.
References isUnionField().
Referenced by collectSubRegionBindings(), and isCompatibleWithFields().
Definition at line 1501 of file RegionStore.cpp.
Referenced by clang::TypeOfType::desugar(), clang::TypedefNameDecl::getAnonDeclWithTypedefName(), getExistingLazyBinding(), clang::TypeOfTypeLoc::initializeLocal(), and UnwrapTypeForDebugInfo().
|
static |
Definition at line 791 of file RegionStore.cpp.
References getSymbolicOffsetFields().
|
static |
Definition at line 2015 of file RegionStore.cpp.
References clang::ento::nonloc::CompoundVal::begin(), clang::ento::SymbolManager::canSymbolicate(), clang::ento::SVal::castAs(), clang::Type::castAs(), clang::Default, clang::ento::nonloc::CompoundVal::end(), clang::RecordDecl::field_empty(), clang::RecordDecl::fields(), clang::ento::SVal::getAs(), clang::Type::getAs(), clang::ento::SVal::getAsRegion(), clang::ento::MemRegion::getBaseRegion(), clang::RecordDecl::getDefinition(), clang::ArrayType::getElementType(), clang::Type::getPointeeType(), clang::ento::TypedValueRegion::getValueType(), clang::Type::isAnyPointerType(), clang::Type::isArrayType(), clang::Type::isIntegralOrEnumerationType(), clang::ento::Loc::isLocType(), clang::Type::isReferenceType(), clang::Type::isScalarType(), clang::Type::isStructureOrClassType(), clang::Type::isUnionType(), clang::ento::SVal::isUnknown(), clang::Type::isVectorType(), clang::Make, and true.
|
inlinestatic |
Definition at line 770 of file RegionStore.cpp.
References clang::ento::FieldRegion::getDecl(), clang::FieldDecl::getParent(), and clang::TagDecl::isUnion().
Referenced by getSymbolicOffsetFields().