[PM] Make the function pass manager more regular.
authorChandler Carruth <chandlerc@gmail.com>
Wed, 20 Nov 2013 04:39:16 +0000 (04:39 +0000)
committerChandler Carruth <chandlerc@gmail.com>
Wed, 20 Nov 2013 04:39:16 +0000 (04:39 +0000)
commitd14894059fa4bbf67ae74caa64fa5f5a23272d63
tree9e015381b517c86cec6ccc19312ef5254b75d821
parentd23c759c0fa10b7fb244b4d2911b49b95138a7e1
[PM] Make the function pass manager more regular.

The FunctionPassManager is now itself a function pass. When run over
a function, it runs all N of its passes over that function. This is the
1:N mapping in the pass dimension only. This allows it to be used in
either a ModulePassManager or potentially some other manager that
works on IR units which are supersets of Functions.

This commit also adds the obvious adaptor to map from a module pass to
a function pass, running the function pass across every function in the
module.

The test has been updated to use this new pattern.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@195192 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/IR/PassManager.h
lib/IR/PassManager.cpp
unittests/IR/PassManagerTest.cpp