Changed = false;
DEBUG(dbgs() << "[Changing]: " << *OldMI << "\n");
- DEBUG(dbgs() << "[TO]: " << MIB << "\n");
+ DEBUG(dbgs() << "[TO]: " << *MIB << "\n");
} else if (ImmOpNum == 2 && OldMI->getOperand(3).getImm() == 0) {
short NewOpCode = HII->changeAddrMode_rr_io(*OldMI);
assert(NewOpCode >= 0 && "Invalid New opcode\n");
OpStart = 4;
Changed = true;
DEBUG(dbgs() << "[Changing]: " << *OldMI << "\n");
- DEBUG(dbgs() << "[TO]: " << MIB << "\n");
+ DEBUG(dbgs() << "[TO]: " << *MIB << "\n");
}
if (Changed)
}
Changed = true;
DEBUG(dbgs() << "[Changing]: " << *OldMI << "\n");
- DEBUG(dbgs() << "[TO]: " << MIB << "\n");
+ DEBUG(dbgs() << "[TO]: " << *MIB << "\n");
} else if (ImmOpNum == 1 && OldMI->getOperand(2).getImm() == 0) {
short NewOpCode = HII->changeAddrMode_rr_io(*OldMI);
assert(NewOpCode >= 0 && "Invalid New opcode\n");
MIB = BuildMI(*BB, InsertPt, OldMI->getDebugLoc(), HII->get(NewOpCode));
MIB.add(OldMI->getOperand(0));
MIB.add(ImmOp);
- MIB.add(OldMI->getOperand(1));
- OpStart = 2;
+ OpStart = 3;
Changed = true;
DEBUG(dbgs() << "[Changing]: " << *OldMI << "\n");
- DEBUG(dbgs() << "[TO]: " << MIB << "\n");
+ DEBUG(dbgs() << "[TO]: " << *MIB << "\n");
}
if (Changed)
for (unsigned i = OpStart; i < OpEnd; ++i)
--- /dev/null
+# RUN: llc -march=hexagon -run-pass amode-opt %s -o - | FileCheck %s
+
+# This testcase used to crash.
+# CHECK: S2_storerb_io killed %r0, @var_i8, killed %r2
+
+--- |
+ define void @fred() { ret void }
+ @var_i8 = global [10 x i8] zeroinitializer, align 8
+...
+
+---
+name: fred
+tracksRegLiveness: true
+body: |
+ bb.0:
+ liveins: %r0
+ %r1 = A2_tfrsi @var_i8
+ %r2 = A2_tfrsi 255
+ S4_storerb_rr killed %r0, killed %r1, 0, killed %r2
+ PS_jmpret %r31, implicit-def %pc
+...
+