Index: lib/StaticAnalyzer/Core/SimpleSValBuilder.cpp =================================================================== --- lib/StaticAnalyzer/Core/SimpleSValBuilder.cpp +++ lib/StaticAnalyzer/Core/SimpleSValBuilder.cpp @@ -469,6 +469,8 @@ // 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; Index: test/Analysis/svalbuilder-rearrange-comparisons.c =================================================================== --- test/Analysis/svalbuilder-rearrange-comparisons.c +++ test/Analysis/svalbuilder-rearrange-comparisons.c @@ -929,3 +929,8 @@ clang_analyzer_eval(n - 126 == m + 3); // expected-warning{{UNKNOWN}} } } + +int mixed_integer_types(int x, int y) { + short a = x - 1U; + return a - y; +}