diff options
| author | Gabor Horvath <xazax.hun@gmail.com> | 2015-09-11 17:19:57 +0000 |
|---|---|---|
| committer | Gabor Horvath <xazax.hun@gmail.com> | 2015-09-11 17:19:57 +0000 |
| commit | 4df9d8128b98e8b1af087fe21da3d60bd6fe78a6 (patch) | |
| tree | 4d0c40fbcd3256ca5c5c57f21682fb2aa56eb65f /clang/lib/StaticAnalyzer/Core/ProgramState.cpp | |
| parent | 524686738460d61df0cb46d1398fffa9734f1378 (diff) | |
| download | bcm5719-llvm-4df9d8128b98e8b1af087fe21da3d60bd6fe78a6.tar.gz bcm5719-llvm-4df9d8128b98e8b1af087fe21da3d60bd6fe78a6.zip | |
[Static Analyzer] Properly clean up the dynamic type information for dead regions.
Differential Revision: http://reviews.llvm.org/D12767
llvm-svn: 247430
Diffstat (limited to 'clang/lib/StaticAnalyzer/Core/ProgramState.cpp')
| -rw-r--r-- | clang/lib/StaticAnalyzer/Core/ProgramState.cpp | 33 |
1 files changed, 0 insertions, 33 deletions
diff --git a/clang/lib/StaticAnalyzer/Core/ProgramState.cpp b/clang/lib/StaticAnalyzer/Core/ProgramState.cpp index 1340104f45e..4f9ad9ebccd 100644 --- a/clang/lib/StaticAnalyzer/Core/ProgramState.cpp +++ b/clang/lib/StaticAnalyzer/Core/ProgramState.cpp @@ -752,36 +752,3 @@ bool ProgramState::isTainted(SymbolRef Sym, TaintTagType Kind) const { return Tainted; } -/// The GDM component containing the dynamic type info. This is a map from a -/// symbol to its most likely type. -REGISTER_TRAIT_WITH_PROGRAMSTATE(DynamicTypeMap, - CLANG_ENTO_PROGRAMSTATE_MAP(const MemRegion *, - DynamicTypeInfo)) - -DynamicTypeInfo ProgramState::getDynamicTypeInfo(const MemRegion *Reg) const { - Reg = Reg->StripCasts(); - - // Look up the dynamic type in the GDM. - const DynamicTypeInfo *GDMType = get<DynamicTypeMap>(Reg); - if (GDMType) - return *GDMType; - - // Otherwise, fall back to what we know about the region. - if (const TypedRegion *TR = dyn_cast<TypedRegion>(Reg)) - return DynamicTypeInfo(TR->getLocationType(), /*CanBeSubclass=*/false); - - if (const SymbolicRegion *SR = dyn_cast<SymbolicRegion>(Reg)) { - SymbolRef Sym = SR->getSymbol(); - return DynamicTypeInfo(Sym->getType()); - } - - return DynamicTypeInfo(); -} - -ProgramStateRef ProgramState::setDynamicTypeInfo(const MemRegion *Reg, - DynamicTypeInfo NewTy) const { - Reg = Reg->StripCasts(); - ProgramStateRef NewState = set<DynamicTypeMap>(Reg, NewTy); - assert(NewState); - return NewState; -} |

