Author: Artem Dergachev Date: 2019-11-08T18:27:14-08:00 New Revision: 57adc37fe57c6edabc006e6de41523319e874c65
URL: https://github.com/llvm/llvm-project/commit/57adc37fe57c6edabc006e6de41523319e874c65 DIFF: https://github.com/llvm/llvm-project/commit/57adc37fe57c6edabc006e6de41523319e874c65.diff LOG: [analyzer] Nullability: Don't infer nullable when passing as nullable parameter. You can't really infer anything from that. Added: clang/test/Analysis/nullability.m Modified: clang/lib/StaticAnalyzer/Checkers/NullabilityChecker.cpp Removed: ################################################################################ diff --git a/clang/lib/StaticAnalyzer/Checkers/NullabilityChecker.cpp b/clang/lib/StaticAnalyzer/Checkers/NullabilityChecker.cpp index 4322ac207112..922048733c7c 100644 --- a/clang/lib/StaticAnalyzer/Checkers/NullabilityChecker.cpp +++ b/clang/lib/StaticAnalyzer/Checkers/NullabilityChecker.cpp @@ -728,11 +728,6 @@ void NullabilityChecker::checkPreCall(const CallEvent &Call, } continue; } - // No tracked nullability yet. - if (ArgExprTypeLevelNullability != Nullability::Nullable) - continue; - State = State->set<NullabilityMap>( - Region, NullabilityState(ArgExprTypeLevelNullability, ArgExpr)); } if (State != OrigState) C.addTransition(State); diff --git a/clang/test/Analysis/nullability.m b/clang/test/Analysis/nullability.m new file mode 100644 index 000000000000..f777900006de --- /dev/null +++ b/clang/test/Analysis/nullability.m @@ -0,0 +1,12 @@ +// RUN: %clang_analyze_cc1 -analyzer-checker core,nullability -w -verify %s + +// expected-no-diagnostics + +id _Nonnull conjure_nonnull(); +void use_nullable(_Nullable id x); + +id _Nonnull foo() { + void *j = conjure_nonnull(); + use_nullable(j); + return j; // no-warning +} _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits