diff options
author | Adam Balogh <adam.balogh@ericsson.com> | 2018-04-13 20:23:02 +0000 |
---|---|---|
committer | Adam Balogh <adam.balogh@ericsson.com> | 2018-04-13 20:23:02 +0000 |
commit | 13e186c088e59797435edd25c139b36060be803d (patch) | |
tree | d36a80c0d291055881da2f904a1977773450ba8e /clang/lib/StaticAnalyzer/Core/SimpleSValBuilder.cpp | |
parent | ab40e44ba1b5ae97f53e5a885dbc93a4bed78302 (diff) | |
download | bcm5719-llvm-13e186c088e59797435edd25c139b36060be803d.tar.gz bcm5719-llvm-13e186c088e59797435edd25c139b36060be803d.zip |
[Analyzer] Fix for SValBuilder expressions rearrangement
Expression rearrangement in SValBuilder (see rL329780) crashes with an assert if the type of the integer is different from the type of the symbol. This fix adds a check that prevents rearrangement in such cases.
Differential Revision: https://reviews.llvm.org/D45557
llvm-svn: 330064
Diffstat (limited to 'clang/lib/StaticAnalyzer/Core/SimpleSValBuilder.cpp')
-rw-r--r-- | clang/lib/StaticAnalyzer/Core/SimpleSValBuilder.cpp | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/clang/lib/StaticAnalyzer/Core/SimpleSValBuilder.cpp b/clang/lib/StaticAnalyzer/Core/SimpleSValBuilder.cpp index b2224b5495b..4171ebf1368 100644 --- a/clang/lib/StaticAnalyzer/Core/SimpleSValBuilder.cpp +++ b/clang/lib/StaticAnalyzer/Core/SimpleSValBuilder.cpp @@ -469,6 +469,8 @@ static Optional<NonLoc> tryRearrange(ProgramStateRef State, // Initialize SingleTy later with a symbol's type. } else if (BinaryOperator::isAdditiveOp(Op)) { SingleTy = ResultTy; + if (LSym->getType() != SingleTy) + return None; // Substracting unsigned integers is a nightmare. if (!SingleTy->isSignedIntegerOrEnumerationType()) return None; |