mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-28 09:31:03 +00:00
MI keeps a ptr of TargetInstrDescriptor, use it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32296 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
6065f66e7c
commit
51cdcd1972
@ -434,7 +434,8 @@ static bool isReDefinedByTwoAddr(MachineInstr *MI, unsigned Reg,
|
|||||||
for (unsigned j = i+1; j < e; ++j) {
|
for (unsigned j = i+1; j < e; ++j) {
|
||||||
MachineOperand &MO2 = MI->getOperand(j);
|
MachineOperand &MO2 = MI->getOperand(j);
|
||||||
if (MO2.isRegister() && MO2.isUse() && MO2.getReg() == Reg &&
|
if (MO2.isRegister() && MO2.isUse() && MO2.getReg() == Reg &&
|
||||||
TII->getOperandConstraint(MI->getOpcode(),j,TOI::TIED_TO) == (int)i)
|
MI->getInstrDescriptor()->
|
||||||
|
getOperandConstraint(j, TOI::TIED_TO) == (int)i)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -97,7 +97,8 @@ void VirtRegMap::virtFolded(unsigned VirtReg, MachineInstr *OldMI,
|
|||||||
}
|
}
|
||||||
|
|
||||||
ModRef MRInfo;
|
ModRef MRInfo;
|
||||||
if (TII.getOperandConstraint(OldMI->getOpcode(), OpNo, TOI::TIED_TO) != -1) {
|
if (OldMI->getInstrDescriptor()->
|
||||||
|
getOperandConstraint(OpNo, TOI::TIED_TO) != -1) {
|
||||||
// Folded a two-address operand.
|
// Folded a two-address operand.
|
||||||
MRInfo = isModRef;
|
MRInfo = isModRef;
|
||||||
} else if (OldMI->getOperand(OpNo).isDef()) {
|
} else if (OldMI->getOperand(OpNo).isDef()) {
|
||||||
@ -591,7 +592,7 @@ void LocalSpiller::RewriteMBB(MachineBasicBlock &MBB, VirtRegMap &VRM) {
|
|||||||
// aren't allowed to modify the reused register. If none of these cases
|
// aren't allowed to modify the reused register. If none of these cases
|
||||||
// apply, reuse it.
|
// apply, reuse it.
|
||||||
bool CanReuse = true;
|
bool CanReuse = true;
|
||||||
int ti = TII->getOperandConstraint(MI.getOpcode(), i, TOI::TIED_TO);
|
int ti = MI.getInstrDescriptor()->getOperandConstraint(i, TOI::TIED_TO);
|
||||||
if (ti != -1 &&
|
if (ti != -1 &&
|
||||||
MI.getOperand(ti).isReg() &&
|
MI.getOperand(ti).isReg() &&
|
||||||
MI.getOperand(ti).getReg() == VirtReg) {
|
MI.getOperand(ti).getReg() == VirtReg) {
|
||||||
|
@ -27,6 +27,7 @@
|
|||||||
#include "llvm/CodeGen/MachineFrameInfo.h"
|
#include "llvm/CodeGen/MachineFrameInfo.h"
|
||||||
#include "llvm/CodeGen/MachineLocation.h"
|
#include "llvm/CodeGen/MachineLocation.h"
|
||||||
#include "llvm/Target/TargetFrameInfo.h"
|
#include "llvm/Target/TargetFrameInfo.h"
|
||||||
|
#include "llvm/Target/TargetInstrInfo.h"
|
||||||
#include "llvm/Target/TargetMachine.h"
|
#include "llvm/Target/TargetMachine.h"
|
||||||
#include "llvm/Target/TargetOptions.h"
|
#include "llvm/Target/TargetOptions.h"
|
||||||
#include "llvm/Support/CommandLine.h"
|
#include "llvm/Support/CommandLine.h"
|
||||||
@ -289,7 +290,7 @@ MachineInstr* X86RegisterInfo::foldMemoryOperand(MachineInstr *MI,
|
|||||||
bool isTwoAddrFold = false;
|
bool isTwoAddrFold = false;
|
||||||
unsigned NumOps = TII.getNumOperands(MI->getOpcode());
|
unsigned NumOps = TII.getNumOperands(MI->getOpcode());
|
||||||
bool isTwoAddr = NumOps > 1 &&
|
bool isTwoAddr = NumOps > 1 &&
|
||||||
TII.getOperandConstraint(MI->getOpcode(), 1, TOI::TIED_TO) != -1;
|
MI->getInstrDescriptor()->getOperandConstraint(1, TOI::TIED_TO) != -1;
|
||||||
|
|
||||||
MachineInstr *NewMI = NULL;
|
MachineInstr *NewMI = NULL;
|
||||||
// Folding a memory location into the two-address part of a two-address
|
// Folding a memory location into the two-address part of a two-address
|
||||||
|
Loading…
x
Reference in New Issue
Block a user