Index: clang/lib/StaticAnalyzer/Checkers/TrustNonnullChecker.cpp =================================================================== --- clang/lib/StaticAnalyzer/Checkers/TrustNonnullChecker.cpp +++ clang/lib/StaticAnalyzer/Checkers/TrustNonnullChecker.cpp @@ -44,7 +44,6 @@ class TrustNonnullChecker : public Checker { // Do not try to iterate over symbols with higher complexity. static unsigned constexpr ComplexityThreshold = 10; @@ -130,28 +129,8 @@ C.addTransition(State); } - void checkDeadSymbols(SymbolReaper &SymReaper, CheckerContext &C) const { - ProgramStateRef State = C.getState(); - - State = dropDeadFromGDM(SymReaper, State); - State = dropDeadFromGDM(SymReaper, State); - - C.addTransition(State); - } - private: - /// \returns State with GDM \p MapName where all dead symbols were - // removed. - template - ProgramStateRef dropDeadFromGDM(SymbolReaper &SymReaper, - ProgramStateRef State) const { - for (const std::pair &P : State->get()) - if (!SymReaper.isLive(P.first) || !SymReaper.isLive(P.second)) - State = State->remove(P.first); - return State; - } - /// \returns Whether we trust the result of the method call to be /// a non-null pointer. bool isNonNullPtr(const CallEvent &Call, CheckerContext &C) const { Index: clang/test/Analysis/trustnonnullchecker_test.m =================================================================== --- clang/test/Analysis/trustnonnullchecker_test.m +++ clang/test/Analysis/trustnonnullchecker_test.m @@ -1,6 +1,3 @@ -// Temporarily disabling the test, it failes the "system is over-constrained" -// assertion in *non* optimized builds. -// REQUIRES: rdar44992170 // RUN: %clang_analyze_cc1 -fblocks -analyze -analyzer-checker=core,nullability,apiModeling,debug.ExprInspection -verify %s #include "Inputs/system-header-simulator-for-nullability.h"