diff options
| author | Artem Dergachev <artem.dergachev@gmail.com> | 2017-06-12 17:59:50 +0000 |
|---|---|---|
| committer | Artem Dergachev <artem.dergachev@gmail.com> | 2017-06-12 17:59:50 +0000 |
| commit | 11150c009a4099f5248141655d6fe834daf02279 (patch) | |
| tree | 71238be8c8489e8b1d0182ae0dd067487d315ab1 /clang/lib/StaticAnalyzer | |
| parent | 30a49d1a3d5bd996eb3d6d7403a86dadde75c57c (diff) | |
| download | bcm5719-llvm-11150c009a4099f5248141655d6fe834daf02279.tar.gz bcm5719-llvm-11150c009a4099f5248141655d6fe834daf02279.zip | |
[analyzer] Fix a crash when an ObjC object is constructed in AllocaRegion.
Memory region allocated by alloca() carries no implicit type information.
Don't crash when resolving the init message for an Objective-C object
that is being constructed in such region.
rdar://problem/32517077
Differential Revision: https://reviews.llvm.org/D33828
llvm-svn: 305211
Diffstat (limited to 'clang/lib/StaticAnalyzer')
| -rw-r--r-- | clang/lib/StaticAnalyzer/Core/CallEvent.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/clang/lib/StaticAnalyzer/Core/CallEvent.cpp b/clang/lib/StaticAnalyzer/Core/CallEvent.cpp index ee761689f47..1858bfd8963 100644 --- a/clang/lib/StaticAnalyzer/Core/CallEvent.cpp +++ b/clang/lib/StaticAnalyzer/Core/CallEvent.cpp @@ -957,6 +957,12 @@ RuntimeDefinition ObjCMethodCall::getRuntimeDefinition() const { return RuntimeDefinition(); DynamicTypeInfo DTI = getDynamicTypeInfo(getState(), Receiver); + if (!DTI.isValid()) { + assert(isa<AllocaRegion>(Receiver) && + "Unhandled untyped region class!"); + return RuntimeDefinition(); + } + QualType DynType = DTI.getType(); CanBeSubClassed = DTI.canBeASubClass(); ReceiverT = dyn_cast<ObjCObjectPointerType>(DynType.getCanonicalType()); |

