diff --git a/bolt/lib/Core/MCPlusBuilder.cpp b/bolt/lib/Core/MCPlusBuilder.cpp --- a/bolt/lib/Core/MCPlusBuilder.cpp +++ b/bolt/lib/Core/MCPlusBuilder.cpp @@ -425,7 +425,7 @@ bool MCPlusBuilder::hasUseOfPhysReg(const MCInst &MI, unsigned Reg) const { const MCInstrDesc &InstInfo = Info->get(MI.getOpcode()); for (int I = InstInfo.NumDefs; I < InstInfo.NumOperands; ++I) - if (MI.getOperand(I).isReg() && + if (MI.getOperand(I).isReg() && MI.getOperand(i).getReg() && RegInfo->isSubRegisterEq(Reg, MI.getOperand(I).getReg())) return true; for (MCPhysReg ImplicitUse : InstInfo.implicit_uses()) { diff --git a/llvm/lib/MC/MCInstrDesc.cpp b/llvm/lib/MC/MCInstrDesc.cpp --- a/llvm/lib/MC/MCInstrDesc.cpp +++ b/llvm/lib/MC/MCInstrDesc.cpp @@ -40,7 +40,7 @@ bool MCInstrDesc::hasDefOfPhysReg(const MCInst &MI, unsigned Reg, const MCRegisterInfo &RI) const { for (int i = 0, e = NumDefs; i != e; ++i) - if (MI.getOperand(i).isReg() && + if (MI.getOperand(i).isReg() && MI.getOperand(i).getReg() && RI.isSubRegisterEq(Reg, MI.getOperand(i).getReg())) return true; if (variadicOpsAreDefs())