[llvm] r227294 - [LPM] Stop using the string based preservation API. It is an

Hans Wennborg hans at chromium.org
Wed Jan 28 09:37:45 PST 2015


On Wed, Jan 28, 2015 at 1:59 AM, Chandler Carruth <chandlerc at gmail.com> wrote:
> 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.

Merged in r227328. (With s/LoopInfoWrapperPass/LoopInfo/)


> 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
>
>



More information about the llvm-commits mailing list