aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/CodeGen/ModuleBuilder.cpp
diff options
context:
space:
mode:
authorJordan Rose <jordan_rose@apple.com>2013-06-03 22:59:48 +0000
committerJordan Rose <jordan_rose@apple.com>2013-06-03 22:59:48 +0000
commitb1db073dac02399a211d47ac5aa9276a37c97dc9 (patch)
treeb1f13b1ca99b729acd867e0338dc9f8611d7ab6b /clang/lib/CodeGen/ModuleBuilder.cpp
parentc892bb04ca196433520892aef95617d1e4373ce7 (diff)
downloadllvm-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