#include "llvm/Support/PrettyStackTrace.h"
namespace llvm {
+ class Module;
class Pass;
+ class StringRef;
class Value;
- class Module;
/// FunctionPassManager and PassManager, two top level managers, serve
/// as the public interface of pass manager infrastructure.
Value *V;
Module *M;
public:
- PassManagerPrettyStackEntry(Pass *p)
+ explicit PassManagerPrettyStackEntry(Pass *p)
: P(p), V(0), M(0) {} // When P is releaseMemory'd.
PassManagerPrettyStackEntry(Pass *p, Value &v)
: P(p), V(&v), M(0) {} // When P is run on V
void removeNotPreservedAnalysis(Pass *P);
/// Remove dead passes
- void removeDeadPasses(Pass *P, const char *Msg, enum PassDebuggingString);
+ void removeDeadPasses(Pass *P, const StringRef &Msg,
+ enum PassDebuggingString);
/// Add pass P into the PassVector. Update
/// AvailableAnalysis appropriately if ProcessAnalysis is true.
void dumpLastUses(Pass *P, unsigned Offset) const;
void dumpPassArguments() const;
void dumpPassInfo(Pass *P, enum PassDebuggingString S1,
- enum PassDebuggingString S2, const char *Msg);
+ enum PassDebuggingString S2, const StringRef &Msg);
void dumpRequiredSet(const Pass *P) const;
void dumpPreservedSet(const Pass *P) const;
std::map<AnalysisID, Pass *> *InheritedAnalysis[PMT_Last];
private:
- void dumpAnalysisUsage(const char *Msg, const Pass *P,
+ void dumpAnalysisUsage(const StringRef &Msg, const Pass *P,
const AnalysisUsage::VectorType &Set) const;
// Set of available Analysis. This information is used while scheduling
/// whether any of the passes modifies the module, and if so, return true.
bool runOnFunction(Function &F);
bool runOnModule(Module &M);
+
+ /// cleanup - After running all passes, clean up pass manager cache.
+ void cleanup();
/// doInitialization - Run all of the initializers for the function passes.
///
}
};
-}
-
extern void StartPassTimer(llvm::Pass *);
extern void StopPassTimer(llvm::Pass *);
+}
+
#endif