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