diff options
author | Bill Wendling <isanbard@gmail.com> | 2009-12-18 23:32:53 +0000 |
---|---|---|
committer | Bill Wendling <isanbard@gmail.com> | 2009-12-18 23:32:53 +0000 |
commit | b4e6a5df5dada0cd919cc6e2717eb3118db9cc45 (patch) | |
tree | 17072250219da5439d74ec2aa48831516f8bf453 /lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp | |
parent | 28680d33eeafba7bf0e935200e20360c7dc27bde (diff) |
Changes from review:
- Move DisableScheduling flag into TargetOption.h
- Move SDNodeOrdering into its own header file. Give it a minimal interface that
doesn't conflate construction with storage.
- Move assigning the ordering into the SelectionDAGBuilder.
This isn't used yet, so there should be no functional changes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91727 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp')
-rw-r--r-- | lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp b/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp index 077548514c..be0d6afb4b 100644 --- a/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp +++ b/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp @@ -583,8 +583,10 @@ void SelectionDAGBuilder::visit(Instruction &I) { } void SelectionDAGBuilder::visit(unsigned Opcode, User &I) { - // Tell the DAG that we're processing a new instruction. - DAG.NewInst(); + // We're processing a new instruction. + ++SDNodeOrder; + + SDNode *PrevNode = DAG.getRoot().getNode(); // Note: this doesn't use InstVisitor, because it has to work with // ConstantExpr's in addition to instructions. @@ -592,9 +594,12 @@ void SelectionDAGBuilder::visit(unsigned Opcode, User &I) { default: llvm_unreachable("Unknown instruction type encountered!"); // Build the switch statement using the Instruction.def file. #define HANDLE_INST(NUM, OPCODE, CLASS) \ - case Instruction::OPCODE:return visit##OPCODE((CLASS&)I); + case Instruction::OPCODE: visit##OPCODE((CLASS&)I); break; #include "llvm/Instruction.def" } + + if (DisableScheduling && DAG.getRoot().getNode() != PrevNode) + DAG.AssignOrdering(DAG.getRoot().getNode(), SDNodeOrder); } SDValue SelectionDAGBuilder::getValue(const Value *V) { |