diff options
author | Anna Zaks <ganna@apple.com> | 2014-10-03 21:49:03 +0000 |
---|---|---|
committer | Anna Zaks <ganna@apple.com> | 2014-10-03 21:49:03 +0000 |
commit | 0820e13e2a2676fd61500ec3cbe0a2c3d1902c43 (patch) | |
tree | 30f3e55015b4fb9e3abd8482164f8b1c2b44b3a4 /clang/lib/StaticAnalyzer/Core/Store.cpp | |
parent | d79b840716adeeeb75deab4f16726c075d5a9a96 (diff) | |
download | bcm5719-llvm-0820e13e2a2676fd61500ec3cbe0a2c3d1902c43.tar.gz bcm5719-llvm-0820e13e2a2676fd61500ec3cbe0a2c3d1902c43.zip |
[analyzer] Refactor and cleanup IsCompleteType
There are three copies of IsCompleteType(...) functions in CSA and all
of them are incomplete (I experienced crashes in some CSA's test cases).
I have replaced these function calls with Type::isIncompleteType() calls.
A patch by Aleksei Sidorin!
llvm-svn: 219026
Diffstat (limited to 'clang/lib/StaticAnalyzer/Core/Store.cpp')
-rw-r--r-- | clang/lib/StaticAnalyzer/Core/Store.cpp | 13 |
1 files changed, 1 insertions, 12 deletions
diff --git a/clang/lib/StaticAnalyzer/Core/Store.cpp b/clang/lib/StaticAnalyzer/Core/Store.cpp index e38be3e0b7d..99ec1e70434 100644 --- a/clang/lib/StaticAnalyzer/Core/Store.cpp +++ b/clang/lib/StaticAnalyzer/Core/Store.cpp @@ -48,17 +48,6 @@ const MemRegion *StoreManager::MakeElementRegion(const MemRegion *Base, return MRMgr.getElementRegion(EleTy, idx, Base, svalBuilder.getContext()); } -// FIXME: Merge with the implementation of the same method in MemRegion.cpp -static bool IsCompleteType(ASTContext &Ctx, QualType Ty) { - if (const RecordType *RT = Ty->getAs<RecordType>()) { - const RecordDecl *D = RT->getDecl(); - if (!D->getDefinition()) - return false; - } - - return true; -} - StoreRef StoreManager::BindDefault(Store store, const MemRegion *R, SVal V) { return StoreRef(store, *this); } @@ -196,7 +185,7 @@ const MemRegion *StoreManager::castRegion(const MemRegion *R, QualType CastToTy) const MemRegion *newSuperR = nullptr; // We can only compute sizeof(PointeeTy) if it is a complete type. - if (IsCompleteType(Ctx, PointeeTy)) { + if (!PointeeTy->isIncompleteType()) { // Compute the size in **bytes**. CharUnits pointeeTySize = Ctx.getTypeSizeInChars(PointeeTy); if (!pointeeTySize.isZero()) { |