I had a look and i don't observe any regressions here. Both this test alone and the whole test suite in general take as much time as on r369520 for me. Additionally, -analyzer-stats doesn't indicate that any significant amount of time was spent in bug report post-processing.

On 8/23/19 11:41 AM, Kristóf Umann wrote:
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, <ale...@google.com <mailto:ale...@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@lists.llvm.org <mailto:cfe-commits@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@-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@-1 {{The value 0 is assigned to 'F.Field'}}
           return !MCAsmParser::Error();
           // class-note@-1 {{'MCAsmParser::Error' returns true}}
        +  // class-note@-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@-1 {{Returning zero, which participates in
        a condition later}}
           }
         };

        @@ -72,6 +74,7 @@ bool parseFoo(Foo &F) {
           return MCAsmParser::Error();
           // class-note@-1 {{Calling 'MCAsmParser::Error'}}
           // class-note@-2 {{Returning from 'MCAsmParser::Error'}}
        +  // class-note@-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@lists.llvm.org <mailto:cfe-commits@lists.llvm.org>
        https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to