[multiversion] Implement the old pass manager's TTI wrapper pass in
authorChandler Carruth <chandlerc@gmail.com>
Sun, 1 Feb 2015 12:26:09 +0000 (12:26 +0000)
committerChandler Carruth <chandlerc@gmail.com>
Sun, 1 Feb 2015 12:26:09 +0000 (12:26 +0000)
commit276f40540766ad0cfadbf744e0eb58499f60238a
treec00af272c46f98cb5f9fbf5956484ea6f0c384f9
parentbaceda736e85ecd0e85127710ed2f91f139e07d5
[multiversion] Implement the old pass manager's TTI wrapper pass in
terms of the new pass manager's TargetIRAnalysis.

Yep, this is one of the nicer bits of the new pass manager's design.
Passes can in many cases operate in a vacuum and so we can just nest
things when convenient. This is particularly convenient here as I can
now consolidate all of the TargetMachine logic on this analysis.

The most important change here is that this pushes the function we need
TTI for all the way into the TargetMachine, and re-creates the TTI
object for each function rather than re-using it for each function.
We're now prepared to teach the targets to produce function-specific TTI
objects with specific subtargets cached, etc.

One piece of feedback I'd love here is whether its worth renaming any of
this stuff. None of the names really seem that awesome to me at this
point, but TargetTransformInfoWrapperPass is particularly ... odd.
TargetIRAnalysisWrapper might make more sense. I would want to do that
rename separately anyways, but let me know what you think.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227731 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/Analysis/TargetTransformInfo.h
lib/Analysis/TargetTransformInfo.cpp
lib/CodeGen/LLVMTargetMachine.cpp
lib/LTO/LTOCodeGenerator.cpp
lib/Target/TargetMachineC.cpp
tools/opt/opt.cpp