diff options
author | Jordan Rose <jordan_rose@apple.com> | 2013-06-03 23:00:00 +0000 |
---|---|---|
committer | Jordan Rose <jordan_rose@apple.com> | 2013-06-03 23:00:00 +0000 |
commit | 8c54b44fb3cb5c0e252ddd3ba7136a916f6ed3bf (patch) | |
tree | 2252ea542b26a35dac8a9ca38d204cc860823e2f /clang/lib/CodeGen/ModuleBuilder.cpp | |
parent | b60b844265b7ed5739c8062f409db59ba1233b85 (diff) | |
download | llvm-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