1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-20 19:42:54 +02:00

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
This commit is contained in:
Nate Begeman 2005-09-07 00:15:36 +00:00
parent b529b1bdbd
commit 143dc2039d
2 changed files with 25 additions and 5 deletions

View File

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

View File

@ -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);