Avoid DIDescriptor::getNode(). Use overloaded operators instead.
[oota-llvm.git] / include / llvm / CodeGen / FastISel.h
index 8c8698cdc006584f2e197b23a909597a06bea1be..2341f2302a4b0b87a3f2dd15699786dc0efae818 100644 (file)
@@ -60,6 +60,7 @@ protected:
   const TargetData &TD;
   const TargetInstrInfo &TII;
   const TargetLowering &TLI;
+  bool IsBottomUp;
 
 public:
   /// startNewBlock - Set the current block to which generated machine
@@ -107,14 +108,6 @@ public:
   /// index value.
   unsigned getRegForGEPIndex(const Value *V);
 
-  /// HandlePHINodesInSuccessorBlocks - Handle PHI nodes in successor blocks.
-  /// Emit code to ensure constants are copied into registers when needed.
-  /// Remember the virtual registers that need to be added to the Machine PHI
-  /// nodes as input.  We cannot just directly add them, because expansion
-  /// might result in multiple MBB's for one BB.  As such, the start of the
-  /// BB might correspond to a different MBB than the end.
-  bool HandlePHINodesInSuccessorBlocks(const BasicBlock *LLVMBB);
-
   virtual ~FastISel();
 
 protected:
@@ -311,6 +304,19 @@ private:
   bool SelectBitCast(const User *I);
   
   bool SelectCast(const User *I, unsigned Opcode);
+
+  /// HandlePHINodesInSuccessorBlocks - Handle PHI nodes in successor blocks.
+  /// Emit code to ensure constants are copied into registers when needed.
+  /// Remember the virtual registers that need to be added to the Machine PHI
+  /// nodes as input.  We cannot just directly add them, because expansion
+  /// might result in multiple MBB's for one BB.  As such, the start of the
+  /// BB might correspond to a different MBB than the end.
+  bool HandlePHINodesInSuccessorBlocks(const BasicBlock *LLVMBB);
+
+  /// materializeRegForValue - Helper for getRegForVale. This function is
+  /// called when the value isn't already available in a register and must
+  /// be materialized with new instructions.
+  unsigned materializeRegForValue(const Value *V, MVT VT);
 };
 
 }