Add capability to have machine instruction autoinsert when it is created
authorChris Lattner <sabre@nondot.org>
Tue, 29 Oct 2002 23:18:23 +0000 (23:18 +0000)
committerChris Lattner <sabre@nondot.org>
Tue, 29 Oct 2002 23:18:23 +0000 (23:18 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4424 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/CodeGen/MachineInstr.h
include/llvm/CodeGen/MachineInstrBuilder.h

index 221340e6deb861df7c25306b5e99b8687971f93b..048f884c66c50d2d388426e1029faad17dfd29ee 100644 (file)
@@ -15,6 +15,7 @@
 #include <vector>
 class Value;
 class Function;
+class MachineBasicBlock;
 
 typedef int MachineOpCode;
 
@@ -239,19 +240,26 @@ public:
   /// MachineInstr ctor - This constructor only does a _reserve_ of the
   /// operands, not a resize for them.  It is expected that if you use this that
   /// you call add* methods below to fill up the operands, instead of the Set
-  /// methods.
+  /// methods.  Eventually, the "resizing" ctors will be phased out.
   ///
   MachineInstr(MachineOpCode Opcode, unsigned numOperands, bool XX, bool YY);
 
-  // 
-  // Support to rewrite a machine instruction in place: for now, simply
-  // replace() and then set new operands with Set.*Operand methods below.
-  // 
+  /// MachineInstr ctor - Work exactly the same as the ctor above, except that
+  /// the MachineInstr is created and added to the end of the specified basic
+  /// block.
+  ///
+  MachineInstr(MachineBasicBlock *MBB, MachineOpCode Opcode, unsigned numOps);
+  
+
+  /// replace - Support to rewrite a machine instruction in place: for now,
+  /// simply replace() and then set new operands with Set.*Operand methods
+  /// below.
+  /// 
   void replace(MachineOpCode Opcode, unsigned numOperands);
   
-  //
   // The opcode.
   // 
+  const MachineOpCode getOpcode() const { return opCode; }
   const MachineOpCode getOpCode() const { return opCode; }
 
   //
index 9b61abe4bae89416bea26c60ea0a340702cde352..909d101e90f9626bce1e7cea03494450445b5b44 100644 (file)
@@ -78,11 +78,9 @@ inline MachineInstrBuilder BuildMI(MachineOpCode Opcode, unsigned NumOperands) {
   return MachineInstrBuilder(new MachineInstr(Opcode, NumOperands, true, true));
 }
 
-#if 0
-inline MachineInstrBuilder BuildMI(MBasicBlock *BB, MachineOpCode Opcode,
-                                   unsigned DestReg = 0) {
-  return MachineInstrBuilder(new MachineInstr(BB, Opcode, DestReg));
+inline MachineInstrBuilder BuildMI(MachineBasicBlock *BB, MachineOpCode Opcode,
+                                   unsigned NumOperands) {
+  return MachineInstrBuilder(new MachineInstr(BB, Opcode, NumOperands));
 }
-#endif
-                                
+
 #endif