[llvm-commits] CVS: llvm/lib/Target/X86/X86ISelDAGToDAG.cpp
Evan Cheng
evan.cheng at apple.com
Thu Jul 27 17:11:21 PDT 2006
Changes in directory llvm/lib/Target/X86:
X86ISelDAGToDAG.cpp updated: 1.80 -> 1.81
---
Log message:
Another duh. Determine topological order before any target node is added.
---
Diffs of the changes: (+13 -13)
X86ISelDAGToDAG.cpp | 26 +++++++++++++-------------
1 files changed, 13 insertions(+), 13 deletions(-)
Index: llvm/lib/Target/X86/X86ISelDAGToDAG.cpp
diff -u llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:1.80 llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:1.81
--- llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:1.80 Thu Jul 27 18:35:40 2006
+++ llvm/lib/Target/X86/X86ISelDAGToDAG.cpp Thu Jul 27 19:10:59 2006
@@ -99,7 +99,8 @@
: SelectionDAGISel(X86Lowering),
X86Lowering(*TM.getTargetLowering()),
Subtarget(&TM.getSubtarget<X86Subtarget>()),
- DAGSize(0), ReachibilityMatrix(NULL) {}
+ DAGSize(0), TopOrder(NULL), IdToOrder(NULL),
+ RMRange(NULL), ReachibilityMatrix(NULL) {}
virtual bool runOnFunction(Function &Fn) {
// Make sure we re-emit a set of the global base reg if necessary
@@ -242,7 +243,6 @@
/// DetermineTopologicalOrdering - Determine topological ordering of the nodes
/// in the DAG.
void X86DAGToDAGISel::DetermineTopologicalOrdering() {
- DAGSize = CurDAG->AssignNodeIds();
TopOrder = new SDNode*[DAGSize];
IdToOrder = new unsigned[DAGSize];
memset(IdToOrder, 0, DAGSize * sizeof(unsigned));
@@ -280,7 +280,6 @@
void X86DAGToDAGISel::DeterminReachibility(SDNode *f, SDNode *t) {
if (!ReachibilityMatrix) {
- DetermineTopologicalOrdering();
unsigned RMSize = (DAGSize * DAGSize + 7) / 8;
ReachibilityMatrix = new unsigned char[RMSize];
memset(ReachibilityMatrix, 0, RMSize);
@@ -323,25 +322,26 @@
DEBUG(BB->dump());
MachineFunction::iterator FirstMBB = BB;
+ DAGSize = DAG.AssignNodeIds();
+ DetermineTopologicalOrdering();
+
// Codegen the basic block.
#ifndef NDEBUG
DEBUG(std::cerr << "===== Instruction selection begins:\n");
Indent = 0;
#endif
DAG.setRoot(SelectRoot(DAG.getRoot()));
- assert(InFlightSet.empty() && "ISel InFlightSet has not been emptied!");
#ifndef NDEBUG
DEBUG(std::cerr << "===== Instruction selection ends:\n");
#endif
- if (ReachibilityMatrix) {
- delete[] ReachibilityMatrix;
- delete[] TopOrder;
- delete[] IdToOrder;
- delete[] RMRange;
- ReachibilityMatrix = NULL;
- TopOrder = NULL;
- IdToOrder = RMRange = NULL;
- }
+
+ delete[] ReachibilityMatrix;
+ delete[] TopOrder;
+ delete[] IdToOrder;
+ delete[] RMRange;
+ ReachibilityMatrix = NULL;
+ TopOrder = NULL;
+ IdToOrder = RMRange = NULL;
CodeGenMap.clear();
HandleMap.clear();
ReplaceMap.clear();
More information about the llvm-commits
mailing list