mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-13 04:30:23 +00:00
Use two-arg addOperand(MF, MO) internally in MachineInstr when possible.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170796 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
b9efafe54d
commit
9500e5d07a
@ -97,7 +97,8 @@ private:
|
||||
/// MachineInstr ctor - This constructor create a MachineInstr and add the
|
||||
/// implicit operands. It reserves space for number of operands specified by
|
||||
/// MCInstrDesc. An explicit DebugLoc is supplied.
|
||||
MachineInstr(const MCInstrDesc &MCID, const DebugLoc dl, bool NoImp = false);
|
||||
MachineInstr(MachineFunction&, const MCInstrDesc &MCID,
|
||||
const DebugLoc dl, bool NoImp = false);
|
||||
|
||||
~MachineInstr();
|
||||
|
||||
@ -997,7 +998,7 @@ private:
|
||||
|
||||
/// addImplicitDefUseOperands - Add all implicit def and use operands to
|
||||
/// this instruction.
|
||||
void addImplicitDefUseOperands();
|
||||
void addImplicitDefUseOperands(MachineFunction &MF);
|
||||
|
||||
/// RemoveRegOperandsFromUseLists - Unlink all of the register operands in
|
||||
/// this instruction from their respective use lists. This requires that the
|
||||
|
@ -158,7 +158,7 @@ MachineInstr *
|
||||
MachineFunction::CreateMachineInstr(const MCInstrDesc &MCID,
|
||||
DebugLoc DL, bool NoImp) {
|
||||
return new (InstructionRecycler.Allocate<MachineInstr>(Allocator))
|
||||
MachineInstr(MCID, DL, NoImp);
|
||||
MachineInstr(*this, MCID, DL, NoImp);
|
||||
}
|
||||
|
||||
/// CloneMachineInstr - Create a new MachineInstr which is a copy of the
|
||||
|
@ -518,20 +518,20 @@ raw_ostream &llvm::operator<<(raw_ostream &OS, const MachineMemOperand &MMO) {
|
||||
// MachineInstr Implementation
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
void MachineInstr::addImplicitDefUseOperands() {
|
||||
void MachineInstr::addImplicitDefUseOperands(MachineFunction &MF) {
|
||||
if (MCID->ImplicitDefs)
|
||||
for (const uint16_t *ImpDefs = MCID->getImplicitDefs(); *ImpDefs; ++ImpDefs)
|
||||
addOperand(MachineOperand::CreateReg(*ImpDefs, true, true));
|
||||
addOperand(MF, MachineOperand::CreateReg(*ImpDefs, true, true));
|
||||
if (MCID->ImplicitUses)
|
||||
for (const uint16_t *ImpUses = MCID->getImplicitUses(); *ImpUses; ++ImpUses)
|
||||
addOperand(MachineOperand::CreateReg(*ImpUses, false, true));
|
||||
addOperand(MF, MachineOperand::CreateReg(*ImpUses, false, true));
|
||||
}
|
||||
|
||||
/// MachineInstr ctor - This constructor creates a MachineInstr and adds the
|
||||
/// implicit operands. It reserves space for the number of operands specified by
|
||||
/// the MCInstrDesc.
|
||||
MachineInstr::MachineInstr(const MCInstrDesc &tid, const DebugLoc dl,
|
||||
bool NoImp)
|
||||
MachineInstr::MachineInstr(MachineFunction &MF, const MCInstrDesc &tid,
|
||||
const DebugLoc dl, bool NoImp)
|
||||
: MCID(&tid), Flags(0), AsmPrinterFlags(0),
|
||||
NumMemRefs(0), MemRefs(0), Parent(0), debugLoc(dl) {
|
||||
unsigned NumImplicitOps = 0;
|
||||
@ -539,7 +539,7 @@ MachineInstr::MachineInstr(const MCInstrDesc &tid, const DebugLoc dl,
|
||||
NumImplicitOps = MCID->getNumImplicitDefs() + MCID->getNumImplicitUses();
|
||||
Operands.reserve(NumImplicitOps + MCID->getNumOperands());
|
||||
if (!NoImp)
|
||||
addImplicitDefUseOperands();
|
||||
addImplicitDefUseOperands(MF);
|
||||
// Make sure that we get added to a machine basicblock
|
||||
LeakDetector::addGarbageObject(this);
|
||||
}
|
||||
@ -554,7 +554,7 @@ MachineInstr::MachineInstr(MachineFunction &MF, const MachineInstr &MI)
|
||||
|
||||
// Add operands
|
||||
for (unsigned i = 0; i != MI.getNumOperands(); ++i)
|
||||
addOperand(MI.getOperand(i));
|
||||
addOperand(MF, MI.getOperand(i));
|
||||
|
||||
// Copy all the sensible flags.
|
||||
setFlags(MI.Flags);
|
||||
|
Loading…
Reference in New Issue
Block a user