diff options
Diffstat (limited to 'llvm/lib/Target/WebAssembly/WebAssemblyFastISel.cpp')
| -rw-r--r-- | llvm/lib/Target/WebAssembly/WebAssemblyFastISel.cpp | 15 | 
1 files changed, 9 insertions, 6 deletions
| diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyFastISel.cpp b/llvm/lib/Target/WebAssembly/WebAssemblyFastISel.cpp index 17057486737..2d9aae7a698 100644 --- a/llvm/lib/Target/WebAssembly/WebAssemblyFastISel.cpp +++ b/llvm/lib/Target/WebAssembly/WebAssemblyFastISel.cpp @@ -851,6 +851,13 @@ bool WebAssemblyFastISel::selectCall(const Instruction *I) {      Args.push_back(Reg);    } +  unsigned CalleeReg = 0; +  if (!IsDirect) { +    CalleeReg = getRegForValue(Call->getCalledValue()); +    if (!CalleeReg) +      return false; +  } +    auto MIB = BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, DbgLoc, TII.get(Opc));    if (!IsVoid) @@ -858,12 +865,8 @@ bool WebAssemblyFastISel::selectCall(const Instruction *I) {    if (IsDirect)      MIB.addGlobalAddress(Func); -  else { -    unsigned Reg = getRegForValue(Call->getCalledValue()); -    if (Reg == 0) -      return false; -    MIB.addReg(Reg); -  } +  else +    MIB.addReg(CalleeReg);    for (unsigned ArgReg : Args)      MIB.addReg(ArgReg); | 

