[PM] Create a separate library for high-level pass management code.
authorChandler Carruth <chandlerc@gmail.com>
Sat, 7 Mar 2015 09:02:36 +0000 (09:02 +0000)
committerChandler Carruth <chandlerc@gmail.com>
Sat, 7 Mar 2015 09:02:36 +0000 (09:02 +0000)
commit2349136630c38cc40e9cfba75b69b06e7ec6c5ed
tree7ce39ce530492d2baaf07ff012d13aef4b020bed
parent62ba058dea475a454a617295d3f63fb4a5f585b3
[PM] Create a separate library for high-level pass management code.

This will provide the analogous replacements for the PassManagerBuilder
and other code long term. This code is extracted from the opt tool
currently, and I plan to extend it as I build up support for using the
new pass manager in Clang and other places.

Mailing this out for review in part to let folks comment on the terrible names
here. A brief word about why I chose the names I did.

The library is called "Passes" to try and make it clear that it is a high-level
utility and where *all* of the passes come together and are registered in
a common library. I didn't want it to be *limited* to a registry though, the
registry is just one component.

The class is a "PassBuilder" but this name I'm less happy with. It doesn't
build passes in any traditional sense and isn't a Builder-style API at all. The
class is a PassRegisterer or PassAdder, but neither of those really make a lot
of sense. This class is responsible for constructing passes for registry in an
analysis manager or for population of a pass pipeline. If anyone has a better
name, I would love to hear it. The other candidate I looked at was
PassRegistrar, but that doesn't really fit either. There is no register of all
the passes in use, and so I think continuing the "registry" analog outside of
the registry of pass *names* and *types* is a mistake. The objects themselves
are just objects with the new pass manager.

Differential Revision: http://reviews.llvm.org/D8054

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@231556 91177308-0d34-0410-b5e6-96231b3b80d8
16 files changed:
include/llvm/Passes/PassBuilder.h [new file with mode: 0644]
lib/CMakeLists.txt
lib/LLVMBuild.txt
lib/Makefile
lib/Passes/CMakeLists.txt [new file with mode: 0644]
lib/Passes/LLVMBuild.txt [new file with mode: 0644]
lib/Passes/Makefile [new file with mode: 0644]
lib/Passes/PassBuilder.cpp [new file with mode: 0644]
lib/Passes/PassRegistry.def [new file with mode: 0644]
tools/opt/CMakeLists.txt
tools/opt/LLVMBuild.txt
tools/opt/Makefile
tools/opt/NewPMDriver.cpp
tools/opt/PassRegistry.def [deleted file]
tools/opt/Passes.cpp [deleted file]
tools/opt/Passes.h [deleted file]