Author: dergachev Date: Thu Aug 22 20:23:55 2019 New Revision: 369726 URL: http://llvm.org/viewvc/llvm-project?rev=369726&view=rev Log: [analyzer] DynamicTypeInfo: Avoid putting null regions into dynamic typemap.
Fixes a crash. Modified: cfe/trunk/lib/StaticAnalyzer/Core/DynamicType.cpp cfe/trunk/test/Analysis/cast-value-logic.cpp Modified: cfe/trunk/lib/StaticAnalyzer/Core/DynamicType.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Core/DynamicType.cpp?rev=369726&r1=369725&r2=369726&view=diff ============================================================================== --- cfe/trunk/lib/StaticAnalyzer/Core/DynamicType.cpp (original) +++ cfe/trunk/lib/StaticAnalyzer/Core/DynamicType.cpp Thu Aug 22 20:23:55 2019 @@ -93,6 +93,9 @@ ProgramStateRef setDynamicTypeAndCastInf QualType CastFromTy, QualType CastToTy, QualType ResultTy, bool CastSucceeds) { + if (!MR) + return State; + if (CastSucceeds) State = State->set<DynamicTypeMap>(MR, ResultTy); Modified: cfe/trunk/test/Analysis/cast-value-logic.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/cast-value-logic.cpp?rev=369726&r1=369725&r2=369726&view=diff ============================================================================== --- cfe/trunk/test/Analysis/cast-value-logic.cpp (original) +++ cfe/trunk/test/Analysis/cast-value-logic.cpp Thu Aug 22 20:23:55 2019 @@ -131,3 +131,8 @@ void evalLogic(const Shape *S) { } } // namespace test_get_as +namespace crashes { +void test_non_reference_null_region_crash(Shape s) { + cast<Circle>(s); // no-crash +} +} // namespace crashes _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits