diff options
Diffstat (limited to 'lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp')
-rw-r--r-- | lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp b/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp index ecf9797b48..26421c148f 100644 --- a/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp +++ b/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp @@ -36,6 +36,18 @@ #include <iostream> using namespace llvm; +// Temporary command line code to enable use of the dag combiner as a beta +// option. +namespace llvm { + bool CombinerEnabled; +} +namespace { + cl::opt<bool, true> + CombineDAG("enable-dag-combiner", cl::Hidden, + cl::desc("Run the DAG combiner before and after Legalize"), + cl::location(CombinerEnabled), + cl::init(false)); +} #ifndef NDEBUG static cl::opt<bool> ViewDAGs("view-isel-dags", cl::Hidden, @@ -44,6 +56,7 @@ ViewDAGs("view-isel-dags", cl::Hidden, static const bool ViewDAGs = 0; #endif + namespace llvm { //===--------------------------------------------------------------------===// /// FunctionLoweringInfo - This contains information that is global to a @@ -1234,6 +1247,9 @@ void SelectionDAGISel::SelectBasicBlock(BasicBlock *LLVMBB, MachineFunction &MF, // types that are not supported by the target. BuildSelectionDAG(DAG, LLVMBB, PHINodesToUpdate, FuncInfo); + // Run the DAG combiner in pre-legalize mode, if we are told to do so + if (CombinerEnabled) DAG.Combine(false); + DEBUG(std::cerr << "Lowered selection DAG:\n"); DEBUG(DAG.dump()); @@ -1246,6 +1262,9 @@ void SelectionDAGISel::SelectBasicBlock(BasicBlock *LLVMBB, MachineFunction &MF, if (ViewDAGs) DAG.viewGraph(); + // Run the DAG combiner in post-legalize mode, if we are told to do so + if (CombinerEnabled) DAG.Combine(true); + // Third, instruction select all of the operations to machine code, adding the // code to the MachineBasicBlock. InstructionSelectBasicBlock(DAG); |