-//===-- llvm/CodeGen/MachineInstr.h - MachineInstr class ---------*- C++ -*--=//
+//===-- llvm/CodeGen/MachineInstr.h - MachineInstr class --------*- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file was developed by the LLVM research group and is distributed under
+// the University of Illinois Open Source License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
//
// This file contains the declaration of the MachineInstr class, which is the
-// basic representation for all target dependant machine instructions used by
+// basic representation for all target dependent machine instructions used by
// the back end.
//
//===----------------------------------------------------------------------===//
#include "llvm/Target/MRegisterInfo.h"
#include "Support/Annotation.h"
#include "Support/iterator"
-#include <set>
class Value;
class Function;
std::vector<MachineOperand> operands; // the operands
unsigned numImplicitRefs; // number of implicit operands
- // regsUsed - all machine registers used for this instruction, including regs
- // used to save values across the instruction. This is a bitset of registers.
- std::set<int> regsUsed;
-
// OperandComplete - Return true if it's illegal to add a new operand
bool OperandsComplete() const;
MachineOperand::MO_VirtualRegister, V);
}
- //
- // Information about registers used in this instruction.
- //
- const std::set<int> &getRegsUsed() const {
- return regsUsed;
- }
- bool isRegUsed(int regNum) const {
- return regsUsed.find(regNum) != regsUsed.end();
- }
- void insertUsedReg(unsigned Reg) {
- assert(((int) Reg) >= 0 && "Invalid register being marked as used");
- regsUsed.insert((int) Reg);
- }
-
//
// Debugging support
//
"Trying to add an operand to a machine instr that is already done!");
operands.push_back(MachineOperand(reg, MachineOperand::MO_MachineRegister,
isDef ? MOTy::Def : MOTy::Use));
- insertUsedReg(reg);
}
/// addMachineRegOperand - Add a virtual register operand to this MachineInstr
"Trying to add an operand to a machine instr that is already done!");
operands.push_back(MachineOperand(reg, MachineOperand::MO_MachineRegister,
UTy));
- insertUsedReg(reg);
}
/// addZeroExtImmOperand - Add a zero extended constant argument to the