diff options
| author | Nate Begeman <natebegeman@mac.com> | 2005-09-07 00:15:36 +0000 | 
|---|---|---|
| committer | Nate Begeman <natebegeman@mac.com> | 2005-09-07 00:15:36 +0000 | 
| commit | 007c6506991c8634ce7c4186ce308d4f58ef80d7 (patch) | |
| tree | 48431bc7b75b9fa282a26247cb5b02f2d2573171 /llvm/lib | |
| parent | c59a1dbce2e820f1ecd02cd4f32b1badd735c722 (diff) | |
| download | bcm5719-llvm-007c6506991c8634ce7c4186ce308d4f58ef80d7.tar.gz bcm5719-llvm-007c6506991c8634ce7c4186ce308d4f58ef80d7.zip | |
Add an option to the DAG Combiner to enable it for beta runs, and turn on
that option for PowerPC's beta.
llvm-svn: 23253
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp | 11 | ||||
| -rw-r--r-- | llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp | 19 | 
2 files changed, 25 insertions, 5 deletions
| diff --git a/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp b/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp index 52110a1206c..d2501d81dd2 100644 --- a/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp @@ -37,6 +37,7 @@  #define DEBUG_TYPE "dagcombine"  #include "llvm/ADT/Statistic.h"  #include "llvm/CodeGen/SelectionDAG.h" +#include "llvm/Support/Debug.h"  #include "llvm/Support/MathExtras.h"  #include "llvm/Target/TargetLowering.h"  #include <cmath> @@ -76,8 +77,8 @@ namespace {      // Visitation implementation - Implement dag node combining for different      // node types.  The semantics are as follows:      // Return Value: -    //    null        - No change was made -    //   otherwise    - Node N should be replaced by the returned node. +    //   SDOperand.Val == 0   - No change was made +    //   otherwise            - N should be replaced by the returned Operand.      //      SDOperand visitTokenFactor(SDNode *N);      SDOperand visitADD(SDNode *N); @@ -266,9 +267,9 @@ void DAGCombiner::Run(bool RunningAfterLegalize) {        // CombineTo was used.  Since CombineTo takes care of the worklist         // mechanics for us, we have no work to do in this case.        if (RV.Val != N) { -        std::cerr << "\nReplacing "; N->dump(); -        std::cerr << "\nWith: "; RV.Val->dump(); -        std::cerr << '\n'; +        DEBUG(std::cerr << "\nReplacing "; N->dump(); +              std::cerr << "\nWith: "; RV.Val->dump(); +              std::cerr << '\n');          DAG.ReplaceAllUsesWith(SDOperand(N, 0), RV);          // Push the new node and any users onto the worklist diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp index ecf9797b484..26421c148f8 100644 --- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp +++ b/llvm/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); | 

