Convert the TargetTransformInfo from an immutable pass with dynamic
authorChandler Carruth <chandlerc@gmail.com>
Sat, 5 Jan 2013 11:43:11 +0000 (11:43 +0000)
committerChandler Carruth <chandlerc@gmail.com>
Sat, 5 Jan 2013 11:43:11 +0000 (11:43 +0000)
commit7bdf6b00e04c177f22133b5d4be10cb246cb1e76
tree7eca0d64d4d8fb0c6e2f2ddc40f549d6b75ef1f1
parentbe73c7b903647221fbcaae302d31e90f53583040
Convert the TargetTransformInfo from an immutable pass with dynamic
interfaces which could be extracted from it, and must be provided on
construction, to a chained analysis group.

The end goal here is that TTI works much like AA -- there is a baseline
"no-op" and target independent pass which is in the group, and each
target can expose a target-specific pass in the group. These passes will
naturally chain allowing each target-specific pass to delegate to the
generic pass as needed.

In particular, this will allow a much simpler interface for passes that
would like to use TTI -- they can have a hard dependency on TTI and it
will just be satisfied by the stub implementation when that is all that
is available.

This patch is a WIP however. In particular, the "stub" pass is actually
the one and only pass, and everything there is implemented by delegating
to the target-provided interfaces. As a consequence the tools still have
to explicitly construct the pass. Switching targets to provide custom
passes and sinking the stub behavior into the NoTTI pass is the next
step.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171621 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/InitializePasses.h
include/llvm/TargetTransformInfo.h
lib/IR/Core.cpp
lib/IR/TargetTransformInfo.cpp
lib/Target/Target.cpp
tools/llc/llc.cpp
tools/opt/opt.cpp