Skip to content

Commit efc2b24

Browse files
committed
Remove assertion that isn't always valid
This is specifically not valid when the return value is implicitly truncated.
1 parent b756a0b commit efc2b24

File tree

1 file changed

+10
-8
lines changed

1 file changed

+10
-8
lines changed

llvm/lib/Target/Z80/Z80MachineEarlyOptimization.cpp

+10-8
Original file line numberDiff line numberDiff line change
@@ -102,15 +102,17 @@ bool Z80MachineEarlyOptimization::runOnMachineFunction(MachineFunction &MF) {
102102
break;
103103
}
104104
if (CallMI && Opc == TargetOpcode::COPY) {
105-
if (Results.size() == 4) {
106-
CallMI = nullptr;
107-
break;
105+
Register DstReg = I->getOperand(0).getReg();
106+
Register SrcReg = I->getOperand(1).getReg();
107+
if (DstReg.isVirtual() && SrcReg.isPhysical()) {
108+
if (Results.size() == 4) {
109+
CallMI = nullptr;
110+
break;
111+
}
112+
Result &Res = Results.emplace_back();
113+
Res.TrueReg = DstReg;
114+
Res.PhysReg = SrcReg;
108115
}
109-
Result &Res = Results.emplace_back();
110-
Res.TrueReg = I->getOperand(0).getReg();
111-
Res.PhysReg = I->getOperand(1).getReg();
112-
assert(Res.TrueReg.isVirtual() && Res.PhysReg.isPhysical() &&
113-
"Expected phys to virt reg copy inside call sequence");
114116
}
115117
}
116118
for (I = FalseMBB->begin(), E = FalseMBB->end(); CallMI && I != E && I->isPHI();

0 commit comments

Comments
 (0)