Skip to content

Commit a7f20b5

Browse files
author
Michael Skvortsov
committed
Fix undef-bug.ll phi case
1 parent 3307990 commit a7f20b5

File tree

2 files changed

+12
-1
lines changed

2 files changed

+12
-1
lines changed

llvm/lib/Target/TVM/TVMStack.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -288,6 +288,15 @@ void Stack::printElement(raw_ostream &OS, const StackVreg &Vreg) const {
288288
OS << "x";
289289
return;
290290
}
291+
unsigned Reg = Vreg.VirtReg;
292+
if (Reg &&
293+
!TargetRegisterInfo::isStackSlot(Reg) &&
294+
!TargetRegisterInfo::isVirtualRegister(Reg) &&
295+
TRI &&
296+
Reg >= TRI->getNumRegs()) {
297+
OS << "?";
298+
return;
299+
}
291300
OS << printReg(Vreg.VirtReg, TRI, 0, MRI);
292301
if (Vreg.DbgVar) {
293302
OS << "(" << Vreg.DbgVar->getName() << ")";

llvm/lib/Target/TVM/TVMStackFixup.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,8 @@ StackFixup StackFixup::Diff(const Stack &to, const Stack &from) {
9595

9696
// Generate changes to re-order
9797
assert(llvm::size(unmaskedTo) == llvm::size(curStack));
98-
generateVagonXchgs(rv, curStack, unmaskedTo);
98+
if (llvm::size(curStack) > 0)
99+
generateVagonXchgs(rv, curStack, unmaskedTo);
99100
rv.optimize();
100101
return rv;
101102
}
@@ -225,6 +226,7 @@ void StackFixup::generateVagonXchgs(StackFixup &rv, const Stack &from,
225226

226227
auto Tr = Train::build(curStack, to);
227228
auto restVagons = llvm::make_range(Tr.Vagons.begin(), Tr.Vagons.end());
229+
assert(restVagons.begin() != restVagons.end());
228230
auto V = *restVagons.begin();
229231
if (V.DeepIdx + 1 == Sz && !V.Inverted) {
230232
restVagons = drop_begin(restVagons, 1);

0 commit comments

Comments
 (0)