[llvm-commits] CVS: llvm/include/llvm/CodeGen/MachineInstrBuilder.h
Chris Lattner
lattner at cs.uiuc.edu
Sat Feb 28 22:56:01 PST 2004
Changes in directory llvm/include/llvm/CodeGen:
MachineInstrBuilder.h updated: 1.18 -> 1.19
---
Log message:
Add BuildMI variants that take a MBB::iterator
---
Diffs of the changes: (+24 -5)
Index: llvm/include/llvm/CodeGen/MachineInstrBuilder.h
diff -u llvm/include/llvm/CodeGen/MachineInstrBuilder.h:1.18 llvm/include/llvm/CodeGen/MachineInstrBuilder.h:1.19
--- llvm/include/llvm/CodeGen/MachineInstrBuilder.h:1.18 Sun Feb 22 13:23:26 2004
+++ llvm/include/llvm/CodeGen/MachineInstrBuilder.h Sat Feb 28 22:55:28 2004
@@ -23,7 +23,7 @@
#ifndef LLVM_CODEGEN_MACHINEINSTRBUILDER_H
#define LLVM_CODEGEN_MACHINEINSTRBUILDER_H
-#include "llvm/CodeGen/MachineInstr.h"
+#include "llvm/CodeGen/MachineBasicBlock.h"
namespace llvm {
@@ -150,12 +150,33 @@
}
+/// BuildMI - Insert the instruction before a specified location in the basic
+/// block.
+inline MachineInstrBuilder BuildMI(MachineBasicBlock &BB,
+ MachineBasicBlock::iterator I,
+ int Opcode, unsigned NumOperands,
+ unsigned DestReg) {
+ MachineInstr *MI = new MachineInstr(Opcode, NumOperands+1, true, true);
+ BB.insert(I, MI);
+ return MachineInstrBuilder(MI).addReg(DestReg, MachineOperand::Def);
+}
+
+/// BMI - A special BuildMI variant that takes an iterator to insert the
+/// instruction at as well as a basic block.
+inline MachineInstrBuilder BuildMI(MachineBasicBlock &BB,
+ MachineBasicBlock::iterator I,
+ int Opcode, unsigned NumOperands) {
+ MachineInstr *MI = new MachineInstr(Opcode, NumOperands, true, true);
+ BB.insert(I, MI);
+ return MachineInstrBuilder(MI);
+}
+
/// BuildMI - This version of the builder inserts the built MachineInstr into
/// the specified MachineBasicBlock.
///
inline MachineInstrBuilder BuildMI(MachineBasicBlock *BB, int Opcode,
unsigned NumOperands) {
- return MachineInstrBuilder(new MachineInstr(BB, Opcode, NumOperands));
+ return BuildMI(*BB, BB->end(), Opcode, NumOperands);
}
/// BuildMI - This version of the builder inserts the built MachineInstr into
@@ -165,9 +186,7 @@
///
inline MachineInstrBuilder BuildMI(MachineBasicBlock *BB, int Opcode,
unsigned NumOperands, unsigned DestReg) {
- return MachineInstrBuilder(
- new MachineInstr(BB, Opcode, NumOperands+1))
- .addReg(DestReg, MachineOperand::Def);
+ return BuildMI(*BB, BB->end(), Opcode, NumOperands, DestReg);
}
} // End llvm namespace
More information about the llvm-commits
mailing list