[llvm] r210641 - Create macro INITIALIZE_TM_PASS.
Eric Christopher
echristo at gmail.com
Fri Jun 13 14:26:27 PDT 2014
Ack. This is a terrible idea. (As there's a thread on it)
But I'm not sure what the current status is here, did this patch get reverted?
-eric
On Wed, Jun 11, 2014 at 12:04 AM, Jiangning Liu <jiangning.liu at arm.com> wrote:
> Author: jiangning
> Date: Wed Jun 11 02:04:37 2014
> New Revision: 210641
>
> URL: http://llvm.org/viewvc/llvm-project?rev=210641&view=rev
> Log:
> Create macro INITIALIZE_TM_PASS.
>
> Pass initialization requires to initialize TargetMachine for back-end
> specific passes. This commit creates a new macro INITIALIZE_TM_PASS to
> simplify this kind of initialization.
>
> Modified:
> llvm/trunk/include/llvm/PassSupport.h
> llvm/trunk/lib/CodeGen/AtomicExpandLoadLinkedPass.cpp
> llvm/trunk/lib/CodeGen/CodeGenPrepare.cpp
> llvm/trunk/lib/Transforms/Scalar/GlobalMerge.cpp
>
> Modified: llvm/trunk/include/llvm/PassSupport.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/PassSupport.h?rev=210641&r1=210640&r2=210641&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/PassSupport.h (original)
> +++ llvm/trunk/include/llvm/PassSupport.h Wed Jun 11 02:04:37 2014
> @@ -166,6 +166,18 @@ private:
> } \
> TsanHappensAfter(&initialized);
>
> +#define INITIALIZE_TM_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< passName >), cfg, analysis, \
> + PassInfo::TargetMachineCtor_t(callTargetMachineCtor< passName >)); \
> + Registry.registerPass(*PI, true); \
> + return PI; \
> + } \
> + void llvm::initialize##passName##Pass(PassRegistry &Registry) { \
> + CALL_ONCE_INITIALIZATION(initialize##passName##PassOnce) \
> + }
> +
> #define INITIALIZE_PASS(passName, arg, name, cfg, analysis) \
> static void* initialize##passName##PassOnce(PassRegistry &Registry) { \
> PassInfo *PI = new PassInfo(name, arg, & passName ::ID, \
>
> Modified: llvm/trunk/lib/CodeGen/AtomicExpandLoadLinkedPass.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AtomicExpandLoadLinkedPass.cpp?rev=210641&r1=210640&r2=210641&view=diff
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/AtomicExpandLoadLinkedPass.cpp (original)
> +++ llvm/trunk/lib/CodeGen/AtomicExpandLoadLinkedPass.cpp Wed Jun 11 02:04:37 2014
> @@ -50,22 +50,9 @@ namespace {
>
> char AtomicExpandLoadLinked::ID = 0;
> char &llvm::AtomicExpandLoadLinkedID = AtomicExpandLoadLinked::ID;
> -
> -static void *initializeAtomicExpandLoadLinkedPassOnce(PassRegistry &Registry) {
> - PassInfo *PI = new PassInfo(
> - "Expand Atomic calls in terms of load-linked & store-conditional",
> - "atomic-ll-sc", &AtomicExpandLoadLinked::ID,
> - PassInfo::NormalCtor_t(callDefaultCtor<AtomicExpandLoadLinked>), false,
> - false, PassInfo::TargetMachineCtor_t(
> - callTargetMachineCtor<AtomicExpandLoadLinked>));
> - Registry.registerPass(*PI, true);
> - return PI;
> -}
> -
> -void llvm::initializeAtomicExpandLoadLinkedPass(PassRegistry &Registry) {
> - CALL_ONCE_INITIALIZATION(initializeAtomicExpandLoadLinkedPassOnce)
> -}
> -
> +INITIALIZE_TM_PASS(AtomicExpandLoadLinked, "atomic-ll-sc",
> + "Expand Atomic calls in terms of load-linked & store-conditional",
> + false, false)
>
> FunctionPass *llvm::createAtomicExpandLoadLinkedPass(const TargetMachine *TM) {
> return new AtomicExpandLoadLinked(TM);
>
> Modified: llvm/trunk/lib/CodeGen/CodeGenPrepare.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/CodeGenPrepare.cpp?rev=210641&r1=210640&r2=210641&view=diff
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/CodeGenPrepare.cpp (original)
> +++ llvm/trunk/lib/CodeGen/CodeGenPrepare.cpp Wed Jun 11 02:04:37 2014
> @@ -151,19 +151,8 @@ typedef DenseMap<Instruction *, Type *>
> }
>
> char CodeGenPrepare::ID = 0;
> -static void *initializeCodeGenPreparePassOnce(PassRegistry &Registry) {
> - initializeTargetLibraryInfoPass(Registry);
> - PassInfo *PI = new PassInfo(
> - "Optimize for code generation", "codegenprepare", &CodeGenPrepare::ID,
> - PassInfo::NormalCtor_t(callDefaultCtor<CodeGenPrepare>), false, false,
> - PassInfo::TargetMachineCtor_t(callTargetMachineCtor<CodeGenPrepare>));
> - Registry.registerPass(*PI, true);
> - return PI;
> -}
> -
> -void llvm::initializeCodeGenPreparePass(PassRegistry &Registry) {
> - CALL_ONCE_INITIALIZATION(initializeCodeGenPreparePassOnce)
> -}
> +INITIALIZE_TM_PASS(CodeGenPrepare, "codegenprepare",
> + "Optimize for code generation", false, false)
>
> FunctionPass *llvm::createCodeGenPreparePass(const TargetMachine *TM) {
> return new CodeGenPrepare(TM);
>
> Modified: llvm/trunk/lib/Transforms/Scalar/GlobalMerge.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/GlobalMerge.cpp?rev=210641&r1=210640&r2=210641&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Transforms/Scalar/GlobalMerge.cpp (original)
> +++ llvm/trunk/lib/Transforms/Scalar/GlobalMerge.cpp Wed Jun 11 02:04:37 2014
> @@ -136,19 +136,8 @@ namespace {
> } // end anonymous namespace
>
> char GlobalMerge::ID = 0;
> -
> -static void *initializeGlobalMergePassOnce(PassRegistry &Registry) {
> - PassInfo *PI = new PassInfo(
> - "Merge global variables", "global-merge", &GlobalMerge::ID,
> - PassInfo::NormalCtor_t(callDefaultCtor<GlobalMerge>), false, false,
> - PassInfo::TargetMachineCtor_t(callTargetMachineCtor<GlobalMerge>));
> - Registry.registerPass(*PI, true);
> - return PI;
> -}
> -
> -void llvm::initializeGlobalMergePass(PassRegistry &Registry) {
> - CALL_ONCE_INITIALIZATION(initializeGlobalMergePassOnce)
> -}
> +INITIALIZE_TM_PASS(GlobalMerge, "global-merge", "Merge global variables",
> + false, false)
>
> bool GlobalMerge::doMerge(SmallVectorImpl<GlobalVariable*> &Globals,
> Module &M, bool isConst, unsigned AddrSpace) const {
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list