aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/CodeGen/ObjectFilePCHContainerOperations.cpp
diff options
context:
space:
mode:
authorGabor Horvath <xazax.hun@gmail.com>2015-08-27 18:57:00 +0000
committerGabor Horvath <xazax.hun@gmail.com>2015-08-27 18:57:00 +0000
commite9984b28ef537dd51e56b45f0f1f645378223aae (patch)
treedf2c377fefcbd7bfb4dfc960b509747e9a3c419a /clang/lib/CodeGen/ObjectFilePCHContainerOperations.cpp
parent5eaa5a9d2617543322412b12a3c33f18381d29d7 (diff)
downloadllvm-e9984b28ef537dd51e56b45f0f1f645378223aae.zip
llvm-e9984b28ef537dd51e56b45f0f1f645378223aae.tar.gz
llvm-e9984b28ef537dd51e56b45f0f1f645378223aae.tar.bz2
[Static Analyzer] BugReporter.cpp:2869: Assertion failed: !RemainingNodes.empty() && "No error node found in the trimmed graph"
The assertion is caused by reusing a “filler” ExplodedNode as an error node. The “filler” nodes are only used for intermediate processing and are not essential for analyzer history, so they can be reclaimed when the ExplodedGraph is trimmed by the “collectNode” function. When a checker finds a bug, they generate a new transition in the ExplodedGraph. The analyzer will try to reuse the existing predecessor node. If it cannot, it creates a new ExplodedNode, which always has a tag to uniquely identify the creation site. The assertion is caused when the analyzer reuses a “filler” node. In the test case, some “filler” nodes were reused and then reclaimed later when the ExplodedGraph was trimmed. This caused an assertion because the node was needed to generate the report. The “filler” nodes should not be reused as error nodes. The patch adds a constraint to prevent this happening, which solves the problem and makes the test cases pass. Differential Revision: http://reviews.llvm.org/D11433 Patch by Ying Yi! llvm-svn: 246188
Diffstat (limited to 'clang/lib/CodeGen/ObjectFilePCHContainerOperations.cpp')
0 files changed, 0 insertions, 0 deletions