diff options
author | Nick Lewycky <nicholas@mxc.ca> | 2014-05-05 23:59:03 +0000 |
---|---|---|
committer | Nick Lewycky <nicholas@mxc.ca> | 2014-05-05 23:59:03 +0000 |
commit | 5ef6bc88157c5ac04f072b268ccf94255fe46c72 (patch) | |
tree | 8bbcfd71718d49dfefb30c958f1868ae8e0e9d0a /llvm/lib/Transforms/IPO/PruneEH.cpp | |
parent | 4b33ec96d3420e237485441b7423663ee4e9ac76 (diff) | |
download | bcm5719-llvm-5ef6bc88157c5ac04f072b268ccf94255fe46c72.tar.gz bcm5719-llvm-5ef6bc88157c5ac04f072b268ccf94255fe46c72.zip |
Improve 'tail' call marking in TRE. A bootstrap of clang goes from 375k calls marked tail in the IR to 470k, however this improvement does not carry into an improvement of the call/jmp ratio on x86. The most common pattern is a tail call + br to a block with nothing but a 'ret'.
The number of tail call to loop conversions remains the same (1618 by my count).
The new algorithm does a local scan over the use-def chains to identify local "alloca-derived" values, as well as points where the alloca could escape. Then, a visit over the CFG marks blocks as being before or after the allocas have escaped, and annotates the calls accordingly.
llvm-svn: 208017
Diffstat (limited to 'llvm/lib/Transforms/IPO/PruneEH.cpp')
0 files changed, 0 insertions, 0 deletions