As of r151930, you can use -analyzer-inline-stack-depth=0 or 
-analyzer-inline-max-function-size=0 as a hack to disable it for testing 
purposes. However, all the committed code should work with inlining turned on.

I'll commit a proper solution soon. My understanding is that this is not 
blocking anyone.

Cheers,
Anna.
On Mar 2, 2012, at 2:20 PM, Tom Care wrote:

> Perhaps for the moment we could have --analyzer-disable-inlining?
> 
> Tom
> 
> On 02/03/2012, at 6:33 PM, Anna Zaks wrote:
> 
>> Jordy, 
>> 
>> Currently, there is none. This commit was primarily done so that we could 
>> better test inlining asap. We are still deciding what command line options 
>> should be provided to better regulate this. We are currently experimenting 
>> with different ways of  tuning inlining, which might have some influence on 
>> the decision..
>> 
>> One possibility would be to have the following low level options:
>> 
>> -analyzer-ipa=[none | inline | future_work_goes_here]
>> 
>> Then, all the inlining specific options would be enabled only when inlining 
>> is selected:
>> -analyzer-inline-stack-depth=#
>> -analyzer-inline-max-function-size=#
>> ..
>> 
>> These could be further mapped to high level analyzes depth settings given to 
>> the user (of scan-build):
>> -analyzes-depth=[fast | normal | deep]
>> 
>> Suggestions are welcome,
>> Anna.
>> On Mar 2, 2012, at 1:22 AM, Jordy Rose wrote:
>> 
>>> How do you turn /off/ inlining? Where does Opts.InlineCall get set to 0?
>>> 
>>> Jordy
>>> 
>>> 
>>> On Mar 2, 2012, at 5:37, Anna Zaks wrote:
>>> 
>>>> Author: zaks
>>>> Date: Thu Mar  1 16:37:46 2012
>>>> New Revision: 151848
>>>> 
>>>> URL: http://llvm.org/viewvc/llvm-project?rev=151848&view=rev
>>>> Log:
>>>> [analyzer] Turn inlining on by default for better testing exposure.
>>>> 
>>>> Fix a test, which was most likely an unintended recursive call.
>>>> 
>>>> Modified:
>>>> cfe/trunk/include/clang/Frontend/AnalyzerOptions.h
>>>> cfe/trunk/lib/Driver/Tools.cpp
>>>> cfe/trunk/lib/Frontend/CompilerInvocation.cpp
>>>> cfe/trunk/test/Analysis/misc-ps-region-store.m
>>>> 
>>>> Modified: cfe/trunk/include/clang/Frontend/AnalyzerOptions.h
>>>> URL: 
>>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Frontend/AnalyzerOptions.h?rev=151848&r1=151847&r2=151848&view=diff
>>>> ==============================================================================
>>>> --- cfe/trunk/include/clang/Frontend/AnalyzerOptions.h (original)
>>>> +++ cfe/trunk/include/clang/Frontend/AnalyzerOptions.h Thu Mar  1 16:37:46 
>>>> 2012
>>>> @@ -100,7 +100,7 @@
>>>>  TrimGraph = 0;
>>>>  VisualizeEGDot = 0;
>>>>  VisualizeEGUbi = 0;
>>>> -    InlineCall = 0;
>>>> +    InlineCall = 1;
>>>>  UnoptimizedCFG = 0;
>>>>  CFGAddImplicitDtors = 0;
>>>>  CFGAddInitializers = 0;
>>>> 
>>>> Modified: cfe/trunk/lib/Driver/Tools.cpp
>>>> URL: 
>>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=151848&r1=151847&r2=151848&view=diff
>>>> ==============================================================================
>>>> --- cfe/trunk/lib/Driver/Tools.cpp (original)
>>>> +++ cfe/trunk/lib/Driver/Tools.cpp Thu Mar  1 16:37:46 2012
>>>> @@ -1339,6 +1339,8 @@
>>>> 
>>>>  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");
>>>> 
>>>> Modified: cfe/trunk/lib/Frontend/CompilerInvocation.cpp
>>>> URL: 
>>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/CompilerInvocation.cpp?rev=151848&r1=151847&r2=151848&view=diff
>>>> ==============================================================================
>>>> --- cfe/trunk/lib/Frontend/CompilerInvocation.cpp (original)
>>>> +++ cfe/trunk/lib/Frontend/CompilerInvocation.cpp Thu Mar  1 16:37:46 2012
>>>> @@ -1044,7 +1044,8 @@
>>>> 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();
>>>> 
>>>> Modified: cfe/trunk/test/Analysis/misc-ps-region-store.m
>>>> URL: 
>>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/misc-ps-region-store.m?rev=151848&r1=151847&r2=151848&view=diff
>>>> ==============================================================================
>>>> --- cfe/trunk/test/Analysis/misc-ps-region-store.m (original)
>>>> +++ cfe/trunk/test/Analysis/misc-ps-region-store.m Thu Mar  1 16:37:46 2012
>>>> @@ -294,9 +294,11 @@
>>>> 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
>>>> }
>>>> 
>>>> 
>>>> _______________________________________________
>>>> cfe-commits mailing list
>>>> [email protected]
>>>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>>> 
>> 
>> _______________________________________________
>> cfe-commits mailing list
>> [email protected]
>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>> 
> 
> 

_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to