diff --git a/Driver/clang.cpp b/Driver/clang.cpp index 741eddc3a45ae91286e60bff95aaf2715339a134..747f7e164d613d05842fa57b86253df64498dad1 100644 --- a/Driver/clang.cpp +++ b/Driver/clang.cpp @@ -107,6 +107,8 @@ ProgAction(llvm::cl::desc("Choose output type:"), llvm::cl::ZeroOrMore, "Run preprocessor, emit preprocessed file"), clEnumValN(DumpRawTokens, "dump-raw-tokens", "Lex file in raw mode and dump raw tokens"), + clEnumValN(RunAnalysis, "analyze", + "Run static analysis engine"), clEnumValN(DumpTokens, "dump-tokens", "Run preprocessor, dump internal rep of tokens"), clEnumValN(ParseNoop, "parse-noop", @@ -1298,7 +1300,6 @@ static ASTConsumer* CreateASTConsumer(const std::string& InFile, return CreateBlockRewriter(InFile, OutputFile, Diag, LangOpts); case RunAnalysis: - assert (!AnalysisList.empty()); return CreateAnalysisConsumer(&AnalysisList[0], &AnalysisList[0]+AnalysisList.size(), AnalysisStoreOpt, AnalysisDiagOpt, @@ -1545,10 +1546,7 @@ int main(int argc, char **argv) { exit(1); } - // Are we invoking one or more source analyses? - if (!AnalysisList.empty() && ProgAction == ParseSyntaxOnly) - ProgAction = RunAnalysis; - else if (!InheritanceViewCls.empty()) // C++ visualization? + if (!InheritanceViewCls.empty()) // C++ visualization? ProgAction = InheritanceView; llvm::OwningPtr<SourceManager> SourceMgr; diff --git a/test/Analysis/CFDateGC.m b/test/Analysis/CFDateGC.m index 04d2209a3cc16f82851852ea4e460a6acfe5117d..401cef4e9401df40fb70b3e78d060cfa67d5e837 100644 --- a/test/Analysis/CFDateGC.m +++ b/test/Analysis/CFDateGC.m @@ -1,4 +1,4 @@ -// RUN: clang -checker-cfref -verify -fobjc-gc %s +// RUN: clang -analyze -checker-cfref -verify -fobjc-gc %s //===----------------------------------------------------------------------===// // The following code is reduced using delta-debugging from diff --git a/test/Analysis/CFNumber.c b/test/Analysis/CFNumber.c index 19a1ec07921d719e8b2c58bc18b6e815d63de49d..6daeb729c9f971702143253735552f8c9fca57f2 100644 --- a/test/Analysis/CFNumber.c +++ b/test/Analysis/CFNumber.c @@ -1,4 +1,4 @@ -// RUN: clang -checker-cfref -verify -triple x86_64-apple-darwin9 %s +// RUN: clang -analyze -checker-cfref -verify -triple x86_64-apple-darwin9 %s typedef signed long CFIndex; typedef const struct __CFAllocator * CFAllocatorRef; diff --git a/test/Analysis/CFRetainRelease_NSAssertionHandler.m b/test/Analysis/CFRetainRelease_NSAssertionHandler.m index b17a51a673cbea1bc3b9d73ec8cbe0710b776708..13a2236518fd2b7bf89771699fa664d19f4278bf 100644 --- a/test/Analysis/CFRetainRelease_NSAssertionHandler.m +++ b/test/Analysis/CFRetainRelease_NSAssertionHandler.m @@ -1,4 +1,4 @@ -// RUN: clang -checker-cfref -verify %s +// RUN: clang -analyze -checker-cfref -verify %s typedef struct objc_selector *SEL; typedef signed char BOOL; diff --git a/test/Analysis/CGColorSpace.c b/test/Analysis/CGColorSpace.c index 97bf27982cd61ea6113362a801e9c6bd69f9b0f9..7dac73ca3a2bfaed8b7796540bfd9e23cb609833 100644 --- a/test/Analysis/CGColorSpace.c +++ b/test/Analysis/CGColorSpace.c @@ -1,4 +1,4 @@ -// RUN: clang -checker-cfref -verify %s +// RUN: clang -analyze -checker-cfref -verify %s typedef struct CGColorSpace *CGColorSpaceRef; extern CGColorSpaceRef CGColorSpaceCreateDeviceRGB(void); diff --git a/test/Analysis/CheckNSError.m b/test/Analysis/CheckNSError.m index 241c68cd85b3317ffda250a56730346df77ab236..7da12c04b893f321f7289286ccef61d5c8174837 100644 --- a/test/Analysis/CheckNSError.m +++ b/test/Analysis/CheckNSError.m @@ -1,4 +1,4 @@ -// RUN: clang -checker-cfref -verify %s +// RUN: clang -analyze -checker-cfref -verify %s typedef signed char BOOL; typedef int NSInteger; diff --git a/test/Analysis/MissingDealloc.m b/test/Analysis/MissingDealloc.m index e6df6f071b82dbd2a9d9cb99590b72363eb8c688..3b16aa3feab7fdca1a5db35d0ff8ee492a81d0f8 100644 --- a/test/Analysis/MissingDealloc.m +++ b/test/Analysis/MissingDealloc.m @@ -1,4 +1,4 @@ -// RUN: clang -warn-objc-missing-dealloc '-DIBOutlet=__attribute__((iboutlet))' %s --verify +// RUN: clang -analyze -warn-objc-missing-dealloc '-DIBOutlet=__attribute__((iboutlet))' %s --verify typedef signed char BOOL; @protocol NSObject - (BOOL)isEqual:(id)object; @end @interface NSObject <NSObject> {} diff --git a/test/Analysis/NSPanel.m b/test/Analysis/NSPanel.m index a24818e19ed8396f12af9279b0b3610cbfd5e732..8a64581b2effc90c89c10b530c1d87d6c1eb4ecd 100644 --- a/test/Analysis/NSPanel.m +++ b/test/Analysis/NSPanel.m @@ -1,4 +1,4 @@ -// RUN: clang -checker-cfref -verify %s +// RUN: clang -analyze -checker-cfref -verify %s // BEGIN delta-debugging reduced header stuff diff --git a/test/Analysis/NSString.m b/test/Analysis/NSString.m index ccee61b2f71507df4b9f7dc6c855dd95438cd2b8..af8909f838b18e46f52ef3cc5de9d1a4e605e6e5 100644 --- a/test/Analysis/NSString.m +++ b/test/Analysis/NSString.m @@ -1,4 +1,4 @@ -// RUN: clang -checker-cfref -verify %s +// RUN: clang -analyze -checker-cfref -verify %s //===----------------------------------------------------------------------===// // The following code is reduced using delta-debugging from diff --git a/test/Analysis/NSWindow.m b/test/Analysis/NSWindow.m index 012b2ded2291b961214c9e422a91ea77324def61..f7202f556384ecc7e75385fec43bed22013d7236 100644 --- a/test/Analysis/NSWindow.m +++ b/test/Analysis/NSWindow.m @@ -1,4 +1,4 @@ -// RUN: clang -checker-cfref -warn-dead-stores -verify %s +// RUN: clang -analyze -checker-cfref -warn-dead-stores -verify %s // These declarations were reduced using Delta-Debugging from Foundation.h // on Mac OS X. The test cases are below. diff --git a/test/Analysis/NoReturn.m b/test/Analysis/NoReturn.m index f67a673adb6eff9c415b55d741b2015bf7cc83d6..16870f8aa10159bda15b0f687e25efb2fe6e328b 100644 --- a/test/Analysis/NoReturn.m +++ b/test/Analysis/NoReturn.m @@ -1,5 +1,5 @@ -// RUN: clang -checker-simple -verify %s && -// RUN: clang -checker-cfref -verify %s +// RUN: clang -analyze -checker-simple -verify %s && +// RUN: clang -analyze -checker-cfref -verify %s #include <stdarg.h> diff --git a/test/Analysis/ObjCProperties.m b/test/Analysis/ObjCProperties.m index f207475bd637f4ef4d5e6ccf788da2895aaf5883..f2f18b5771150aabbb33e7ff27f126e208c0a080 100644 --- a/test/Analysis/ObjCProperties.m +++ b/test/Analysis/ObjCProperties.m @@ -1,4 +1,4 @@ -// RUN: clang -checker-simple %s -verify +// RUN: clang -analyze -checker-simple %s -verify // The point of this test cases is to exercise properties in the static // analyzer diff --git a/test/Analysis/ObjCRetSigs.m b/test/Analysis/ObjCRetSigs.m index 009f6c380805d8a77fd603491ca036018df558bb..2d1aa80d1256c6c74e0c2e3741a152ddaae01e0b 100644 --- a/test/Analysis/ObjCRetSigs.m +++ b/test/Analysis/ObjCRetSigs.m @@ -1,4 +1,4 @@ -// RUN: clang -warn-objc-methodsigs -verify %s +// RUN: clang -analyze -warn-objc-methodsigs -verify %s #include <stdio.h> diff --git a/test/Analysis/PR2978.m b/test/Analysis/PR2978.m index 0b9ae233786412ef92eb7fabff0a79169d23c4c5..e2a031dd06878419feb2f49612a487e9fd956445 100644 --- a/test/Analysis/PR2978.m +++ b/test/Analysis/PR2978.m @@ -1,4 +1,4 @@ -// RUN: clang -warn-objc-missing-dealloc %s -verify +// RUN: clang -analyze -warn-objc-missing-dealloc %s -verify // Tests for the checker which checks missing/extra ivar 'release' calls // in dealloc. diff --git a/test/Analysis/array-struct.c b/test/Analysis/array-struct.c index 8f4bb044ba87fb374087a1c48eb59b257ebd075c..1d5e9448e92833a186a8fc1574b46c109ebd7e4a 100644 --- a/test/Analysis/array-struct.c +++ b/test/Analysis/array-struct.c @@ -1,5 +1,5 @@ -// RUN: clang -checker-simple -verify %s -// DISABLE: clang -checker-simple -analyzer-store-region -verify %s +// RUN: clang -analyze -checker-simple -verify %s +// DISABLE: clang -analyze -checker-simple -analyzer-store-region -verify %s struct s { int data; diff --git a/test/Analysis/cfref_PR2519.c b/test/Analysis/cfref_PR2519.c index aa429a6f7eb5d3f565e9fb32e3ca3f79fd26bc5d..22146fbf6dd843c869764e466df44e8a53fdb1ea 100644 --- a/test/Analysis/cfref_PR2519.c +++ b/test/Analysis/cfref_PR2519.c @@ -1,4 +1,4 @@ -// RUN: clang -checker-cfref -verify %s +// RUN: clang -analyze -checker-cfref -verify %s typedef unsigned char Boolean; typedef signed long CFIndex; diff --git a/test/Analysis/cfref_rdar6080742.c b/test/Analysis/cfref_rdar6080742.c index 28d7d15c666b8ce13c1880dc4231a075737fda31..1364e8f6e8fc7a5af9f2557e0723c24d839b0419 100644 --- a/test/Analysis/cfref_rdar6080742.c +++ b/test/Analysis/cfref_rdar6080742.c @@ -1,4 +1,4 @@ -// RUN: clang -checker-cfref -verify %s +// RUN: clang -analyze -checker-cfref -verify %s // This test case was reported in <rdar:problem/6080742>. // It tests path-sensitivity with respect to '!(cfstring != 0)' (negation of inequality). diff --git a/test/Analysis/complex.c b/test/Analysis/complex.c index 0698d9cd8b691943818bc54c37fb4a63e3425635..22a239aace69328d2231c3eb09434076bf1a36a1 100644 --- a/test/Analysis/complex.c +++ b/test/Analysis/complex.c @@ -1,4 +1,4 @@ -// RUN: clang -checker-simple -verify %s +// RUN: clang -analyze -checker-simple -verify %s #include <stdint.h> diff --git a/test/Analysis/conditional-op-missing-lhs.c b/test/Analysis/conditional-op-missing-lhs.c index 9fbb9f198755a5704dc60c94bf7ea972bf60be81..8befc39854ffd5a7ee0b070721806c33ebbef911 100644 --- a/test/Analysis/conditional-op-missing-lhs.c +++ b/test/Analysis/conditional-op-missing-lhs.c @@ -1,4 +1,4 @@ -// RUN: clang -warn-dead-stores -warn-uninit-values -verify %s +// RUN: clang -analyze -warn-dead-stores -warn-uninit-values -verify %s void f1() { diff --git a/test/Analysis/dead-stores.c b/test/Analysis/dead-stores.c index 92dfdf712c59d7dd81b97075b8abb30e91d7ff38..c72bdcf2b45828ba21434879354759efc45eca36 100644 --- a/test/Analysis/dead-stores.c +++ b/test/Analysis/dead-stores.c @@ -1,6 +1,6 @@ -// RUN: clang -warn-dead-stores -verify %s && -// RUN: clang -checker-simple -warn-dead-stores -verify %s && -// RUN: clang -warn-dead-stores -checker-simple -verify %s +// RUN: clang -analyze -warn-dead-stores -verify %s && +// RUN: clang -analyze -checker-simple -warn-dead-stores -verify %s && +// RUN: clang -analyze -warn-dead-stores -checker-simple -verify %s void f1() { diff --git a/test/Analysis/dead-stores.m b/test/Analysis/dead-stores.m index f58c2c135f6cfd1fc8f5508e1bacb3b2288c4fec..ee948538858476ca13617e7ca6672a379b47af7f 100644 --- a/test/Analysis/dead-stores.m +++ b/test/Analysis/dead-stores.m @@ -1,4 +1,4 @@ -// RUN: clang -warn-dead-stores -verify %s +// RUN: clang -analyze -warn-dead-stores -verify %s typedef signed char BOOL; typedef unsigned int NSUInteger; diff --git a/test/Analysis/exercise-ps.c b/test/Analysis/exercise-ps.c index 0d5af4bcde2ddaff806b40868d0f34c77e71341d..f561912d21a9369cc55a9af45d369bd833cb7f57 100644 --- a/test/Analysis/exercise-ps.c +++ b/test/Analysis/exercise-ps.c @@ -1,4 +1,4 @@ -// RUN: clang -checker-simple -verify %s +// RUN: clang -analyze -checker-simple -verify %s // // Just exercise the analyzer (no assertions). diff --git a/test/Analysis/fields.c b/test/Analysis/fields.c index 72de12c4dcc1321f848ce46c3c343b0b7cd7218f..defa19ead9926267a79507dbe624e8891cd75203 100644 --- a/test/Analysis/fields.c +++ b/test/Analysis/fields.c @@ -1,5 +1,5 @@ -// RUN: clang -checker-cfref %s -verify && -// RUN: clang -checker-simple %s -verify +// RUN: clang -analyze -checker-cfref %s -verify && +// RUN: clang -analyze -checker-simple %s -verify unsigned foo(); typedef struct bf { unsigned x:2; } bf; diff --git a/test/Analysis/func.c b/test/Analysis/func.c index 49824c3ca65470617075aa456c351a5f098f80a5..53c4432a4d059c72e83dd39d576951827cd95618 100644 --- a/test/Analysis/func.c +++ b/test/Analysis/func.c @@ -1,4 +1,4 @@ -// RUN: clang -checker-simple -verify %s +// RUN: clang -analyze -checker-simple -verify %s void f(void) { void (*p)(void); diff --git a/test/Analysis/misc-ps.m b/test/Analysis/misc-ps.m index 5fccf5724e9735f0ab7ec231e3cf9693bfaa52d6..f9f1bdd4513b3f4e69883a75336c03279c1e2877 100644 --- a/test/Analysis/misc-ps.m +++ b/test/Analysis/misc-ps.m @@ -1,4 +1,4 @@ -// RUN: clang -checker-cfref --verify -fblocks %s +// RUN: clang -analyze -checker-cfref --verify -fblocks %s // Reduced test case from crash in <rdar://problem/6253157> @class NSObject; diff --git a/test/Analysis/no-exit-cfg.c b/test/Analysis/no-exit-cfg.c index b61abf548f0d20987a8dc5cc0185cfaa48201c0e..60637a1916e3015bfa9b25d00b0ced02392a1a68 100644 --- a/test/Analysis/no-exit-cfg.c +++ b/test/Analysis/no-exit-cfg.c @@ -1,4 +1,4 @@ -// RUN: clang -checker-cfref -verify %s +// RUN: clang -analyze -checker-cfref -verify %s // This is a test case for the issue reported in PR 2819: // http://llvm.org/bugs/show_bug.cgi?id=2819 diff --git a/test/Analysis/null-deref-ps.c b/test/Analysis/null-deref-ps.c index 5092e82e41897f017f75747e28d6016394de7e21..18884c12aeabd590a7bb7b202cf962d23ce8efa2 100644 --- a/test/Analysis/null-deref-ps.c +++ b/test/Analysis/null-deref-ps.c @@ -1,5 +1,5 @@ -// RUN: clang -std=gnu99 -checker-simple -verify %s && -// RUN: clang -std=gnu99 -checker-simple -analyzer-store-region -analyzer-purge-dead=false -verify %s +// RUN: clang -analyze -std=gnu99 -checker-simple -verify %s && +// RUN: clang -analyze -std=gnu99 -checker-simple -analyzer-store-region -analyzer-purge-dead=false -verify %s #include<stdint.h> #include <assert.h> diff --git a/test/Analysis/outofbound.c b/test/Analysis/outofbound.c index 6e6e8f033b5357062fdece5b4411d7411571d173..ab9c0cfa4c8a975bc709e0aaaf5bc434c2677c7e 100644 --- a/test/Analysis/outofbound.c +++ b/test/Analysis/outofbound.c @@ -1,4 +1,4 @@ -// RUN: clang -checker-simple -analyzer-store-region -verify %s +// RUN: clang -analyze -checker-simple -analyzer-store-region -verify %s char f1() { char* s = "abcd"; diff --git a/test/Analysis/rdar-6442306-1.m b/test/Analysis/rdar-6442306-1.m index 2bc5c5c75f48a340a27b42b2a0df9479a102134d..ea8d9baf6e65265bd7165dcee66ce2ea05aae705 100644 --- a/test/Analysis/rdar-6442306-1.m +++ b/test/Analysis/rdar-6442306-1.m @@ -1,5 +1,5 @@ -// RUN: clang -checker-cfref %s --analyzer-store-basic -verify -// DISABLE: clang -checker-cfref %s --analyzer-store-region -verify +// RUN: clang -analyze -checker-cfref %s --analyzer-store-basic -verify +// DISABLE: clang -analyze -checker-cfref %s --analyzer-store-region -verify typedef int bar_return_t; typedef struct { diff --git a/test/Analysis/refcnt_naming.m b/test/Analysis/refcnt_naming.m index 1390cdd73d0c74309a676899b7e187cdbce194a5..3c86853b47ee840c1a3dec8132790316b9cb235b 100644 --- a/test/Analysis/refcnt_naming.m +++ b/test/Analysis/refcnt_naming.m @@ -1,4 +1,4 @@ -// RUN: clang -checker-cfref -verify %s +// RUN: clang -analyze -checker-cfref -verify %s typedef const struct __CFString * CFStringRef; typedef const struct __CFAllocator * CFAllocatorRef; diff --git a/test/Analysis/retain-release.m b/test/Analysis/retain-release.m index bf833bf2aca79c9fc376cdb5aabab4541841b81d..ec40a9a0f79d35d2f118073155ce6ae1defcdda7 100644 --- a/test/Analysis/retain-release.m +++ b/test/Analysis/retain-release.m @@ -1,4 +1,4 @@ -// RUN: clang -checker-cfref -verify %s +// RUN: clang -analyze -checker-cfref -verify %s //===----------------------------------------------------------------------===// // The following code is reduced using delta-debugging from diff --git a/test/Analysis/stack-addr-ps.c b/test/Analysis/stack-addr-ps.c index 58687f36c705382d7607b696e89f5a0384ccf873..57ce7dc8850263a6fec6b49554fdf93aae27eae9 100644 --- a/test/Analysis/stack-addr-ps.c +++ b/test/Analysis/stack-addr-ps.c @@ -1,4 +1,4 @@ -// RUN: clang -checker-simple -verify %s +// RUN: clang -analyze -checker-simple -verify %s #include <stdlib.h> #include <alloca.h> diff --git a/test/Analysis/uninit-msg-expr.m b/test/Analysis/uninit-msg-expr.m index 10b983731424fc290a42aa2427a7c186274eff67..3bceca0e6c376ea3e77683fa04b74116d269d001 100644 --- a/test/Analysis/uninit-msg-expr.m +++ b/test/Analysis/uninit-msg-expr.m @@ -1,4 +1,4 @@ -// RUN: clang -checker-simple -verify %s +// RUN: clang -analyze -checker-simple -verify %s //===----------------------------------------------------------------------===// // The following code is reduced using delta-debugging from diff --git a/test/Analysis/uninit-ps-rdar6145427.m b/test/Analysis/uninit-ps-rdar6145427.m index b24cbaf65706a2053ac606adde66d5b87447264b..530139da932fadcdc66479e0bd5e0373c4e73d9c 100644 --- a/test/Analysis/uninit-ps-rdar6145427.m +++ b/test/Analysis/uninit-ps-rdar6145427.m @@ -1,4 +1,4 @@ -// RUN: clang -verify -checker-cfref %s +// RUN: clang -analyze -verify -checker-cfref %s // Delta-Debugging reduced preamble. typedef signed char BOOL; diff --git a/test/Analysis/uninit-vals-ps-region.c b/test/Analysis/uninit-vals-ps-region.c index 96da8b0935a73744bd84ce823caff73d26b7a187..830e32ad8fa3de56d4cfc73e83ffe67e443d4307 100644 --- a/test/Analysis/uninit-vals-ps-region.c +++ b/test/Analysis/uninit-vals-ps-region.c @@ -1,4 +1,4 @@ -// DISABLE: clang -checker-simple -analyzer-store-region -verify %s +// DISABLE: clang -analyze -checker-simple -analyzer-store-region -verify %s struct s { int data; diff --git a/test/Analysis/uninit-vals-ps.c b/test/Analysis/uninit-vals-ps.c index b86000092993ddf41375dc9433286ffad6600921..96963e4fff46107883de5975f7dd988a06a03c3c 100644 --- a/test/Analysis/uninit-vals-ps.c +++ b/test/Analysis/uninit-vals-ps.c @@ -1,5 +1,5 @@ -// RUN: clang -checker-cfref -verify %s && -// RUN: clang -checker-cfref -analyzer-store-region -verify %s +// RUN: clang -analyze -checker-cfref -verify %s && +// RUN: clang -analyze -checker-cfref -analyzer-store-region -verify %s struct FPRec { void (*my_func)(int * x); diff --git a/test/Analysis/uninit-vals.c b/test/Analysis/uninit-vals.c index fa6d0fc481b48095107d5dd32107d4a4207220c7..a7f5733dc414976fc1eb1269ebebeb50c983f79e 100644 --- a/test/Analysis/uninit-vals.c +++ b/test/Analysis/uninit-vals.c @@ -1,4 +1,4 @@ -// RUN: clang -warn-uninit-values -verify %s +// RUN: clang -analyze -warn-uninit-values -verify %s int f1() { int x; diff --git a/test/Analysis/uninit-vals.m b/test/Analysis/uninit-vals.m index 74aa6672027047f30fffe276b529b00425b52da3..f7a7df766e5005b4665f452b87b2c98b4e4ac892 100644 --- a/test/Analysis/uninit-vals.m +++ b/test/Analysis/uninit-vals.m @@ -1,4 +1,4 @@ -// RUN: clang -checker-cfref -verify %s +// RUN: clang -analyze -checker-cfref -verify %s typedef unsigned int NSUInteger; diff --git a/test/Analysis/unused-ivars.m b/test/Analysis/unused-ivars.m index dd6d69e597cd0218af4749ad868db7c3137947ef..f1568dacc1879dba1520c420494f1f3772a885ab 100644 --- a/test/Analysis/unused-ivars.m +++ b/test/Analysis/unused-ivars.m @@ -1,4 +1,4 @@ -// RUN: clang -warn-objc-unused-ivars %s -verify +// RUN: clang -analyze -warn-objc-unused-ivars %s -verify @interface A { diff --git a/utils/ccc-analyzer b/utils/ccc-analyzer index 14cbf54df10da22dfdb3ecfb2b029ca31944942a..71f840af51aa8b47906fc0a30e5b11a928aa31a0 100755 --- a/utils/ccc-analyzer +++ b/utils/ccc-analyzer @@ -89,6 +89,7 @@ sub Analyze { push @CmdArgs,'-DIBOutlet=__attribute__((iboutlet))'; push @CmdArgs,@$Args; @CmdArgsSansAnalyses = @CmdArgs; + push @CmdArgs,'--analyze'; push @CmdArgs,(split /\s/,$Analyses); $RunAnalyzer = 1; }