summaryrefslogtreecommitdiffstats
path: root/clang/lib/StaticAnalyzer/Core/SimpleSValBuilder.cpp
diff options
context:
space:
mode:
authorAdam Balogh <adam.balogh@ericsson.com>2018-04-13 20:23:02 +0000
committerAdam Balogh <adam.balogh@ericsson.com>2018-04-13 20:23:02 +0000
commit13e186c088e59797435edd25c139b36060be803d (patch)
treed36a80c0d291055881da2f904a1977773450ba8e /clang/lib/StaticAnalyzer/Core/SimpleSValBuilder.cpp
parentab40e44ba1b5ae97f53e5a885dbc93a4bed78302 (diff)
downloadbcm5719-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.cpp2
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;
OpenPOWER on IntegriCloud