Plug TTI into the speculation logic, giving it a real cost interface
authorChandler Carruth <chandlerc@gmail.com>
Thu, 24 Jan 2013 12:39:29 +0000 (12:39 +0000)
committerChandler Carruth <chandlerc@gmail.com>
Thu, 24 Jan 2013 12:39:29 +0000 (12:39 +0000)
commit5f4519309fff8f388b76896ac3f53e5de0a12668
treefd245ea9b4cd85d2e2cd243e55a64e4e0db5bf1d
parent01bffaad03e2139524cb2a011a1a13d4e40d991d
Plug TTI into the speculation logic, giving it a real cost interface
that can be specialized by targets.

The goal here is not to be more aggressive, but to just be more accurate
with very obvious cases. There are instructions which are known to be
truly free and which were not being modeled as such in this code -- see
the regression test which is distilled from an inner loop of zlib.

Everywhere the TTI cost model is insufficiently conservative I've added
explicit checks with FIXME comments to go add proper modelling of these
cost factors.

If this causes regressions, the likely solution is to make TTI even more
conservative in its cost estimates, but test cases will help here.

llvm-svn: 173342
llvm/lib/Transforms/Utils/SimplifyCFG.cpp
llvm/test/Transforms/SimplifyCFG/SpeculativeExec.ll