Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 672930a

Browse files
jacobly0adriweb
authored andcommitted
Remove assertion that isn't always valid
This is specifically not valid when the return value is implicitly truncated.
1 parent 679cd84 commit 672930a

File tree

1 file changed

+10
-8
lines changed

1 file changed

+10
-8
lines changed

llvm/lib/Target/Z80/Z80MachineEarlyOptimization.cpp

Lines changed: 10 additions & 8 deletions
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)