@@ -527,7 +527,8 @@ bool WebAssemblyCallLowering::lowerReturn(MachineIRBuilder &MIRBuilder,
527
527
auto NewOutReg = Arg.Regs [Part];
528
528
if (!RBI.constrainGenericRegister (NewOutReg, NewRegClass, MRI)) {
529
529
NewOutReg = MRI.createGenericVirtualRegister (NewLLT);
530
- assert (RBI.constrainGenericRegister (NewOutReg, NewRegClass, MRI) && " Couldn't constrain brand-new register?" );
530
+ assert (RBI.constrainGenericRegister (NewOutReg, NewRegClass, MRI) &&
531
+ " Couldn't constrain brand-new register?" );
531
532
MIRBuilder.buildCopy (NewOutReg, Arg.Regs [Part]);
532
533
}
533
534
MIB.addUse (NewOutReg);
@@ -704,9 +705,12 @@ bool WebAssemblyCallLowering::lowerFormalArguments(
704
705
getLLTForType (*PointerType::get (Ctx, 0 ), DL));
705
706
MFI->setVarargBufferVreg (VarargVreg);
706
707
707
- MIRBuilder.buildInstr (getWASMArgOpcode (PtrVT))
708
- .addDef (VarargVreg)
709
- .addImm (FinalArgIdx);
708
+ auto ArgInst = MIRBuilder.buildInstr (getWASMArgOpcode (PtrVT))
709
+ .addDef (VarargVreg)
710
+ .addImm (FinalArgIdx);
711
+
712
+ constrainOperandRegClass (MF, TRI, MRI, TII, RBI, *ArgInst,
713
+ ArgInst->getDesc (), ArgInst->getOperand (0 ), 0 );
710
714
711
715
MFI->addParam (PtrVT);
712
716
++FinalArgIdx;
@@ -911,7 +915,8 @@ bool WebAssemblyCallLowering::lowerCall(MachineIRBuilder &MIRBuilder,
911
915
auto NewRetReg = Ret.Regs [Part];
912
916
if (!RBI.constrainGenericRegister (NewRetReg, NewRegClass, MRI)) {
913
917
NewRetReg = MRI.createGenericVirtualRegister (NewLLT);
914
- assert (RBI.constrainGenericRegister (NewRetReg, NewRegClass, MRI) && " Couldn't constrain brand-new register?" );
918
+ assert (RBI.constrainGenericRegister (NewRetReg, NewRegClass, MRI) &&
919
+ " Couldn't constrain brand-new register?" );
915
920
MIRBuilder.buildCopy (NewRetReg, Ret.Regs [Part]);
916
921
}
917
922
CallInst.addDef (Ret.Regs [Part]);
0 commit comments