diff options
author | Misha Brukman <brukman+llvm@gmail.com> | 2003-11-07 18:56:32 +0000 |
---|---|---|
committer | Misha Brukman <brukman+llvm@gmail.com> | 2003-11-07 18:56:32 +0000 |
commit | 12a3f843ffaa34d22ddf4857c9047da4f693afec (patch) | |
tree | 3333c4792bbd611302b6cbce06525c765dda45ee | |
parent | 3c29911bf3bc721062e58ddfca5fc1169a2f4e79 (diff) |
Added ability to register FunctionPasses as optimizations, with
TargetMachine-accepting constructors (thanks to Chris).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9781 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/llvm/PassSupport.h | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/include/llvm/PassSupport.h b/include/llvm/PassSupport.h index 78798e91db..226ee29357 100644 --- a/include/llvm/PassSupport.h +++ b/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 |