[PM] Lift the majority of the template boilerplate used to implement the
authorChandler Carruth <chandlerc@gmail.com>
Fri, 2 Jan 2015 23:16:59 +0000 (23:16 +0000)
committerChandler Carruth <chandlerc@gmail.com>
Fri, 2 Jan 2015 23:16:59 +0000 (23:16 +0000)
commit2ad2a8b943bf69794eab0c38ca86451ed939ae9a
treeeac7e02a157c12156803ecc0e39af02b4734d09c
parent5640ae48db6a254bd99b6b9c052a7bf5ad610402
[PM] Lift the majority of the template boilerplate used to implement the
concept-based polymorphism in the pass manager to a separate header.

I got feedback from someone reading the code and trying to use it that
this was really making it hard to dive in and start using these APIs and
that makes a lot of sense.

This only requires a moderate amount of gymnastics to separate in this
way, namely rinsing the PreservedAnalysis object through a template
argument in a few places so that it is dependent and we only examine it
on instantiation.

llvm-svn: 225094
llvm/include/llvm/IR/PassManager.h
llvm/include/llvm/IR/PassManagerInternal.h [new file with mode: 0644]