[llvm-dev] [GSoC 2016] Capture Tracking Improvements - Mid term report
Scott Egerton via llvm-dev
llvm-dev at lists.llvm.org
Fri Jun 17 11:54:42 PDT 2016
This is a more detailed overview of my progress than the weekly reports,
which can also be found on the mailing list.
Over the past two weeks I have been learning a lot more about capture
tracking. From this I was able to instrument the current implementation
in order to identify some of the false positives in it. I was hoping to
have more definitive results by now than what I currently have, but due
to some unforeseen issues with the output becoming scrambled I cannot
provide this just yet. I have now resolved this and plan to have some
more concrete results within the coming week.
The current algorithm for Capture tracking will look through the uses of
a pointer. If there are too many uses it will conservatively say that
the value is captured to avoid taking up too much compile time. If not
it will then determine whether or not the Value is captured in various
ways based on its opcode.
However there are some deficiencies with the current implementation.
Such as the false positives and the fact that it takes rather a lot of
compile time to run.
I am currently compiling a large piece of code with an instrumented
version of LLVM in order to identify false positives. I then plan to fix
all the identified false positives. After this is complete I will be be
moving onto adding the caching of results to the current design. This
will make it more efficient. If I complete this, I will work on making
the analysis more accurate in order to recognize object sub-graphs which
do not escape.
Please let me know if you have any suggestions.
More information about the llvm-dev