[llvm-branch-commits] [llvm-branch] r227328 - Merging r227294:

Hans Wennborg hans at hanshq.net
Wed Jan 28 09:35:19 PST 2015


Author: hans
Date: Wed Jan 28 11:35:18 2015
New Revision: 227328

URL: http://llvm.org/viewvc/llvm-project?rev=227328&view=rev
Log:
Merging r227294:
------------------------------------------------------------------------
r227294 | chandlerc | 2015-01-27 20:57:56 -0800 (Tue, 27 Jan 2015) | 23 lines

[LPM] Stop using the string based preservation API. It is an
abomination.

For starters, this API is incredibly slow. In order to lookup the name
of a pass it must take a memory fence to acquire a pointer to the
managed static pass registry, and then potentially acquire locks while
it consults this registry for information about what passes exist by
that name. This stops the world of LLVMs in your process no matter
how little they cared about the result.

To make this more joyful, you'll note that we are preserving many passes
which *do not exist* any more, or are not even analyses which one might
wish to have be preserved. This means we do all the work only to say
"nope" with no error to the user.

String-based APIs are a *bad idea*. String-based APIs that cannot
produce any meaningful error are an even worse idea. =/

I have a patch that simply removes this API completely, but I'm hesitant
to commit it as I don't really want to perniciously break out-of-tree
users of the old pass manager. I'd rather they just have to migrate to
the new one at some point. If others disagree and would like me to kill
it with fire, just say the word. =]
------------------------------------------------------------------------

Modified:
    llvm/branches/release_36/   (props changed)
    llvm/branches/release_36/lib/CodeGen/MachineFunctionPass.cpp
    llvm/branches/release_36/lib/Target/Hexagon/HexagonRemoveSZExtArgs.cpp
    llvm/branches/release_36/lib/Target/NVPTX/NVPTXAllocaHoisting.h
    llvm/branches/release_36/lib/Target/NVPTX/NVPTXLowerAggrCopies.h
    llvm/branches/release_36/lib/Transforms/Scalar/LoopInstSimplify.cpp
    llvm/branches/release_36/lib/Transforms/Utils/LowerSwitch.cpp
    llvm/branches/release_36/lib/Transforms/Utils/UnifyFunctionExitNodes.cpp

Propchange: llvm/branches/release_36/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Jan 28 11:35:18 2015
@@ -1,3 +1,3 @@
 /llvm/branches/Apple/Pertwee:110850,110961
 /llvm/branches/type-system-rewrite:133420-134817
-/llvm/trunk:155241,226023,226029,226044,226046,226048,226058,226075,226170-226171,226182,226473,226664,226708,226711,226755,227005,227260-227261
+/llvm/trunk:155241,226023,226029,226044,226046,226048,226058,226075,226170-226171,226182,226473,226664,226708,226711,226755,227005,227260-227261,227294

Modified: llvm/branches/release_36/lib/CodeGen/MachineFunctionPass.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/release_36/lib/CodeGen/MachineFunctionPass.cpp?rev=227328&r1=227327&r2=227328&view=diff
==============================================================================
--- llvm/branches/release_36/lib/CodeGen/MachineFunctionPass.cpp (original)
+++ llvm/branches/release_36/lib/CodeGen/MachineFunctionPass.cpp Wed Jan 28 11:35:18 2015
@@ -11,11 +11,19 @@
 //
 //===----------------------------------------------------------------------===//
 
-#include "llvm/IR/Function.h"
+#include "llvm/CodeGen/MachineFunctionPass.h"
 #include "llvm/Analysis/AliasAnalysis.h"
+#include "llvm/Analysis/DominanceFrontier.h"
+#include "llvm/Analysis/IVUsers.h"
+#include "llvm/Analysis/LoopInfo.h"
+#include "llvm/Analysis/LoopInfo.h"
+#include "llvm/Analysis/MemoryDependenceAnalysis.h"
+#include "llvm/Analysis/ScalarEvolution.h"
 #include "llvm/CodeGen/MachineFunctionAnalysis.h"
-#include "llvm/CodeGen/MachineFunctionPass.h"
 #include "llvm/CodeGen/Passes.h"
+#include "llvm/CodeGen/StackProtector.h"
+#include "llvm/IR/Dominators.h"
+#include "llvm/IR/Function.h"
 using namespace llvm;
 
 Pass *MachineFunctionPass::createPrinterPass(raw_ostream &O,
@@ -43,15 +51,13 @@ void MachineFunctionPass::getAnalysisUsa
   // because CodeGen overloads that to mean preserving the MachineBasicBlock
   // CFG in addition to the LLVM IR CFG.
   AU.addPreserved<AliasAnalysis>();
-  AU.addPreserved("scalar-evolution");
-  AU.addPreserved("iv-users");
-  AU.addPreserved("memdep");
-  AU.addPreserved("live-values");
-  AU.addPreserved("domtree");
-  AU.addPreserved("domfrontier");
-  AU.addPreserved("loops");
-  AU.addPreserved("lda");
-  AU.addPreserved("stack-protector");
+  AU.addPreserved<DominanceFrontier>();
+  AU.addPreserved<DominatorTreeWrapperPass>();
+  AU.addPreserved<IVUsers>();
+  AU.addPreserved<LoopInfo>();
+  AU.addPreserved<MemoryDependenceAnalysis>();
+  AU.addPreserved<ScalarEvolution>();
+  AU.addPreserved<StackProtector>();
 
   FunctionPass::getAnalysisUsage(AU);
 }

Modified: llvm/branches/release_36/lib/Target/Hexagon/HexagonRemoveSZExtArgs.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/release_36/lib/Target/Hexagon/HexagonRemoveSZExtArgs.cpp?rev=227328&r1=227327&r2=227328&view=diff
==============================================================================
--- llvm/branches/release_36/lib/Target/Hexagon/HexagonRemoveSZExtArgs.cpp (original)
+++ llvm/branches/release_36/lib/Target/Hexagon/HexagonRemoveSZExtArgs.cpp Wed Jan 28 11:35:18 2015
@@ -15,6 +15,7 @@
 #include "Hexagon.h"
 #include "HexagonTargetMachine.h"
 #include "llvm/CodeGen/MachineFunctionAnalysis.h"
+#include "llvm/CodeGen/StackProtector.h"
 #include "llvm/IR/Function.h"
 #include "llvm/IR/Instructions.h"
 #include "llvm/Pass.h"
@@ -42,7 +43,7 @@ namespace {
     void getAnalysisUsage(AnalysisUsage &AU) const override {
       AU.addRequired<MachineFunctionAnalysis>();
       AU.addPreserved<MachineFunctionAnalysis>();
-      AU.addPreserved("stack-protector");
+      AU.addPreserved<StackProtector>();
       FunctionPass::getAnalysisUsage(AU);
     }
   };

Modified: llvm/branches/release_36/lib/Target/NVPTX/NVPTXAllocaHoisting.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/release_36/lib/Target/NVPTX/NVPTXAllocaHoisting.h?rev=227328&r1=227327&r2=227328&view=diff
==============================================================================
--- llvm/branches/release_36/lib/Target/NVPTX/NVPTXAllocaHoisting.h (original)
+++ llvm/branches/release_36/lib/Target/NVPTX/NVPTXAllocaHoisting.h Wed Jan 28 11:35:18 2015
@@ -15,6 +15,7 @@
 #define LLVM_LIB_TARGET_NVPTX_NVPTXALLOCAHOISTING_H
 
 #include "llvm/CodeGen/MachineFunctionAnalysis.h"
+#include "llvm/CodeGen/StackProtector.h"
 #include "llvm/IR/DataLayout.h"
 #include "llvm/Pass.h"
 
@@ -32,8 +33,8 @@ public:
 
   void getAnalysisUsage(AnalysisUsage &AU) const override {
     AU.addRequired<DataLayoutPass>();
-    AU.addPreserved("stack-protector");
     AU.addPreserved<MachineFunctionAnalysis>();
+    AU.addPreserved<StackProtector>();
   }
 
   const char *getPassName() const override {

Modified: llvm/branches/release_36/lib/Target/NVPTX/NVPTXLowerAggrCopies.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/release_36/lib/Target/NVPTX/NVPTXLowerAggrCopies.h?rev=227328&r1=227327&r2=227328&view=diff
==============================================================================
--- llvm/branches/release_36/lib/Target/NVPTX/NVPTXLowerAggrCopies.h (original)
+++ llvm/branches/release_36/lib/Target/NVPTX/NVPTXLowerAggrCopies.h Wed Jan 28 11:35:18 2015
@@ -16,6 +16,7 @@
 #define LLVM_LIB_TARGET_NVPTX_NVPTXLOWERAGGRCOPIES_H
 
 #include "llvm/CodeGen/MachineFunctionAnalysis.h"
+#include "llvm/CodeGen/StackProtector.h"
 #include "llvm/IR/DataLayout.h"
 #include "llvm/Pass.h"
 
@@ -29,8 +30,8 @@ struct NVPTXLowerAggrCopies : public Fun
 
   void getAnalysisUsage(AnalysisUsage &AU) const override {
     AU.addRequired<DataLayoutPass>();
-    AU.addPreserved("stack-protector");
     AU.addPreserved<MachineFunctionAnalysis>();
+    AU.addPreserved<StackProtector>();
   }
 
   bool runOnFunction(Function &F) override;

Modified: llvm/branches/release_36/lib/Transforms/Scalar/LoopInstSimplify.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/release_36/lib/Transforms/Scalar/LoopInstSimplify.cpp?rev=227328&r1=227327&r2=227328&view=diff
==============================================================================
--- llvm/branches/release_36/lib/Transforms/Scalar/LoopInstSimplify.cpp (original)
+++ llvm/branches/release_36/lib/Transforms/Scalar/LoopInstSimplify.cpp Wed Jan 28 11:35:18 2015
@@ -18,6 +18,7 @@
 #include "llvm/Analysis/InstructionSimplify.h"
 #include "llvm/Analysis/LoopInfo.h"
 #include "llvm/Analysis/LoopPass.h"
+#include "llvm/Analysis/ScalarEvolution.h"
 #include "llvm/IR/DataLayout.h"
 #include "llvm/IR/Dominators.h"
 #include "llvm/IR/Instructions.h"
@@ -47,7 +48,7 @@ namespace {
       AU.addRequiredID(LoopSimplifyID);
       AU.addPreservedID(LoopSimplifyID);
       AU.addPreservedID(LCSSAID);
-      AU.addPreserved("scalar-evolution");
+      AU.addPreserved<ScalarEvolution>();
       AU.addRequired<TargetLibraryInfo>();
     }
   };

Modified: llvm/branches/release_36/lib/Transforms/Utils/LowerSwitch.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/release_36/lib/Transforms/Utils/LowerSwitch.cpp?rev=227328&r1=227327&r2=227328&view=diff
==============================================================================
--- llvm/branches/release_36/lib/Transforms/Utils/LowerSwitch.cpp (original)
+++ llvm/branches/release_36/lib/Transforms/Utils/LowerSwitch.cpp Wed Jan 28 11:35:18 2015
@@ -46,7 +46,6 @@ namespace {
     void getAnalysisUsage(AnalysisUsage &AU) const override {
       // This is a cluster of orthogonal Transforms
       AU.addPreserved<UnifyFunctionExitNodes>();
-      AU.addPreserved("mem2reg");
       AU.addPreservedID(LowerInvokePassID);
     }
 

Modified: llvm/branches/release_36/lib/Transforms/Utils/UnifyFunctionExitNodes.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/release_36/lib/Transforms/Utils/UnifyFunctionExitNodes.cpp?rev=227328&r1=227327&r2=227328&view=diff
==============================================================================
--- llvm/branches/release_36/lib/Transforms/Utils/UnifyFunctionExitNodes.cpp (original)
+++ llvm/branches/release_36/lib/Transforms/Utils/UnifyFunctionExitNodes.cpp Wed Jan 28 11:35:18 2015
@@ -35,7 +35,6 @@ void UnifyFunctionExitNodes::getAnalysis
   // We preserve the non-critical-edgeness property
   AU.addPreservedID(BreakCriticalEdgesID);
   // This is a cluster of orthogonal Transforms
-  AU.addPreserved("mem2reg");
   AU.addPreservedID(LowerSwitchID);
 }
 





More information about the llvm-branch-commits mailing list