[llvm] r227294 - [LPM] Stop using the string based preservation API. It is an
Chandler Carruth
chandlerc at gmail.com
Wed Jan 28 01:59:56 PST 2015
Hans, can you pull this into the 3.6 branch? It is part of a series of
commits that may significantly help compile times for some folks.
On Tue, Jan 27, 2015 at 8:57 PM, Chandler Carruth <chandlerc at gmail.com>
wrote:
> Author: chandlerc
> Date: Tue Jan 27 22:57:56 2015
> New Revision: 227294
>
> URL: http://llvm.org/viewvc/llvm-project?rev=227294&view=rev
> Log:
> [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/trunk/lib/CodeGen/MachineFunctionPass.cpp
> llvm/trunk/lib/Target/Hexagon/HexagonRemoveSZExtArgs.cpp
> llvm/trunk/lib/Target/NVPTX/NVPTXAllocaHoisting.h
> llvm/trunk/lib/Target/NVPTX/NVPTXLowerAggrCopies.h
> llvm/trunk/lib/Transforms/Scalar/LoopInstSimplify.cpp
> llvm/trunk/lib/Transforms/Utils/LowerSwitch.cpp
> llvm/trunk/lib/Transforms/Utils/UnifyFunctionExitNodes.cpp
>
> Modified: llvm/trunk/lib/CodeGen/MachineFunctionPass.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/MachineFunctionPass.cpp?rev=227294&r1=227293&r2=227294&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/MachineFunctionPass.cpp (original)
> +++ llvm/trunk/lib/CodeGen/MachineFunctionPass.cpp Tue Jan 27 22:57:56 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<LoopInfoWrapperPass>();
> + AU.addPreserved<MemoryDependenceAnalysis>();
> + AU.addPreserved<ScalarEvolution>();
> + AU.addPreserved<StackProtector>();
>
> FunctionPass::getAnalysisUsage(AU);
> }
>
> Modified: llvm/trunk/lib/Target/Hexagon/HexagonRemoveSZExtArgs.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Hexagon/HexagonRemoveSZExtArgs.cpp?rev=227294&r1=227293&r2=227294&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Target/Hexagon/HexagonRemoveSZExtArgs.cpp (original)
> +++ llvm/trunk/lib/Target/Hexagon/HexagonRemoveSZExtArgs.cpp Tue Jan 27
> 22:57:56 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/trunk/lib/Target/NVPTX/NVPTXAllocaHoisting.h
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/NVPTX/NVPTXAllocaHoisting.h?rev=227294&r1=227293&r2=227294&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Target/NVPTX/NVPTXAllocaHoisting.h (original)
> +++ llvm/trunk/lib/Target/NVPTX/NVPTXAllocaHoisting.h Tue Jan 27 22:57:56
> 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/trunk/lib/Target/NVPTX/NVPTXLowerAggrCopies.h
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/NVPTX/NVPTXLowerAggrCopies.h?rev=227294&r1=227293&r2=227294&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Target/NVPTX/NVPTXLowerAggrCopies.h (original)
> +++ llvm/trunk/lib/Target/NVPTX/NVPTXLowerAggrCopies.h Tue Jan 27 22:57:56
> 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/trunk/lib/Transforms/Scalar/LoopInstSimplify.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/LoopInstSimplify.cpp?rev=227294&r1=227293&r2=227294&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Transforms/Scalar/LoopInstSimplify.cpp (original)
> +++ llvm/trunk/lib/Transforms/Scalar/LoopInstSimplify.cpp Tue Jan 27
> 22:57:56 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<TargetLibraryInfoWrapperPass>();
> }
> };
>
> Modified: llvm/trunk/lib/Transforms/Utils/LowerSwitch.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Utils/LowerSwitch.cpp?rev=227294&r1=227293&r2=227294&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Transforms/Utils/LowerSwitch.cpp (original)
> +++ llvm/trunk/lib/Transforms/Utils/LowerSwitch.cpp Tue Jan 27 22:57:56
> 2015
> @@ -63,7 +63,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/trunk/lib/Transforms/Utils/UnifyFunctionExitNodes.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Utils/UnifyFunctionExitNodes.cpp?rev=227294&r1=227293&r2=227294&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Transforms/Utils/UnifyFunctionExitNodes.cpp (original)
> +++ llvm/trunk/lib/Transforms/Utils/UnifyFunctionExitNodes.cpp Tue Jan 27
> 22:57:56 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);
> }
>
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150128/e8c437b0/attachment.html>
More information about the llvm-commits
mailing list