aboutsummaryrefslogtreecommitdiff
path: root/lib/Frontend/Warnings.cpp
diff options
context:
space:
mode:
authorJordan Rose <jordan_rose@apple.com>2013-03-16 01:07:58 +0000
committerJordan Rose <jordan_rose@apple.com>2013-03-16 01:07:58 +0000
commit1efffab67364f5afcc25f5f5f77e0f7ba5d41055 (patch)
treebf81999a957c057f478e42ea2e2811c6d0a7eba9 /lib/Frontend/Warnings.cpp
parentc9963132736782d0c9178c744b3e2307cfb98a08 (diff)
[analyzer] Separate graph trimming from creating the single-path graph.
When we generate a path diagnostic for a bug report, we have to take the full ExplodedGraph and limit it down to a single path. We do this in two steps: "trimming", which limits the graph to all the paths that lead to this particular bug, and "creating the report graph", which finds the shortest path in the trimmed path to any error node. With BugReporterVisitor false positive suppression, this becomes more expensive: it's possible for some paths through the trimmed graph to be invalid (i.e. likely false positives) but others to be valid. Therefore we have to run the visitors over each path in the graph until we find one that is valid, or until we've ruled them all out. This can become quite expensive. This commit separates out graph trimming from creating the report graph, performing the first only once per bug equivalence class and the second once per bug report. It also cleans up that portion of the code by introducing some wrapper classes. This seems to recover most of the performance regression described in my last commit. <rdar://problem/13433687> git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177216 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Frontend/Warnings.cpp')
0 files changed, 0 insertions, 0 deletions