r369616 - [analyzer] Enable control dependency condition tracking by default

Kristóf Umann via cfe-commits cfe-commits at lists.llvm.org
Fri Aug 23 11:41:21 PDT 2019


Totally possible, thanks for letting me know! There should be plenty of
room for caching, because I do calculate control dependencies in an excess
for the same CFG, and the retrieval of a basic block from an ExplodedNode
is anything but efficient, though I honestly didnt expect a performance hit
that drastic (and havent experienced it either).

I'll roll out some fixes during the weekend. If the problem persists
after that, I'd be happy to dig deeper.


On Fri, 23 Aug 2019, 20:33 Alexander Kornienko, <alexfh at google.com> wrote:

> I suspect that this patch makes analysis much slower in certain cases. For
> example, the clang/test/Analysis/pr37802.cpp test has become ~5 times
> slower in some configurations in our environment. This happened somewhere
> between r369520 and r369679, and your series of patches seems most
> suspicious :). Is it expected? Can it be improved?
>
> On Thu, Aug 22, 2019 at 5:07 AM Kristof Umann via cfe-commits <
> cfe-commits at lists.llvm.org> wrote:
>
>> Author: szelethus
>> Date: Wed Aug 21 20:08:48 2019
>> New Revision: 369616
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=369616&view=rev
>> Log:
>> [analyzer] Enable control dependency condition tracking by default
>>
>> This patch concludes my GSoC'19 project by enabling track-conditions by
>> default.
>>
>> Differential Revision: https://reviews.llvm.org/D66381
>>
>> Modified:
>>     cfe/trunk/include/clang/StaticAnalyzer/Core/AnalyzerOptions.def
>>     cfe/trunk/test/Analysis/analyzer-config.c
>>     cfe/trunk/test/Analysis/diagnostics/no-store-func-path-notes.m
>>     cfe/trunk/test/Analysis/return-value-guaranteed.cpp
>>     cfe/trunk/test/Analysis/track-control-dependency-conditions.cpp
>>
>> Modified: cfe/trunk/include/clang/StaticAnalyzer/Core/AnalyzerOptions.def
>> URL:
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/StaticAnalyzer/Core/AnalyzerOptions.def?rev=369616&r1=369615&r2=369616&view=diff
>>
>> ==============================================================================
>> --- cfe/trunk/include/clang/StaticAnalyzer/Core/AnalyzerOptions.def
>> (original)
>> +++ cfe/trunk/include/clang/StaticAnalyzer/Core/AnalyzerOptions.def Wed
>> Aug 21 20:08:48 2019
>> @@ -294,7 +294,7 @@ ANALYZER_OPTION(bool, DisplayCTUProgress
>>  ANALYZER_OPTION(bool, ShouldTrackConditions, "track-conditions",
>>                  "Whether to track conditions that are a control
>> dependency of "
>>                  "an already tracked variable.",
>> -                false)
>> +                true)
>>
>>  ANALYZER_OPTION(bool, ShouldTrackConditionsDebug,
>> "track-conditions-debug",
>>                  "Whether to place an event at each tracked condition.",
>>
>> Modified: cfe/trunk/test/Analysis/analyzer-config.c
>> URL:
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/analyzer-config.c?rev=369616&r1=369615&r2=369616&view=diff
>>
>> ==============================================================================
>> --- cfe/trunk/test/Analysis/analyzer-config.c (original)
>> +++ cfe/trunk/test/Analysis/analyzer-config.c Wed Aug 21 20:08:48 2019
>> @@ -87,7 +87,7 @@
>>  // CHECK-NEXT: suppress-c++-stdlib = true
>>  // CHECK-NEXT: suppress-inlined-defensive-checks = true
>>  // CHECK-NEXT: suppress-null-return-paths = true
>> -// CHECK-NEXT: track-conditions = false
>> +// CHECK-NEXT: track-conditions = true
>>  // CHECK-NEXT: track-conditions-debug = false
>>  // CHECK-NEXT: unix.DynamicMemoryModeling:Optimistic = false
>>  // CHECK-NEXT: unroll-loops = false
>>
>> Modified: cfe/trunk/test/Analysis/diagnostics/no-store-func-path-notes.m
>> URL:
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/diagnostics/no-store-func-path-notes.m?rev=369616&r1=369615&r2=369616&view=diff
>>
>> ==============================================================================
>> --- cfe/trunk/test/Analysis/diagnostics/no-store-func-path-notes.m
>> (original)
>> +++ cfe/trunk/test/Analysis/diagnostics/no-store-func-path-notes.m Wed
>> Aug 21 20:08:48 2019
>> @@ -16,6 +16,7 @@ extern int coin();
>>      return 0;
>>    }
>>    return 1; // expected-note{{Returning without writing to '*var'}}
>> +  // expected-note at -1{{Returning the value 1, which participates in a
>> condition later}}
>>  }
>>  @end
>>
>>
>> Modified: cfe/trunk/test/Analysis/return-value-guaranteed.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/return-value-guaranteed.cpp?rev=369616&r1=369615&r2=369616&view=diff
>>
>> ==============================================================================
>> --- cfe/trunk/test/Analysis/return-value-guaranteed.cpp (original)
>> +++ cfe/trunk/test/Analysis/return-value-guaranteed.cpp Wed Aug 21
>> 20:08:48 2019
>> @@ -24,6 +24,7 @@ bool parseFoo(Foo &F) {
>>    // class-note at -1 {{The value 0 is assigned to 'F.Field'}}
>>    return !MCAsmParser::Error();
>>    // class-note at -1 {{'MCAsmParser::Error' returns true}}
>> +  // class-note at -2 {{Returning zero, which participates in a condition
>> later}}
>>  }
>>
>>  bool parseFile() {
>> @@ -57,6 +58,7 @@ namespace test_break {
>>  struct MCAsmParser {
>>    static bool Error() {
>>      return false; // class-note {{'MCAsmParser::Error' returns false}}
>> +    // class-note at -1 {{Returning zero, which participates in a
>> condition later}}
>>    }
>>  };
>>
>> @@ -72,6 +74,7 @@ bool parseFoo(Foo &F) {
>>    return MCAsmParser::Error();
>>    // class-note at -1 {{Calling 'MCAsmParser::Error'}}
>>    // class-note at -2 {{Returning from 'MCAsmParser::Error'}}
>> +  // class-note at -3 {{Returning zero, which participates in a condition
>> later}}
>>  }
>>
>>  bool parseFile() {
>>
>> Modified: cfe/trunk/test/Analysis/track-control-dependency-conditions.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/track-control-dependency-conditions.cpp?rev=369616&r1=369615&r2=369616&view=diff
>>
>> ==============================================================================
>> --- cfe/trunk/test/Analysis/track-control-dependency-conditions.cpp
>> (original)
>> +++ cfe/trunk/test/Analysis/track-control-dependency-conditions.cpp Wed
>> Aug 21 20:08:48 2019
>> @@ -6,6 +6,7 @@
>>
>>  // RUN: not %clang_analyze_cc1 -verify %s \
>>  // RUN:   -analyzer-checker=core \
>> +// RUN:   -analyzer-config track-conditions=false \
>>  // RUN:   -analyzer-config track-conditions-debug=true \
>>  // RUN:   2>&1 | FileCheck %s -check-prefix=CHECK-INVALID-DEBUG
>>
>> @@ -22,6 +23,7 @@
>>
>>  // RUN: %clang_analyze_cc1 %s -verify \
>>  // RUN:   -analyzer-output=text \
>> +// RUN:   -analyzer-config track-conditions=false \
>>  // RUN:   -analyzer-checker=core
>>
>>  namespace example_1 {
>>
>>
>> _______________________________________________
>> cfe-commits mailing list
>> cfe-commits at lists.llvm.org
>> https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20190823/740e2db7/attachment.html>


More information about the cfe-commits mailing list