diff options
author | Cameron Zwarich <zwarich@apple.com> | 2011-03-10 05:59:17 +0000 |
---|---|---|
committer | Cameron Zwarich <zwarich@apple.com> | 2011-03-10 05:59:17 +0000 |
commit | 7930407339e897681f96b35ea663f877ebac9c36 (patch) | |
tree | 9da938865dfeeddc18140b473d1f8225a0fa4bd2 /llvm/lib | |
parent | 6e9fb0d056d95563bd6aac7a7e522cfc5c72d3a4 (diff) | |
download | bcm5719-llvm-7930407339e897681f96b35ea663f877ebac9c36.tar.gz bcm5719-llvm-7930407339e897681f96b35ea663f877ebac9c36.zip |
Add an option to disable critical edge splitting in PHIElimination.
llvm-svn: 127398
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/CodeGen/PHIElimination.cpp | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/llvm/lib/CodeGen/PHIElimination.cpp b/llvm/lib/CodeGen/PHIElimination.cpp index 5f7cf582c96..9fd5b0e5770 100644 --- a/llvm/lib/CodeGen/PHIElimination.cpp +++ b/llvm/lib/CodeGen/PHIElimination.cpp @@ -28,12 +28,18 @@ #include "llvm/ADT/SmallPtrSet.h" #include "llvm/ADT/STLExtras.h" #include "llvm/ADT/Statistic.h" +#include "llvm/Support/CommandLine.h" #include "llvm/Support/Compiler.h" #include "llvm/Support/Debug.h" #include <algorithm> #include <map> using namespace llvm; +static cl::opt<bool> +DisableEdgeSplitting("disable-phi-elim-edge-splitting", cl::init(false), + cl::Hidden, cl::desc("Disable critical edge splitting " + "during PHI elimination")); + namespace { class PHIElimination : public MachineFunctionPass { MachineRegisterInfo *MRI; // Machine register information @@ -105,10 +111,12 @@ bool PHIElimination::runOnMachineFunction(MachineFunction &MF) { bool Changed = false; // Split critical edges to help the coalescer - if (LiveVariables *LV = getAnalysisIfAvailable<LiveVariables>()) { - MachineLoopInfo *MLI = getAnalysisIfAvailable<MachineLoopInfo>(); - for (MachineFunction::iterator I = MF.begin(), E = MF.end(); I != E; ++I) - Changed |= SplitPHIEdges(MF, *I, *LV, MLI); + if (!DisableEdgeSplitting) { + if (LiveVariables *LV = getAnalysisIfAvailable<LiveVariables>()) { + MachineLoopInfo *MLI = getAnalysisIfAvailable<MachineLoopInfo>(); + for (MachineFunction::iterator I = MF.begin(), E = MF.end(); I != E; ++I) + Changed |= SplitPHIEdges(MF, *I, *LV, MLI); + } } // Populate VRegPHIUseCount |