mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-12 13:38:21 +00:00
Re-apply the memory operand changes, with a fix for the static
initializer problem, a minor tweak to the way the DAGISelEmitter finds load/store nodes, and a renaming of the new PseudoSourceValue objects. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46827 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -15,6 +15,8 @@
|
||||
#include "llvm/Value.h"
|
||||
#include "llvm/CodeGen/MachineFunction.h"
|
||||
#include "llvm/CodeGen/MachineRegisterInfo.h"
|
||||
#include "llvm/CodeGen/PseudoSourceValue.h"
|
||||
#include "llvm/CodeGen/SelectionDAGNodes.h"
|
||||
#include "llvm/Target/TargetMachine.h"
|
||||
#include "llvm/Target/TargetInstrInfo.h"
|
||||
#include "llvm/Target/TargetInstrDesc.h"
|
||||
@ -292,6 +294,7 @@ MachineInstr::MachineInstr(const MachineInstr &MI) {
|
||||
TID = &MI.getDesc();
|
||||
NumImplicitOps = MI.NumImplicitOps;
|
||||
Operands.reserve(MI.getNumOperands());
|
||||
MemOperands = MI.MemOperands;
|
||||
|
||||
// Add operands
|
||||
for (unsigned i = 0; i != MI.getNumOperands(); ++i) {
|
||||
@ -627,6 +630,34 @@ void MachineInstr::print(std::ostream &OS, const TargetMachine *TM) const {
|
||||
getOperand(i).print(OS, TM);
|
||||
}
|
||||
|
||||
if (getNumMemOperands() > 0) {
|
||||
OS << ", SV:";
|
||||
for (unsigned i = 0; i < getNumMemOperands(); i++) {
|
||||
const MemOperand &MRO = getMemOperand(i);
|
||||
const Value *V = MRO.getValue();
|
||||
|
||||
assert(V && "SV missing.");
|
||||
assert((MRO.isLoad() || MRO.isStore()) &&
|
||||
"SV has to be a load, store or both.");
|
||||
|
||||
if (MRO.isVolatile())
|
||||
OS << "Volatile ";
|
||||
if (MRO.isLoad())
|
||||
OS << "LD ";
|
||||
if (MRO.isStore())
|
||||
OS << "ST ";
|
||||
|
||||
OS << MRO.getSize();
|
||||
|
||||
if (!V->getName().empty())
|
||||
OS << "[" << V->getName() << " + " << MRO.getOffset() << "]";
|
||||
else if (isa<PseudoSourceValue>(V))
|
||||
OS << "[" << *V << " + " << MRO.getOffset() << "]";
|
||||
else
|
||||
OS << "[" << V << " + " << MRO.getOffset() << "]";
|
||||
}
|
||||
}
|
||||
|
||||
OS << "\n";
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user