diff options
author | Jordan Rose <jordan_rose@apple.com> | 2013-06-03 22:59:48 +0000 |
---|---|---|
committer | Jordan Rose <jordan_rose@apple.com> | 2013-06-03 22:59:48 +0000 |
commit | b1db073dac02399a211d47ac5aa9276a37c97dc9 (patch) | |
tree | b1f13b1ca99b729acd867e0338dc9f8611d7ab6b /clang/lib/CodeGen/ModuleBuilder.cpp | |
parent | c892bb04ca196433520892aef95617d1e4373ce7 (diff) | |
download | llvm-b1db073dac02399a211d47ac5aa9276a37c97dc9.zip llvm-b1db073dac02399a211d47ac5aa9276a37c97dc9.tar.gz llvm-b1db073dac02399a211d47ac5aa9276a37c97dc9.tar.bz2 |
[analyzer; new edges] Include context for edges to sub-expressions.
The current edge-generation algorithm sometimes creates edges from a
top-level statement A to a sub-expression B.1 that's not at the start of B.
This creates a "swoosh" effect where the arrow is drawn on top of the
text at the start of B. In these cases, the results are clearer if we see
an edge from A to B, then another one from B to B.1.
Admittedly, this does create a /lot/ of arrows, some of which merely hop
into a subexpression and then out again for a single note. The next commit
will eliminate these if the subexpression is simple enough.
This updates and reuses some of the infrastructure from the old edge-
generation algorithm to find the "enclosing statement" context for a
given expression. One change in particular marks the context of the
LHS or RHS of a logical binary operator (&&, ||) as the entire operator
expression, rather than the subexpression itself. This matches our behavior
for ?:, and allows us to handle nested context information.
<rdar://problem/13902816>
llvm-svn: 183159
Diffstat (limited to 'clang/lib/CodeGen/ModuleBuilder.cpp')
0 files changed, 0 insertions, 0 deletions