From 9ff67a9dda045d82f378f0d3427b918da3c60fef Mon Sep 17 00:00:00 2001 From: George Karpenkov Date: Wed, 29 Aug 2018 20:29:59 +0000 Subject: [analyzer] Resolve the crash in ReturnUndefChecker By making sure the returned value from getKnownSVal is consistent with the value used inside expression engine. PR38427 Differential Revision: https://reviews.llvm.org/D51252 llvm-svn: 340965 --- clang/lib/StaticAnalyzer/Checkers/UndefResultChecker.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'clang/lib/StaticAnalyzer/Checkers/UndefResultChecker.cpp') diff --git a/clang/lib/StaticAnalyzer/Checkers/UndefResultChecker.cpp b/clang/lib/StaticAnalyzer/Checkers/UndefResultChecker.cpp index bbf3215e4db..47faf699f9f 100644 --- a/clang/lib/StaticAnalyzer/Checkers/UndefResultChecker.cpp +++ b/clang/lib/StaticAnalyzer/Checkers/UndefResultChecker.cpp @@ -69,6 +69,7 @@ static bool isLeftShiftResultUnrepresentable(const BinaryOperator *B, ProgramStateRef State = C.getState(); const llvm::APSInt *LHS = SB.getKnownValue(State, C.getSVal(B->getLHS())); const llvm::APSInt *RHS = SB.getKnownValue(State, C.getSVal(B->getRHS())); + assert(LHS && RHS && "Values unknown, inconsistent state"); return (unsigned)RHS->getZExtValue() > LHS->countLeadingZeros(); } -- cgit v1.2.3