зеркало из https://github.com/microsoft/clang-1.git
[analyzer] Use the new registration mechanism on the IdempotentOperationChecker.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125611 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
4bfd680597
Коммит
c9f2e0f286
|
@ -66,8 +66,6 @@ def analysis_ObjCMemChecker : Flag<"-analyzer-check-objc-mem">,
|
||||||
HelpText<"Run the [Core] Foundation reference count checker">;
|
HelpText<"Run the [Core] Foundation reference count checker">;
|
||||||
def analysis_WarnSizeofPointer : Flag<"-warn-sizeof-pointer">,
|
def analysis_WarnSizeofPointer : Flag<"-warn-sizeof-pointer">,
|
||||||
HelpText<"Warn about unintended use of sizeof() on pointer expressions">;
|
HelpText<"Warn about unintended use of sizeof() on pointer expressions">;
|
||||||
def analysis_WarnIdempotentOps : Flag<"-analyzer-check-idempotent-operations">,
|
|
||||||
HelpText<"Warn about idempotent operations">;
|
|
||||||
def analysis_AnalyzerStats : Flag<"-analyzer-stats">,
|
def analysis_AnalyzerStats : Flag<"-analyzer-stats">,
|
||||||
HelpText<"Emit warnings with analyzer statistics">;
|
HelpText<"Emit warnings with analyzer statistics">;
|
||||||
def analysis_WarnBufferOverflows : Flag<"-analyzer-check-buffer-overflows">,
|
def analysis_WarnBufferOverflows : Flag<"-analyzer-check-buffer-overflows">,
|
||||||
|
|
|
@ -69,7 +69,6 @@ public:
|
||||||
unsigned AnalyzeNestedBlocks : 1;
|
unsigned AnalyzeNestedBlocks : 1;
|
||||||
unsigned AnalyzerStats : 1;
|
unsigned AnalyzerStats : 1;
|
||||||
unsigned EagerlyAssume : 1;
|
unsigned EagerlyAssume : 1;
|
||||||
unsigned IdempotentOps : 1;
|
|
||||||
unsigned BufferOverflows : 1;
|
unsigned BufferOverflows : 1;
|
||||||
unsigned PurgeDead : 1;
|
unsigned PurgeDead : 1;
|
||||||
unsigned TrimGraph : 1;
|
unsigned TrimGraph : 1;
|
||||||
|
@ -93,7 +92,6 @@ public:
|
||||||
AnalyzeNestedBlocks = 0;
|
AnalyzeNestedBlocks = 0;
|
||||||
AnalyzerStats = 0;
|
AnalyzerStats = 0;
|
||||||
EagerlyAssume = 0;
|
EagerlyAssume = 0;
|
||||||
IdempotentOps = 0;
|
|
||||||
BufferOverflows = 0;
|
BufferOverflows = 0;
|
||||||
PurgeDead = 1;
|
PurgeDead = 1;
|
||||||
TrimGraph = 0;
|
TrimGraph = 0;
|
||||||
|
|
|
@ -952,7 +952,6 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
|
||||||
CmdArgs.push_back("-analyzer-check-objc-mem");
|
CmdArgs.push_back("-analyzer-check-objc-mem");
|
||||||
|
|
||||||
CmdArgs.push_back("-analyzer-eagerly-assume");
|
CmdArgs.push_back("-analyzer-eagerly-assume");
|
||||||
CmdArgs.push_back("-analyzer-check-idempotent-operations");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -116,8 +116,6 @@ static void AnalyzerOptsToArgs(const AnalyzerOptions &Opts,
|
||||||
Res.push_back("-analyzer-experimental-checks");
|
Res.push_back("-analyzer-experimental-checks");
|
||||||
if (Opts.EnableExperimentalInternalChecks)
|
if (Opts.EnableExperimentalInternalChecks)
|
||||||
Res.push_back("-analyzer-experimental-internal-checks");
|
Res.push_back("-analyzer-experimental-internal-checks");
|
||||||
if (Opts.IdempotentOps)
|
|
||||||
Res.push_back("-analyzer-check-idempotent-operations");
|
|
||||||
if (Opts.BufferOverflows)
|
if (Opts.BufferOverflows)
|
||||||
Res.push_back("-analyzer-check-buffer-overflows");
|
Res.push_back("-analyzer-check-buffer-overflows");
|
||||||
|
|
||||||
|
@ -891,7 +889,6 @@ static void ParseAnalyzerArgs(AnalyzerOptions &Opts, ArgList &Args,
|
||||||
Opts.MaxLoop = Args.getLastArgIntValue(OPT_analyzer_max_loop, 4, Diags);
|
Opts.MaxLoop = Args.getLastArgIntValue(OPT_analyzer_max_loop, 4, Diags);
|
||||||
Opts.EagerlyTrimEGraph = !Args.hasArg(OPT_analyzer_no_eagerly_trim_egraph);
|
Opts.EagerlyTrimEGraph = !Args.hasArg(OPT_analyzer_no_eagerly_trim_egraph);
|
||||||
Opts.InlineCall = Args.hasArg(OPT_analyzer_inline_call);
|
Opts.InlineCall = Args.hasArg(OPT_analyzer_inline_call);
|
||||||
Opts.IdempotentOps = Args.hasArg(OPT_analysis_WarnIdempotentOps);
|
|
||||||
Opts.BufferOverflows = Args.hasArg(OPT_analysis_WarnBufferOverflows);
|
Opts.BufferOverflows = Args.hasArg(OPT_analysis_WarnBufferOverflows);
|
||||||
|
|
||||||
Opts.CheckersControlList.clear();
|
Opts.CheckersControlList.clear();
|
||||||
|
|
|
@ -78,6 +78,11 @@ def UnreachableCodeChecker : Checker<"UnreachableCode">,
|
||||||
HelpText<"Check unreachable code">,
|
HelpText<"Check unreachable code">,
|
||||||
DescFile<"UnreachableCodeChecker.cpp">;
|
DescFile<"UnreachableCodeChecker.cpp">;
|
||||||
|
|
||||||
|
def IdempotentOperationChecker : Checker<"IdempotentOps">,
|
||||||
|
InPackage<CoreExperimental>,
|
||||||
|
HelpText<"Warn about idempotent operations">,
|
||||||
|
DescFile<"IdempotentOperationChecker.cpp">;
|
||||||
|
|
||||||
def ChrootChecker : Checker<"Chroot">,
|
def ChrootChecker : Checker<"Chroot">,
|
||||||
InPackage<UnixExperimental>,
|
InPackage<UnixExperimental>,
|
||||||
HelpText<"Check improper use of chroot">,
|
HelpText<"Check improper use of chroot">,
|
||||||
|
|
|
@ -22,7 +22,6 @@ namespace ento {
|
||||||
class ExprEngine;
|
class ExprEngine;
|
||||||
|
|
||||||
void RegisterAnalyzerStatsChecker(ExprEngine &Eng);
|
void RegisterAnalyzerStatsChecker(ExprEngine &Eng);
|
||||||
void RegisterIdempotentOperationChecker(ExprEngine &Eng);
|
|
||||||
void RegisterMallocChecker(ExprEngine &Eng);
|
void RegisterMallocChecker(ExprEngine &Eng);
|
||||||
|
|
||||||
} // end GR namespace
|
} // end GR namespace
|
||||||
|
|
|
@ -42,7 +42,7 @@
|
||||||
// - Finer grained false positive control (levels)
|
// - Finer grained false positive control (levels)
|
||||||
// - Handling ~0 values
|
// - Handling ~0 values
|
||||||
|
|
||||||
#include "ExperimentalChecks.h"
|
#include "ClangSACheckers.h"
|
||||||
#include "clang/Analysis/CFGStmtMap.h"
|
#include "clang/Analysis/CFGStmtMap.h"
|
||||||
#include "clang/Analysis/Analyses/PseudoConstantAnalysis.h"
|
#include "clang/Analysis/Analyses/PseudoConstantAnalysis.h"
|
||||||
#include "clang/StaticAnalyzer/Core/BugReporter/BugReporter.h"
|
#include "clang/StaticAnalyzer/Core/BugReporter/BugReporter.h"
|
||||||
|
@ -132,7 +132,7 @@ void *IdempotentOperationChecker::getTag() {
|
||||||
return &x;
|
return &x;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ento::RegisterIdempotentOperationChecker(ExprEngine &Eng) {
|
void ento::registerIdempotentOperationChecker(ExprEngine &Eng) {
|
||||||
Eng.registerCheck(new IdempotentOperationChecker());
|
Eng.registerCheck(new IdempotentOperationChecker());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -354,12 +354,6 @@ static void ActionExprEngine(AnalysisConsumer &C, AnalysisManager& mgr,
|
||||||
if (C.Opts.EnableExperimentalChecks)
|
if (C.Opts.EnableExperimentalChecks)
|
||||||
RegisterExperimentalChecks(Eng);
|
RegisterExperimentalChecks(Eng);
|
||||||
|
|
||||||
// Enable idempotent operation checking if it was explicitly turned on, or if
|
|
||||||
// we are running experimental checks (i.e. everything)
|
|
||||||
if (C.Opts.IdempotentOps || C.Opts.EnableExperimentalChecks
|
|
||||||
|| C.Opts.EnableExperimentalInternalChecks)
|
|
||||||
RegisterIdempotentOperationChecker(Eng);
|
|
||||||
|
|
||||||
if (C.Opts.BufferOverflows)
|
if (C.Opts.BufferOverflows)
|
||||||
RegisterArrayBoundCheckerV2(Eng);
|
RegisterArrayBoundCheckerV2(Eng);
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
// RUN: %clang_cc1 -Wunused-variable -analyze -analyzer-experimental-internal-checks -analyzer-check-objc-mem -analyzer-check-dead-stores -fblocks -verify -Wno-unreachable-code -analyzer-opt-analyze-nested-blocks %s
|
// RUN: %clang_cc1 -Wunused-variable -analyze -analyzer-checker=core.experimental.IdempotentOps -analyzer-experimental-internal-checks -analyzer-check-objc-mem -analyzer-check-dead-stores -fblocks -verify -Wno-unreachable-code -analyzer-opt-analyze-nested-blocks %s
|
||||||
// RUN: %clang_cc1 -Wunused-variable -analyze -analyzer-experimental-internal-checks -analyzer-check-objc-mem -analyzer-store=basic -analyzer-constraints=basic -analyzer-check-dead-stores -fblocks -verify -Wno-unreachable-code -analyzer-opt-analyze-nested-blocks %s
|
// RUN: %clang_cc1 -Wunused-variable -analyze -analyzer-checker=core.experimental.IdempotentOps -analyzer-experimental-internal-checks -analyzer-check-objc-mem -analyzer-store=basic -analyzer-constraints=basic -analyzer-check-dead-stores -fblocks -verify -Wno-unreachable-code -analyzer-opt-analyze-nested-blocks %s
|
||||||
// RUN: %clang_cc1 -Wunused-variable -analyze -analyzer-experimental-internal-checks -analyzer-check-objc-mem -analyzer-store=basic -analyzer-constraints=range -analyzer-check-dead-stores -fblocks -verify -Wno-unreachable-code -analyzer-opt-analyze-nested-blocks %s
|
// RUN: %clang_cc1 -Wunused-variable -analyze -analyzer-checker=core.experimental.IdempotentOps -analyzer-experimental-internal-checks -analyzer-check-objc-mem -analyzer-store=basic -analyzer-constraints=range -analyzer-check-dead-stores -fblocks -verify -Wno-unreachable-code -analyzer-opt-analyze-nested-blocks %s
|
||||||
// RUN: %clang_cc1 -Wunused-variable -analyze -analyzer-experimental-internal-checks -analyzer-check-objc-mem -analyzer-store=region -analyzer-constraints=basic -analyzer-check-dead-stores -fblocks -verify -Wno-unreachable-code -analyzer-opt-analyze-nested-blocks %s
|
// RUN: %clang_cc1 -Wunused-variable -analyze -analyzer-checker=core.experimental.IdempotentOps -analyzer-experimental-internal-checks -analyzer-check-objc-mem -analyzer-store=region -analyzer-constraints=basic -analyzer-check-dead-stores -fblocks -verify -Wno-unreachable-code -analyzer-opt-analyze-nested-blocks %s
|
||||||
// RUN: %clang_cc1 -Wunused-variable -analyze -analyzer-experimental-internal-checks -analyzer-check-objc-mem -analyzer-store=region -analyzer-constraints=range -analyzer-check-dead-stores -fblocks -verify -Wno-unreachable-code -analyzer-opt-analyze-nested-blocks %s
|
// RUN: %clang_cc1 -Wunused-variable -analyze -analyzer-checker=core.experimental.IdempotentOps -analyzer-experimental-internal-checks -analyzer-check-objc-mem -analyzer-store=region -analyzer-constraints=range -analyzer-check-dead-stores -fblocks -verify -Wno-unreachable-code -analyzer-opt-analyze-nested-blocks %s
|
||||||
|
|
||||||
void f1() {
|
void f1() {
|
||||||
int k, y; // expected-warning{{unused variable 'k'}} expected-warning{{unused variable 'y'}}
|
int k, y; // expected-warning{{unused variable 'k'}} expected-warning{{unused variable 'y'}}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// RUN: %clang_cc1 -analyze -analyzer-store=region -analyzer-constraints=range -fblocks -analyzer-opt-analyze-nested-blocks -analyzer-check-objc-mem -analyzer-check-idempotent-operations -analyzer-max-loop 3 -verify %s
|
// RUN: %clang_cc1 -analyze -analyzer-store=region -analyzer-constraints=range -fblocks -analyzer-opt-analyze-nested-blocks -analyzer-check-objc-mem -analyzer-checker=core.experimental.IdempotentOps -analyzer-max-loop 3 -verify %s
|
||||||
// RUN: %clang_cc1 -analyze -analyzer-store=region -analyzer-constraints=range -fblocks -analyzer-opt-analyze-nested-blocks -analyzer-check-objc-mem -analyzer-check-idempotent-operations -analyzer-max-loop 4 -verify %s
|
// RUN: %clang_cc1 -analyze -analyzer-store=region -analyzer-constraints=range -fblocks -analyzer-opt-analyze-nested-blocks -analyzer-check-objc-mem -analyzer-checker=core.experimental.IdempotentOps -analyzer-max-loop 4 -verify %s
|
||||||
// RUN: %clang_cc1 -analyze -analyzer-store=region -analyzer-constraints=range -fblocks -analyzer-opt-analyze-nested-blocks -analyzer-check-objc-mem -analyzer-check-idempotent-operations %s -verify
|
// RUN: %clang_cc1 -analyze -analyzer-store=region -analyzer-constraints=range -fblocks -analyzer-opt-analyze-nested-blocks -analyzer-check-objc-mem -analyzer-checker=core.experimental.IdempotentOps %s -verify
|
||||||
|
|
||||||
void always_warning() { int *p = 0; *p = 0xDEADBEEF; } // expected-warning{{Dereference of null pointer (loaded from variable 'p')}}
|
void always_warning() { int *p = 0; *p = 0xDEADBEEF; } // expected-warning{{Dereference of null pointer (loaded from variable 'p')}}
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// RUN: %clang_cc1 -analyze -analyzer-store=region -analyzer-constraints=range -fblocks -analyzer-opt-analyze-nested-blocks -analyzer-check-objc-mem -analyzer-check-idempotent-operations -verify %s
|
// RUN: %clang_cc1 -analyze -analyzer-store=region -analyzer-constraints=range -fblocks -analyzer-opt-analyze-nested-blocks -analyzer-check-objc-mem -analyzer-checker=core.experimental.IdempotentOps -verify %s
|
||||||
|
|
||||||
// Basic tests
|
// Basic tests
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// RUN: %clang_cc1 -analyze -analyzer-store=region -analyzer-constraints=range -fblocks -analyzer-opt-analyze-nested-blocks -analyzer-check-objc-mem -analyzer-check-idempotent-operations -verify %s
|
// RUN: %clang_cc1 -analyze -analyzer-store=region -analyzer-constraints=range -fblocks -analyzer-opt-analyze-nested-blocks -analyzer-check-objc-mem -analyzer-checker=core.experimental.IdempotentOps -verify %s
|
||||||
|
|
||||||
// C++ specific false positives
|
// C++ specific false positives
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// RUN: %clang_cc1 -analyze -analyzer-store=region -analyzer-constraints=range -fblocks -analyzer-opt-analyze-nested-blocks -analyzer-check-objc-mem -analyzer-check-idempotent-operations -verify %s
|
// RUN: %clang_cc1 -analyze -analyzer-store=region -analyzer-constraints=range -fblocks -analyzer-opt-analyze-nested-blocks -analyzer-check-objc-mem -analyzer-checker=core.experimental.IdempotentOps -verify %s
|
||||||
|
|
||||||
typedef signed char BOOL;
|
typedef signed char BOOL;
|
||||||
typedef unsigned long NSUInteger;
|
typedef unsigned long NSUInteger;
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
// RUN: %clang_cc1 -triple i386-apple-darwin9 -analyze -analyzer-experimental-internal-checks -analyzer-check-objc-mem -analyzer-store=region -verify -fblocks -analyzer-opt-analyze-nested-blocks %s
|
// RUN: %clang_cc1 -triple i386-apple-darwin9 -analyze -analyzer-checker=core.experimental.IdempotentOps -analyzer-experimental-internal-checks -analyzer-check-objc-mem -analyzer-store=region -verify -fblocks -analyzer-opt-analyze-nested-blocks %s
|
||||||
// RUN: %clang_cc1 -triple x86_64-apple-darwin9 -DTEST_64 -analyze -analyzer-experimental-internal-checks -analyzer-check-objc-mem -analyzer-store=region -verify -fblocks -analyzer-opt-analyze-nested-blocks %s
|
// RUN: %clang_cc1 -triple x86_64-apple-darwin9 -DTEST_64 -analyze -analyzer-checker=core.experimental.IdempotentOps -analyzer-experimental-internal-checks -analyzer-check-objc-mem -analyzer-store=region -verify -fblocks -analyzer-opt-analyze-nested-blocks %s
|
||||||
|
|
||||||
typedef long unsigned int size_t;
|
typedef long unsigned int size_t;
|
||||||
void *memcpy(void *, const void *, size_t);
|
void *memcpy(void *, const void *, size_t);
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
// NOTE: Use '-fobjc-gc' to test the analysis being run twice, and multiple reports are not issued.
|
// NOTE: Use '-fobjc-gc' to test the analysis being run twice, and multiple reports are not issued.
|
||||||
// RUN: %clang_cc1 -triple i386-apple-darwin10 -analyze -analyzer-experimental-internal-checks -analyzer-check-objc-mem -analyzer-checker=cocoa.AtSync -analyzer-store=basic -fobjc-gc -analyzer-constraints=basic -verify -fblocks -Wno-unreachable-code %s
|
// RUN: %clang_cc1 -triple i386-apple-darwin10 -analyze -analyzer-experimental-internal-checks -analyzer-check-objc-mem -analyzer-checker=core.experimental.IdempotentOps -analyzer-checker=cocoa.AtSync -analyzer-store=basic -fobjc-gc -analyzer-constraints=basic -verify -fblocks -Wno-unreachable-code %s
|
||||||
// RUN: %clang_cc1 -triple i386-apple-darwin10 -analyze -analyzer-experimental-internal-checks -analyzer-check-objc-mem -analyzer-checker=cocoa.AtSync -analyzer-store=basic -analyzer-constraints=range -verify -fblocks -Wno-unreachable-code %s
|
// RUN: %clang_cc1 -triple i386-apple-darwin10 -analyze -analyzer-experimental-internal-checks -analyzer-check-objc-mem -analyzer-checker=core.experimental.IdempotentOps -analyzer-checker=cocoa.AtSync -analyzer-store=basic -analyzer-constraints=range -verify -fblocks -Wno-unreachable-code %s
|
||||||
// RUN: %clang_cc1 -triple i386-apple-darwin10 -analyze -analyzer-experimental-internal-checks -analyzer-check-objc-mem -analyzer-checker=cocoa.AtSync -analyzer-store=region -analyzer-constraints=basic -verify -fblocks -Wno-unreachable-code %s
|
// RUN: %clang_cc1 -triple i386-apple-darwin10 -analyze -analyzer-experimental-internal-checks -analyzer-check-objc-mem -analyzer-checker=core.experimental.IdempotentOps -analyzer-checker=cocoa.AtSync -analyzer-store=region -analyzer-constraints=basic -verify -fblocks -Wno-unreachable-code %s
|
||||||
// RUN: %clang_cc1 -triple i386-apple-darwin10 -analyze -analyzer-experimental-internal-checks -analyzer-check-objc-mem -analyzer-checker=cocoa.AtSync -analyzer-store=region -analyzer-constraints=range -verify -fblocks -Wno-unreachable-code %s
|
// RUN: %clang_cc1 -triple i386-apple-darwin10 -analyze -analyzer-experimental-internal-checks -analyzer-check-objc-mem -analyzer-checker=core.experimental.IdempotentOps -analyzer-checker=cocoa.AtSync -analyzer-store=region -analyzer-constraints=range -verify -fblocks -Wno-unreachable-code %s
|
||||||
// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -analyze -analyzer-experimental-internal-checks -analyzer-check-objc-mem -analyzer-checker=cocoa.AtSync -analyzer-store=basic -fobjc-gc -analyzer-constraints=basic -verify -fblocks -Wno-unreachable-code %s
|
// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -analyze -analyzer-experimental-internal-checks -analyzer-check-objc-mem -analyzer-checker=core.experimental.IdempotentOps -analyzer-checker=cocoa.AtSync -analyzer-store=basic -fobjc-gc -analyzer-constraints=basic -verify -fblocks -Wno-unreachable-code %s
|
||||||
// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -analyze -analyzer-experimental-internal-checks -analyzer-check-objc-mem -analyzer-checker=cocoa.AtSync -analyzer-store=basic -analyzer-constraints=range -verify -fblocks -Wno-unreachable-code %s
|
// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -analyze -analyzer-experimental-internal-checks -analyzer-check-objc-mem -analyzer-checker=core.experimental.IdempotentOps -analyzer-checker=cocoa.AtSync -analyzer-store=basic -analyzer-constraints=range -verify -fblocks -Wno-unreachable-code %s
|
||||||
// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -analyze -analyzer-experimental-internal-checks -analyzer-check-objc-mem -analyzer-checker=cocoa.AtSync -analyzer-store=region -analyzer-constraints=basic -verify -fblocks -Wno-unreachable-code %s
|
// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -analyze -analyzer-experimental-internal-checks -analyzer-check-objc-mem -analyzer-checker=core.experimental.IdempotentOps -analyzer-checker=cocoa.AtSync -analyzer-store=region -analyzer-constraints=basic -verify -fblocks -Wno-unreachable-code %s
|
||||||
// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -analyze -analyzer-experimental-internal-checks -analyzer-check-objc-mem -analyzer-checker=cocoa.AtSync -analyzer-store=region -analyzer-constraints=range -verify -fblocks -Wno-unreachable-code %s
|
// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -analyze -analyzer-experimental-internal-checks -analyzer-check-objc-mem -analyzer-checker=core.experimental.IdempotentOps -analyzer-checker=cocoa.AtSync -analyzer-store=region -analyzer-constraints=range -verify -fblocks -Wno-unreachable-code %s
|
||||||
|
|
||||||
#ifndef __clang_analyzer__
|
#ifndef __clang_analyzer__
|
||||||
#error __clang__analyzer__ not defined
|
#error __clang__analyzer__ not defined
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
// RUN: %clang_cc1 -triple i386-apple-darwin10 -analyze -analyzer-experimental-internal-checks -std=gnu99 -analyzer-check-objc-mem -verify %s -analyzer-constraints=basic -analyzer-store=basic -Wreturn-type
|
// RUN: %clang_cc1 -triple i386-apple-darwin10 -analyze -analyzer-checker=core.experimental.IdempotentOps -analyzer-experimental-internal-checks -std=gnu99 -analyzer-check-objc-mem -verify %s -analyzer-constraints=basic -analyzer-store=basic -Wreturn-type
|
||||||
// RUN: %clang_cc1 -triple i386-apple-darwin10 -analyze -analyzer-experimental-internal-checks -std=gnu99 -analyzer-check-objc-mem -verify %s -analyzer-constraints=range -analyzer-store=basic -Wreturn-type
|
// RUN: %clang_cc1 -triple i386-apple-darwin10 -analyze -analyzer-checker=core.experimental.IdempotentOps -analyzer-experimental-internal-checks -std=gnu99 -analyzer-check-objc-mem -verify %s -analyzer-constraints=range -analyzer-store=basic -Wreturn-type
|
||||||
// RUN: %clang_cc1 -triple i386-apple-darwin10 -analyze -analyzer-experimental-internal-checks -std=gnu99 -analyzer-check-objc-mem -analyzer-store=region -analyzer-constraints=range -analyzer-no-purge-dead -verify %s -Wreturn-type
|
// RUN: %clang_cc1 -triple i386-apple-darwin10 -analyze -analyzer-checker=core.experimental.IdempotentOps -analyzer-experimental-internal-checks -std=gnu99 -analyzer-check-objc-mem -analyzer-store=region -analyzer-constraints=range -analyzer-no-purge-dead -verify %s -Wreturn-type
|
||||||
// RUN: %clang_cc1 -triple i386-apple-darwin10 -analyze -analyzer-experimental-internal-checks -std=gnu99 -analyzer-check-objc-mem -analyzer-store=region -analyzer-constraints=range -verify %s -Wreturn-type
|
// RUN: %clang_cc1 -triple i386-apple-darwin10 -analyze -analyzer-checker=core.experimental.IdempotentOps -analyzer-experimental-internal-checks -std=gnu99 -analyzer-check-objc-mem -analyzer-store=region -analyzer-constraints=range -verify %s -Wreturn-type
|
||||||
|
|
||||||
typedef unsigned uintptr_t;
|
typedef unsigned uintptr_t;
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// RUN: %clang_cc1 -analyze -analyzer-check-objc-mem -analyzer-store=region -analyzer-check-idempotent-operations -verify %s
|
// RUN: %clang_cc1 -analyze -analyzer-check-objc-mem -analyzer-store=region -analyzer-checker=core.experimental.IdempotentOps -verify %s
|
||||||
|
|
||||||
struct s {
|
struct s {
|
||||||
int data;
|
int data;
|
||||||
|
|
Загрузка…
Ссылка в новой задаче