[llvm-commits] [llvm] r164408 - in /llvm/trunk/lib/CodeGen: LiveStackAnalysis.cpp RegAllocGreedy.cpp StackSlotColoring.cpp VirtRegMap.cpp

Benjamin Kramer benny.kra at gmail.com
Fri Sep 21 13:14:24 PDT 2012


On 21.09.2012, at 22:04, Evan Cheng <evan.cheng at apple.com> wrote:

> Author: evancheng
> Date: Fri Sep 21 15:04:28 2012
> New Revision: 164408
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=164408&view=rev
> Log:
> Fix a significant recent(?) regression. StackSlotColoring no longer did anything
> because LiveStackAnalysis was not preserved by VirtRegWriter. This caused
> big stack usage regression in some cases.

Ugh, is there a way to add a test to the test-suite or regression tests so the regression can't come up again?

- Ben
> 
> rdar://12340383
> 
> Modified:
>    llvm/trunk/lib/CodeGen/LiveStackAnalysis.cpp
>    llvm/trunk/lib/CodeGen/RegAllocGreedy.cpp
>    llvm/trunk/lib/CodeGen/StackSlotColoring.cpp
>    llvm/trunk/lib/CodeGen/VirtRegMap.cpp
> 
> Modified: llvm/trunk/lib/CodeGen/LiveStackAnalysis.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/LiveStackAnalysis.cpp?rev=164408&r1=164407&r2=164408&view=diff
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/LiveStackAnalysis.cpp (original)
> +++ llvm/trunk/lib/CodeGen/LiveStackAnalysis.cpp Fri Sep 21 15:04:28 2012
> @@ -25,7 +25,10 @@
> using namespace llvm;
> 
> char LiveStacks::ID = 0;
> -INITIALIZE_PASS(LiveStacks, "livestacks",
> +INITIALIZE_PASS_BEGIN(LiveStacks, "livestacks",
> +                "Live Stack Slot Analysis", false, false)
> +INITIALIZE_PASS_DEPENDENCY(SlotIndexes)
> +INITIALIZE_PASS_END(LiveStacks, "livestacks",
>                 "Live Stack Slot Analysis", false, false)
> 
> char &llvm::LiveStacksID = LiveStacks::ID;
> 
> Modified: llvm/trunk/lib/CodeGen/RegAllocGreedy.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/RegAllocGreedy.cpp?rev=164408&r1=164407&r2=164408&view=diff
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/RegAllocGreedy.cpp (original)
> +++ llvm/trunk/lib/CodeGen/RegAllocGreedy.cpp Fri Sep 21 15:04:28 2012
> @@ -330,9 +330,9 @@
>   AU.addPreserved<SlotIndexes>();
>   AU.addRequired<LiveDebugVariables>();
>   AU.addPreserved<LiveDebugVariables>();
> -  AU.addRequired<CalculateSpillWeights>();
>   AU.addRequired<LiveStacks>();
>   AU.addPreserved<LiveStacks>();
> +  AU.addRequired<CalculateSpillWeights>();
>   AU.addRequired<MachineDominatorTree>();
>   AU.addPreserved<MachineDominatorTree>();
>   AU.addRequired<MachineLoopInfo>();
> 
> Modified: llvm/trunk/lib/CodeGen/StackSlotColoring.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/StackSlotColoring.cpp?rev=164408&r1=164407&r2=164408&view=diff
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/StackSlotColoring.cpp (original)
> +++ llvm/trunk/lib/CodeGen/StackSlotColoring.cpp Fri Sep 21 15:04:28 2012
> @@ -11,7 +11,7 @@
> //
> //===----------------------------------------------------------------------===//
> 
> -#define DEBUG_TYPE "stackcoloring"
> +#define DEBUG_TYPE "stackslotcoloring"
> #include "llvm/Module.h"
> #include "llvm/CodeGen/Passes.h"
> #include "llvm/CodeGen/LiveIntervalAnalysis.h"
> 
> Modified: llvm/trunk/lib/CodeGen/VirtRegMap.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/VirtRegMap.cpp?rev=164408&r1=164407&r2=164408&view=diff
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/VirtRegMap.cpp (original)
> +++ llvm/trunk/lib/CodeGen/VirtRegMap.cpp Fri Sep 21 15:04:28 2012
> @@ -20,6 +20,7 @@
> #include "VirtRegMap.h"
> #include "LiveDebugVariables.h"
> #include "llvm/CodeGen/LiveIntervalAnalysis.h"
> +#include "llvm/CodeGen/LiveStackAnalysis.h"
> #include "llvm/CodeGen/MachineFrameInfo.h"
> #include "llvm/CodeGen/MachineFunction.h"
> #include "llvm/CodeGen/MachineInstrBuilder.h"
> @@ -171,6 +172,7 @@
> INITIALIZE_PASS_DEPENDENCY(SlotIndexes)
> INITIALIZE_PASS_DEPENDENCY(LiveIntervals)
> INITIALIZE_PASS_DEPENDENCY(LiveDebugVariables)
> +INITIALIZE_PASS_DEPENDENCY(LiveStacks)
> INITIALIZE_PASS_DEPENDENCY(VirtRegMap)
> INITIALIZE_PASS_END(VirtRegRewriter, "virtregrewriter",
>                     "Virtual Register Rewriter", false, false)
> @@ -183,6 +185,8 @@
>   AU.addRequired<SlotIndexes>();
>   AU.addPreserved<SlotIndexes>();
>   AU.addRequired<LiveDebugVariables>();
> +  AU.addRequired<LiveStacks>();
> +  AU.addPreserved<LiveStacks>();
>   AU.addRequired<VirtRegMap>();
>   MachineFunctionPass::getAnalysisUsage(AU);
> }
> 
> 
> _______________________________________________
> 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