diff options
author | Chris Lattner <sabre@nondot.org> | 2002-04-28 20:46:05 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2002-04-28 20:46:05 +0000 |
commit | d30efaf56ed1e374240b4c2fe2ea7054cbd7cb52 (patch) | |
tree | d43d3f722d986d153996542d828d9afbb3aa7972 /include/llvm/PassManager.h | |
parent | 3adc069c8ba2bfeec567693565f60ee116298cdf (diff) |
* Add a stub to FunctionPass so that subclasses can declare that they do not
modify the CFG. It currently does nothing, but will in the future.
* Changes to make the public PassManager.h be MUCH smaller, and devoid of
implementation details. Now PassManager is just a Pimpl class that wraps
PassManagerT<Module>, but lib/VMCore/Pass.cpp is now the only class that
has to #include PassManagerT.h
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2383 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/PassManager.h')
-rw-r--r-- | include/llvm/PassManager.h | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/include/llvm/PassManager.h b/include/llvm/PassManager.h new file mode 100644 index 00000000000..644e30b50c2 --- /dev/null +++ b/include/llvm/PassManager.h @@ -0,0 +1,36 @@ +//===- llvm/PassManager.h - Container for Passes -----------------*- C++ -*--=// +// +// This file defines the PassManager class. This class is used to hold, +// maintain, and optimize execution of Pass's. The PassManager class ensures +// that analysis results are available before a pass runs, and that Pass's are +// destroyed when the PassManager is destroyed. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_PASSMANAGER_H +#define LLVM_PASSMANAGER_H + +class Pass; +class Module; +template<class UnitType> class PassManagerT; + +class PassManager { + PassManagerT<Module> *PM; // This is a straightforward Pimpl class +public: + PassManager(); + ~PassManager(); + + // add - Add a pass to the queue of passes to run. This passes ownership of + // the Pass to the PassManager. When the PassManager is destroyed, the pass + // will be destroyed as well, so there is no need to delete the pass. This + // implies that all passes MUST be allocated with 'new'. + // + void add(Pass *P); + + // run - Execute all of the passes scheduled for execution. Keep track of + // whether any of the functions modifies the program, and if so, return true. + // + bool run(Module *M); +}; + +#endif |