summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMisha Brukman <brukman+llvm@gmail.com>2003-11-07 18:56:32 +0000
committerMisha Brukman <brukman+llvm@gmail.com>2003-11-07 18:56:32 +0000
commitd3af61d88344db6b1f15fad7a8175dfa201310c3 (patch)
tree98f463be23f3cd795aac85f55c1120a621d42494
parent7120c837fba55cdac8425ea223d5ed47a2a13149 (diff)
downloadbcm5719-llvm-d3af61d88344db6b1f15fad7a8175dfa201310c3.tar.gz
bcm5719-llvm-d3af61d88344db6b1f15fad7a8175dfa201310c3.zip
Added ability to register FunctionPasses as optimizations, with
TargetMachine-accepting constructors (thanks to Chris). llvm-svn: 9781
-rw-r--r--llvm/include/llvm/PassSupport.h20
1 files changed, 20 insertions, 0 deletions
diff --git a/llvm/include/llvm/PassSupport.h b/llvm/include/llvm/PassSupport.h
index 78798e91db3..226ee29357a 100644
--- a/llvm/include/llvm/PassSupport.h
+++ b/llvm/include/llvm/PassSupport.h
@@ -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
OpenPOWER on IntegriCloud