Index: cfe/trunk/include/clang/StaticAnalyzer/Checkers/Checkers.td =================================================================== --- cfe/trunk/include/clang/StaticAnalyzer/Checkers/Checkers.td +++ cfe/trunk/include/clang/StaticAnalyzer/Checkers/Checkers.td @@ -220,11 +220,15 @@ let ParentPackage = APIModeling in { +def StdCLibraryFunctionsChecker : Checker<"StdCLibraryFunctions">, + HelpText<"Improve modeling of the C standard library functions">, + DescFile<"StdLibraryFunctionsChecker.cpp">; + def TrustNonnullChecker : Checker<"TrustNonnull">, HelpText<"Trust that returns from framework methods annotated with _Nonnull are not null">, DescFile<"TrustNonnullChecker.cpp">; -} +} // end "apiModeling" //===----------------------------------------------------------------------===// // Evaluate "builtin" functions. @@ -494,10 +498,6 @@ HelpText<"Check for proper usage of vfork">, DescFile<"VforkChecker.cpp">; -def StdCLibraryFunctionsChecker : Checker<"StdCLibraryFunctions">, - HelpText<"Improve modeling of the C standard library functions">, - DescFile<"StdLibraryFunctionsChecker.cpp">; - } // end "unix" let ParentPackage = UnixAlpha in { Index: cfe/trunk/test/Analysis/conversion.c =================================================================== --- cfe/trunk/test/Analysis/conversion.c +++ cfe/trunk/test/Analysis/conversion.c @@ -1,4 +1,4 @@ -// RUN: %clang_analyze_cc1 -Wno-conversion -Wno-tautological-constant-compare -analyzer-checker=core,alpha.core.Conversion -verify %s +// RUN: %clang_analyze_cc1 -Wno-conversion -Wno-tautological-constant-compare -analyzer-checker=core,apiModeling,alpha.core.Conversion -verify %s unsigned char U8; signed char S8; @@ -138,15 +138,14 @@ } -// false positives.. +// C library functions, handled via apiModeling.StdCLibraryFunctions int isascii(int c); -void falsePositive1() { +void libraryFunction1() { char kb2[5]; int X = 1000; if (isascii(X)) { - // FIXME: should not warn here: - kb2[0] = X; // expected-warning {{Loss of precision}} + kb2[0] = X; // no-warning } } @@ -156,7 +155,7 @@ char reply_string[8192]; FILE *cin; extern int dostuff (void); -int falsePositive2() { +int libraryFunction2() { int c, n; int dig; char *cp = reply_string; @@ -175,8 +174,7 @@ if (c == EOF) return(4); if (cp < &reply_string[sizeof(reply_string) - 1]) - // FIXME: should not warn here: - *cp++ = c; // expected-warning {{Loss of precision}} + *cp++ = c; // no-warning } } } Index: cfe/trunk/test/Analysis/std-c-library-functions-inlined.c =================================================================== --- cfe/trunk/test/Analysis/std-c-library-functions-inlined.c +++ cfe/trunk/test/Analysis/std-c-library-functions-inlined.c @@ -1,8 +1,8 @@ -// RUN: %clang_analyze_cc1 -analyzer-checker=unix.StdCLibraryFunctions -verify %s -// RUN: %clang_analyze_cc1 -triple i686-unknown-linux -analyzer-checker=unix.StdCLibraryFunctions -verify %s -// RUN: %clang_analyze_cc1 -triple x86_64-unknown-linux -analyzer-checker=unix.StdCLibraryFunctions -verify %s -// RUN: %clang_analyze_cc1 -triple armv7-a15-linux -analyzer-checker=unix.StdCLibraryFunctions -verify %s -// RUN: %clang_analyze_cc1 -triple thumbv7-a15-linux -analyzer-checker=unix.StdCLibraryFunctions -verify %s +// RUN: %clang_analyze_cc1 -analyzer-checker=apiModeling.StdCLibraryFunctions -verify %s +// RUN: %clang_analyze_cc1 -triple i686-unknown-linux -analyzer-checker=apiModeling.StdCLibraryFunctions -verify %s +// RUN: %clang_analyze_cc1 -triple x86_64-unknown-linux -analyzer-checker=apiModeling.StdCLibraryFunctions -verify %s +// RUN: %clang_analyze_cc1 -triple armv7-a15-linux -analyzer-checker=apiModeling.StdCLibraryFunctions -verify %s +// RUN: %clang_analyze_cc1 -triple thumbv7-a15-linux -analyzer-checker=apiModeling.StdCLibraryFunctions -verify %s // This test tests crashes that occur when standard functions are available // for inlining. Index: cfe/trunk/test/Analysis/std-c-library-functions.c =================================================================== --- cfe/trunk/test/Analysis/std-c-library-functions.c +++ cfe/trunk/test/Analysis/std-c-library-functions.c @@ -1,8 +1,8 @@ -// RUN: %clang_analyze_cc1 -analyzer-checker=unix.StdCLibraryFunctions,debug.ExprInspection -verify -analyzer-config eagerly-assume=false %s -// RUN: %clang_analyze_cc1 -triple i686-unknown-linux -analyzer-checker=unix.StdCLibraryFunctions,debug.ExprInspection -verify -analyzer-config eagerly-assume=false %s -// RUN: %clang_analyze_cc1 -triple x86_64-unknown-linux -analyzer-checker=unix.StdCLibraryFunctions,debug.ExprInspection -verify -analyzer-config eagerly-assume=false %s -// RUN: %clang_analyze_cc1 -triple armv7-a15-linux -analyzer-checker=unix.StdCLibraryFunctions,debug.ExprInspection -verify -analyzer-config eagerly-assume=false %s -// RUN: %clang_analyze_cc1 -triple thumbv7-a15-linux -analyzer-checker=unix.StdCLibraryFunctions,debug.ExprInspection -verify -analyzer-config eagerly-assume=false %s +// RUN: %clang_analyze_cc1 -analyzer-checker=apiModeling.StdCLibraryFunctions,debug.ExprInspection -verify -analyzer-config eagerly-assume=false %s +// RUN: %clang_analyze_cc1 -triple i686-unknown-linux -analyzer-checker=apiModeling.StdCLibraryFunctions,debug.ExprInspection -verify -analyzer-config eagerly-assume=false %s +// RUN: %clang_analyze_cc1 -triple x86_64-unknown-linux -analyzer-checker=apiModeling.StdCLibraryFunctions,debug.ExprInspection -verify -analyzer-config eagerly-assume=false %s +// RUN: %clang_analyze_cc1 -triple armv7-a15-linux -analyzer-checker=apiModeling.StdCLibraryFunctions,debug.ExprInspection -verify -analyzer-config eagerly-assume=false %s +// RUN: %clang_analyze_cc1 -triple thumbv7-a15-linux -analyzer-checker=apiModeling.StdCLibraryFunctions,debug.ExprInspection -verify -analyzer-config eagerly-assume=false %s void clang_analyzer_eval(int); Index: cfe/trunk/test/Analysis/std-c-library-functions.cpp =================================================================== --- cfe/trunk/test/Analysis/std-c-library-functions.cpp +++ cfe/trunk/test/Analysis/std-c-library-functions.cpp @@ -1,4 +1,4 @@ -// RUN: %clang_analyze_cc1 -triple x86_64-unknown-linux -analyzer-checker=unix.StdCLibraryFunctions,debug.ExprInspection -verify %s +// RUN: %clang_analyze_cc1 -triple x86_64-unknown-linux -analyzer-checker=apiModeling.StdCLibraryFunctions,debug.ExprInspection -verify %s // Test that we don't model functions with broken prototypes. // Because they probably work differently as well.