diff --git a/llvm/include/llvm/PassSupport.h b/llvm/include/llvm/PassSupport.h index d3ba32f22efe1..57210b2488b53 100644 --- a/llvm/include/llvm/PassSupport.h +++ b/llvm/include/llvm/PassSupport.h @@ -35,20 +35,6 @@ namespace llvm { class Pass; -#define INITIALIZE_PASS(passName, arg, name, cfg, analysis) \ - static void *initialize##passName##PassOnce(PassRegistry &Registry) { \ - PassInfo *PI = new PassInfo( \ - name, arg, &passName::ID, \ - PassInfo::NormalCtor_t(callDefaultCtor), cfg, analysis); \ - Registry.registerPass(*PI, true); \ - return PI; \ - } \ - static llvm::once_flag Initialize##passName##PassFlag; \ - void llvm::initialize##passName##Pass(PassRegistry &Registry) { \ - llvm::call_once(Initialize##passName##PassFlag, \ - initialize##passName##PassOnce, std::ref(Registry)); \ - } - #define INITIALIZE_PASS_BEGIN(passName, arg, name, cfg, analysis) \ static void *initialize##passName##PassOnce(PassRegistry &Registry) { @@ -67,15 +53,18 @@ class Pass; initialize##passName##PassOnce, std::ref(Registry)); \ } -#define INITIALIZE_PASS_WITH_OPTIONS(PassName, Arg, Name, Cfg, Analysis) \ - INITIALIZE_PASS_BEGIN(PassName, Arg, Name, Cfg, Analysis) \ - PassName::registerOptions(); \ - INITIALIZE_PASS_END(PassName, Arg, Name, Cfg, Analysis) +#define INITIALIZE_PASS(passName, arg, name, cfg, analysis) \ + INITIALIZE_PASS_BEGIN(passName, arg, name, cfg, analysis) \ + INITIALIZE_PASS_END(passName, arg, name, cfg, analysis) #define INITIALIZE_PASS_WITH_OPTIONS_BEGIN(PassName, Arg, Name, Cfg, Analysis) \ INITIALIZE_PASS_BEGIN(PassName, Arg, Name, Cfg, Analysis) \ PassName::registerOptions(); +#define INITIALIZE_PASS_WITH_OPTIONS(PassName, Arg, Name, Cfg, Analysis) \ + INITIALIZE_PASS_WITH_OPTIONS_BEGIN(PassName, Arg, Name, Cfg, Analysis) \ + INITIALIZE_PASS_END(PassName, Arg, Name, Cfg, Analysis) + template < class PassName, std::enable_if_t{}, bool> = true>