diff options
author | Anna Zaks <ganna@apple.com> | 2012-03-01 22:37:46 +0000 |
---|---|---|
committer | Anna Zaks <ganna@apple.com> | 2012-03-01 22:37:46 +0000 |
commit | d5c3027473d3ca28492f3e734cd91ef809d6406e (patch) | |
tree | 72d1c6b6d1894e1a3174ebd60393f2d4a2cdfb87 | |
parent | 5350c245093619258e51f36da6fa2453504164b2 (diff) | |
download | bcm5719-llvm-d5c3027473d3ca28492f3e734cd91ef809d6406e.tar.gz bcm5719-llvm-d5c3027473d3ca28492f3e734cd91ef809d6406e.zip |
[analyzer] Turn inlining on by default for better testing exposure.
Fix a test, which was most likely an unintended recursive call.
llvm-svn: 151848
-rw-r--r-- | clang/include/clang/Frontend/AnalyzerOptions.h | 2 | ||||
-rw-r--r-- | clang/lib/Driver/Tools.cpp | 2 | ||||
-rw-r--r-- | clang/lib/Frontend/CompilerInvocation.cpp | 3 | ||||
-rw-r--r-- | clang/test/Analysis/misc-ps-region-store.m | 4 |
4 files changed, 8 insertions, 3 deletions
diff --git a/clang/include/clang/Frontend/AnalyzerOptions.h b/clang/include/clang/Frontend/AnalyzerOptions.h index 66d0c377778..8a1f4f02273 100644 --- a/clang/include/clang/Frontend/AnalyzerOptions.h +++ b/clang/include/clang/Frontend/AnalyzerOptions.h @@ -100,7 +100,7 @@ public: TrimGraph = 0; VisualizeEGDot = 0; VisualizeEGUbi = 0; - InlineCall = 0; + InlineCall = 1; UnoptimizedCFG = 0; CFGAddImplicitDtors = 0; CFGAddInitializers = 0; diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp index 1d77c5f1a84..08af9f77cac 100644 --- a/clang/lib/Driver/Tools.cpp +++ b/clang/lib/Driver/Tools.cpp @@ -1339,6 +1339,8 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, CmdArgs.push_back("-analyzer-eagerly-assume"); + CmdArgs.push_back("-analyzer-inline-call"); + // Add default argument set. if (!Args.hasArg(options::OPT__analyzer_no_default_checks)) { CmdArgs.push_back("-analyzer-checker=core"); diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp index d792dc7730f..b0c03024acd 100644 --- a/clang/lib/Frontend/CompilerInvocation.cpp +++ b/clang/lib/Frontend/CompilerInvocation.cpp @@ -1044,7 +1044,8 @@ static bool ParseAnalyzerArgs(AnalyzerOptions &Opts, ArgList &Args, Opts.MaxNodes = Args.getLastArgIntValue(OPT_analyzer_max_nodes, 150000,Diags); Opts.MaxLoop = Args.getLastArgIntValue(OPT_analyzer_max_loop, 4, Diags); Opts.EagerlyTrimEGraph = !Args.hasArg(OPT_analyzer_no_eagerly_trim_egraph); - Opts.InlineCall = Args.hasArg(OPT_analyzer_inline_call); + if (Args.hasArg(OPT_analyzer_inline_call)) + Opts.InlineCall = 1; Opts.PrintStats = Args.hasArg(OPT_analyzer_stats); Opts.CheckersControlList.clear(); diff --git a/clang/test/Analysis/misc-ps-region-store.m b/clang/test/Analysis/misc-ps-region-store.m index c915263644b..7268c909be8 100644 --- a/clang/test/Analysis/misc-ps-region-store.m +++ b/clang/test/Analysis/misc-ps-region-store.m @@ -294,9 +294,11 @@ int test_invalidate_field_test_positive() { struct ArrayWrapper { unsigned char y[16]; }; struct WrappedStruct { unsigned z; }; +void test_handle_array_wrapper_helper(); + int test_handle_array_wrapper() { struct ArrayWrapper x; - test_handle_array_wrapper(&x); + test_handle_array_wrapper_helper(&x); struct WrappedStruct *p = (struct WrappedStruct*) x.y; // expected-warning{{Casting a non-structure type to a structure type and accessing a field can lead to memory access errors or data corruption.}} return p->z; // no-warning } |