Modified graph construction to use one pass to find all defs.
Avoids having to handle some special cases that cause complex interactions
with instr. selection.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1138 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/InstrSched/SchedGraph.h b/lib/CodeGen/InstrSched/SchedGraph.h
index 27014ad..ecb72b6 100644
--- a/lib/CodeGen/InstrSched/SchedGraph.h
+++ b/lib/CodeGen/InstrSched/SchedGraph.h
@@ -34,6 +34,8 @@
class SchedGraphNode;
class SchedGraph;
class RegToRefVecMap;
+class ValueToDefVecMap;
+class RefVec;
class MachineInstr;
class MachineCodeForBasicBlock;
@@ -299,11 +301,19 @@
void buildGraph (const TargetMachine& target);
void buildNodesforVMInstr (const TargetMachine& target,
- const Instruction* instr);
+ const Instruction* instr,
+ vector<const Instruction*>& memVec,
+ RegToRefVecMap& regToRefVecMap,
+ ValueToDefVecMap& valueToDefVecMap);
+ void findDefUseInfoAtInstr (const TargetMachine& target,
+ SchedGraphNode* node,
+ RegToRefVecMap& regToRefVecMap,
+ ValueToDefVecMap& valueToDefVecMap);
+
void addEdgesForInstruction (const MachineInstr& minstr,
- RegToRefVecMap& regToRefVecMap,
- const TargetMachine& target);
+ const ValueToDefVecMap& valueToDefVecMap,
+ const TargetMachine& target);
void addCDEdges (const TerminatorInst* term,
const TargetMachine& target);
@@ -319,7 +329,7 @@
const TargetMachine& target);
void addSSAEdge (SchedGraphNode* node,
- const Instruction* defVMInstr,
+ const RefVec& defVec,
const Value* defValue,
const TargetMachine& target);