Author: Balazs Benics Date: 2023-09-15T13:18:34+02:00 New Revision: 03693d5b40f187921ead5a502fa3cf72ce30fea4
URL: https://github.com/llvm/llvm-project/commit/03693d5b40f187921ead5a502fa3cf72ce30fea4 DIFF: https://github.com/llvm/llvm-project/commit/03693d5b40f187921ead5a502fa3cf72ce30fea4.diff LOG: Revert "[analyzer] Simplify SVal for simple NonLoc->Loc casts (#66463)" This reverts commit 3ebf3dd30da219f9f9aee12f42d45d18d55e7580. I thought "Mergeing" will wait and confirm if the checks pass, and only merge it if they succeed. Apparently, it's not the case here xD The test is just broken in x86. See: https://lab.llvm.org/buildbot/#/builders/109/builds/73686 Added: Modified: clang/lib/StaticAnalyzer/Core/ExprEngineC.cpp clang/test/Analysis/symbol-simplification-nonloc-loc.cpp Removed: ################################################################################ diff --git a/clang/lib/StaticAnalyzer/Core/ExprEngineC.cpp b/clang/lib/StaticAnalyzer/Core/ExprEngineC.cpp index 7e431f7e598c4cb..2a47116db55a1ad 100644 --- a/clang/lib/StaticAnalyzer/Core/ExprEngineC.cpp +++ b/clang/lib/StaticAnalyzer/Core/ExprEngineC.cpp @@ -264,8 +264,7 @@ ProgramStateRef ExprEngine::handleLValueBitCast( } // Delegate to SValBuilder to process. SVal OrigV = state->getSVal(Ex, LCtx); - SVal SimplifiedOrigV = svalBuilder.simplifySVal(state, OrigV); - SVal V = svalBuilder.evalCast(SimplifiedOrigV, T, ExTy); + SVal V = svalBuilder.evalCast(OrigV, T, ExTy); // Negate the result if we're treating the boolean as a signed i1 if (CastE->getCastKind() == CK_BooleanToSignedIntegral && V.isValid()) V = svalBuilder.evalMinus(V.castAs<NonLoc>()); diff --git a/clang/test/Analysis/symbol-simplification-nonloc-loc.cpp b/clang/test/Analysis/symbol-simplification-nonloc-loc.cpp index 619fda824cb70b5..485f68d9a5acfba 100644 --- a/clang/test/Analysis/symbol-simplification-nonloc-loc.cpp +++ b/clang/test/Analysis/symbol-simplification-nonloc-loc.cpp @@ -1,8 +1,6 @@ // RUN: %clang_analyze_cc1 -analyzer-checker=core %s \ // RUN: -triple x86_64-pc-linux-gnu -verify -void clang_analyzer_eval(int); - #define BINOP(OP) [](auto x, auto y) { return x OP y; } template <typename BinOp> @@ -75,27 +73,3 @@ void zoo1backwards() { *(0 + p) = nullptr; // warn **(0 + p) = 'a'; // no-warning: this should be unreachable } - -void test_simplified_before_cast_add(long t1) { - long long t2 = t1 + 3; - if (!t2) { - int *p = (int *) t2; - clang_analyzer_eval(p == 0); // expected-warning{{TRUE}} - } -} - -void test_simplified_before_cast_sub(long t1) { - long long t2 = t1 - 3; - if (!t2) { - int *p = (int *) t2; - clang_analyzer_eval(p == 0); // expected-warning{{TRUE}} - } -} - -void test_simplified_before_cast_mul(long t1) { - long long t2 = t1 * 3; - if (!t2) { - int *p = (int *) t2; - clang_analyzer_eval(p == 0); // expected-warning{{TRUE}} - } -} _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits