martong updated this revision to Diff 246193. martong marked 7 inline comments as done. martong added a comment.
- Use StringRef for Msg - Remove superfluous addTransition Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D73898/new/ https://reviews.llvm.org/D73898 Files: clang/lib/StaticAnalyzer/Checkers/StdLibraryFunctionsChecker.cpp clang/test/Analysis/std-c-library-functions-arg-constraints.c Index: clang/test/Analysis/std-c-library-functions-arg-constraints.c =================================================================== --- clang/test/Analysis/std-c-library-functions-arg-constraints.c +++ clang/test/Analysis/std-c-library-functions-arg-constraints.c @@ -37,10 +37,8 @@ y = 0; clang_analyzer_eval(EOF <= x && x <= 255); // expected-warning{{TRUE}} - if (x > 255) { // This path is no longer feasible. - ret = isalnum(x); + if (x > 255) // This path is no longer feasible. ret = x / y; // No warning here - } ret = x / y; // expected-warning{{Division by zero}} } Index: clang/lib/StaticAnalyzer/Checkers/StdLibraryFunctionsChecker.cpp =================================================================== --- clang/lib/StaticAnalyzer/Checkers/StdLibraryFunctionsChecker.cpp +++ clang/lib/StaticAnalyzer/Checkers/StdLibraryFunctionsChecker.cpp @@ -404,7 +404,7 @@ if (!ChecksEnabled[CK_StdCLibraryFunctionArgsChecker]) return; // FIXME Add detailed diagnostic. - std::string Msg = "Function argument constraint is not satisfied"; + StringRef Msg = "Function argument constraint is not satisfied"; auto R = std::make_unique<PathSensitiveBugReport>(BT, Msg, N); bugreporter::trackExpressionValue(N, Call.getArgExpr(0), *R); C.emitReport(std::move(R)); @@ -415,8 +415,7 @@ ProgramStateRef FailureSt = VR.negate().apply(State, Call, Summary); // The argument constraint is not satisfied. if (FailureSt && !SuccessSt) { - C.addTransition(FailureSt); - if (ExplodedNode *N = C.generateErrorNode(FailureSt)) + if (ExplodedNode *N = C.generateErrorNode(State)) Report(N); break; } else {
Index: clang/test/Analysis/std-c-library-functions-arg-constraints.c =================================================================== --- clang/test/Analysis/std-c-library-functions-arg-constraints.c +++ clang/test/Analysis/std-c-library-functions-arg-constraints.c @@ -37,10 +37,8 @@ y = 0; clang_analyzer_eval(EOF <= x && x <= 255); // expected-warning{{TRUE}} - if (x > 255) { // This path is no longer feasible. - ret = isalnum(x); + if (x > 255) // This path is no longer feasible. ret = x / y; // No warning here - } ret = x / y; // expected-warning{{Division by zero}} } Index: clang/lib/StaticAnalyzer/Checkers/StdLibraryFunctionsChecker.cpp =================================================================== --- clang/lib/StaticAnalyzer/Checkers/StdLibraryFunctionsChecker.cpp +++ clang/lib/StaticAnalyzer/Checkers/StdLibraryFunctionsChecker.cpp @@ -404,7 +404,7 @@ if (!ChecksEnabled[CK_StdCLibraryFunctionArgsChecker]) return; // FIXME Add detailed diagnostic. - std::string Msg = "Function argument constraint is not satisfied"; + StringRef Msg = "Function argument constraint is not satisfied"; auto R = std::make_unique<PathSensitiveBugReport>(BT, Msg, N); bugreporter::trackExpressionValue(N, Call.getArgExpr(0), *R); C.emitReport(std::move(R)); @@ -415,8 +415,7 @@ ProgramStateRef FailureSt = VR.negate().apply(State, Call, Summary); // The argument constraint is not satisfied. if (FailureSt && !SuccessSt) { - C.addTransition(FailureSt); - if (ExplodedNode *N = C.generateErrorNode(FailureSt)) + if (ExplodedNode *N = C.generateErrorNode(State)) Report(N); break; } else {
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits