[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