HomePhabricator

Improve 'tail' call marking in TRE. A bootstrap of clang goes from 375k calls…

Description

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.

Details

Committed
nicholasMay 5 2014, 4:59 PM
Parents
rL208016: Walk back commits for unused function parameters - they're still being
Branches
Unknown
Tags
Unknown

Event Timeline