[llvm] [PHIElimination] Verify reappropriated COPY is of similar register class (PR #146337)
Mikael Holmén via llvm-commits
llvm-commits at lists.llvm.org
Tue Jul 1 00:30:40 PDT 2025
================
@@ -584,9 +584,13 @@ void PHIEliminationImpl::LowerPHINode(MachineBasicBlock &MBB,
// Reuse an existing copy in the block if possible.
if (IncomingReg.isVirtual()) {
MachineInstr *DefMI = MRI->getUniqueVRegDef(SrcReg);
+ const TargetRegisterClass *RC1 = MRI->getRegClass(SrcReg);
+ const TargetRegisterClass *RC2 = MRI->getRegClass(IncomingReg);
if (DefMI && DefMI->isCopy() && DefMI->getParent() == &opBlock &&
- MRI->use_empty(SrcReg)) {
+ MRI->use_empty(SrcReg) && RC2->hasSuperClassEq(RC1)) {
DefMI->getOperand(0).setReg(IncomingReg);
+ if (LV)
+ LV->getVarInfo(SrcReg).AliveBlocks.clear();
----------------
mikaelholmen wrote:
This seems to solve the bbi-108462_3_aarch64.mir problem
https://github.com/llvm/llvm-project/pull/146337
More information about the llvm-commits
mailing list