Added ability to register FunctionPasses as optimizations, with
authorMisha Brukman <brukman+llvm@gmail.com>
Fri, 7 Nov 2003 18:56:32 +0000 (18:56 +0000)
committerMisha Brukman <brukman+llvm@gmail.com>
Fri, 7 Nov 2003 18:56:32 +0000 (18:56 +0000)
TargetMachine-accepting constructors (thanks to Chris).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9781 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/PassSupport.h

index 78798e91db3ed93595fb5a4be64448ecbe8af99f..226ee29357a0e0128aa13a4bb6b10fb33bb11b06 100644 (file)
@@ -219,6 +219,15 @@ struct RegisterOpt : public RegisterPassBase {
     if (CFGOnly) setOnlyUsesCFG();
   }
 
+  /// Register FunctionPass using default constructor explicitly...
+  ///
+  RegisterOpt(const char *PassArg, const char *Name, FunctionPass *(*ctor)(),
+              bool CFGOnly = false) {
+    registerPass(new PassInfo(Name, PassArg, typeid(PassName),
+                              PassInfo::Optimization, (Pass*(*)())ctor));
+    if (CFGOnly) setOnlyUsesCFG();
+  }
+
   /// Register Pass using TargetMachine constructor...
   ///
   RegisterOpt(const char *PassArg, const char *Name,
@@ -227,6 +236,17 @@ struct RegisterOpt : public RegisterPassBase {
                               PassInfo::Optimization, 0, targetctor));
     if (CFGOnly) setOnlyUsesCFG();
   }
+
+  /// Register FunctionPass using TargetMachine constructor...
+  ///
+  RegisterOpt(const char *PassArg, const char *Name,
+              FunctionPass *(*targetctor)(TargetMachine &),
+              bool CFGOnly = false) {
+    registerPass(new PassInfo(Name, PassArg, typeid(PassName),
+                              PassInfo::Optimization, 0,
+                              (Pass*(*)(TargetMachine&))targetctor));
+    if (CFGOnly) setOnlyUsesCFG();
+  }
 };
 
 /// RegisterAnalysis - Register something that is to show up in Analysis, this