aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/CodeGen/ModuleBuilder.cpp
diff options
context:
space:
mode:
authorJordan Rose <jordan_rose@apple.com>2013-06-03 23:00:00 +0000
committerJordan Rose <jordan_rose@apple.com>2013-06-03 23:00:00 +0000
commit8c54b44fb3cb5c0e252ddd3ba7136a916f6ed3bf (patch)
tree2252ea542b26a35dac8a9ca38d204cc860823e2f /clang/lib/CodeGen/ModuleBuilder.cpp
parentb60b844265b7ed5739c8062f409db59ba1233b85 (diff)
downloadllvm-8c54b44fb3cb5c0e252ddd3ba7136a916f6ed3bf.zip
llvm-8c54b44fb3cb5c0e252ddd3ba7136a916f6ed3bf.tar.gz
llvm-8c54b44fb3cb5c0e252ddd3ba7136a916f6ed3bf.tar.bz2
[analyzer; new edges] Eliminate "cycle edges" for a single subexpression.
Generating context arrows can result in quite a few arrows surrounding a relatively simple expression, often containing only a single path note. | 1 +--2---+ v/ v auto m = new m // 3 (the path note) |\ | 5 +--4---+ v Note also that 5 and 1 are two ends of the "same" arrow, i.e. they go from event to event. 3 is not an arrow but the path note itself. Now, if we see a pair of edges like 2 and 4---where 4 is the reverse of 2 and there is optionally a single path note between them---we will eliminate /both/ edges. Anything more complicated will be left as is (more edges involved, an inlined call, etc). The next commit will refine this to preserve the arrows in a larger expression, so that we don't lose all context. llvm-svn: 183162
Diffstat (limited to 'clang/lib/CodeGen/ModuleBuilder.cpp')
0 files changed, 0 insertions, 0 deletions