diff options
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp b/llvm/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp index 32d0b01..4fd753b 100644 --- a/llvm/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp +++ b/llvm/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp @@ -534,11 +534,12 @@ LowerCallResults(MachineInstr &CallResults, DebugLoc DL, MachineBasicBlock *BB, assert(CallResults.getOpcode() == WebAssembly::CALL_RESULTS || CallResults.getOpcode() == WebAssembly::RET_CALL_RESULTS); - bool IsIndirect = CallParams.getOperand(0).isReg(); + bool IsIndirect = + CallParams.getOperand(0).isReg() || CallParams.getOperand(0).isFI(); bool IsRetCall = CallResults.getOpcode() == WebAssembly::RET_CALL_RESULTS; bool IsFuncrefCall = false; - if (IsIndirect) { + if (IsIndirect && CallParams.getOperand(0).isReg()) { Register Reg = CallParams.getOperand(0).getReg(); const MachineFunction *MF = BB->getParent(); const MachineRegisterInfo &MRI = MF->getRegInfo(); |