llvmbot wrote:

<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-backend-amdgpu

Author: Matt Arsenault (arsenm)

<details>
<summary>Changes</summary>



---
Full diff: https://github.com/llvm/llvm-project/pull/170940.diff


2 Files Affected:

- (modified) llvm/lib/CodeGen/SelectionDAG/StatepointLowering.cpp (+10-2) 
- (modified) llvm/test/CodeGen/AMDGPU/llvm.deoptimize.ll (+2-6) 


``````````diff
diff --git a/llvm/lib/CodeGen/SelectionDAG/StatepointLowering.cpp 
b/llvm/lib/CodeGen/SelectionDAG/StatepointLowering.cpp
index 5b8cd343557fa..d34f3211dc463 100644
--- a/llvm/lib/CodeGen/SelectionDAG/StatepointLowering.cpp
+++ b/llvm/lib/CodeGen/SelectionDAG/StatepointLowering.cpp
@@ -1307,9 +1307,17 @@ void SelectionDAGBuilder::visitGCRelocate(const 
GCRelocateInst &Relocate) {
 
 void SelectionDAGBuilder::LowerDeoptimizeCall(const CallInst *CI) {
   const auto &TLI = DAG.getTargetLoweringInfo();
-  SDValue Callee = DAG.getExternalSymbol(TLI.getLibcallName(RTLIB::DEOPTIMIZE),
-                                         
TLI.getPointerTy(DAG.getDataLayout()));
 
+  RTLIB::LibcallImpl DeoptImpl = TLI.getLibcallImpl(RTLIB::DEOPTIMIZE);
+  if (DeoptImpl == RTLIB::Unsupported) {
+    DAG.getContext()->emitError("no deoptimize libcall available");
+    return;
+  }
+
+  SDValue Callee =
+      DAG.getExternalSymbol(DeoptImpl, TLI.getPointerTy(DAG.getDataLayout()));
+
+  // FIXME: Should pass in the calling convention for the LibcallImpl.
   // We don't lower calls to __llvm_deoptimize as varargs, but as a regular
   // call.  We also do not lower the return value to any virtual register, and
   // change the immediately following return to a trap instruction.
diff --git a/llvm/test/CodeGen/AMDGPU/llvm.deoptimize.ll 
b/llvm/test/CodeGen/AMDGPU/llvm.deoptimize.ll
index ef8c00bb3b4b0..53446b644445a 100644
--- a/llvm/test/CodeGen/AMDGPU/llvm.deoptimize.ll
+++ b/llvm/test/CodeGen/AMDGPU/llvm.deoptimize.ll
@@ -1,10 +1,6 @@
-; RUN: not llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 < %s 2> %t.err | 
FileCheck %s
-; RUN: FileCheck -check-prefix=ERR %s < %t.err
+; RUN: not llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 < %s 2>&1 | FileCheck %s
 
-; ERR: error: <unknown>:0:0: in function caller_0 i32 (): unsupported external 
symbol
-; ERR: error: unhandled statepoint-like instruction
-
-; CHECK: ;unsupported statepoint/stackmap/patchpoint
+; CHECK: error: no deoptimize libcall available
 declare i32 @llvm.experimental.deoptimize.i32(...)
 declare i8  @llvm.experimental.deoptimize.i8(...)
 

``````````

</details>


https://github.com/llvm/llvm-project/pull/170940
_______________________________________________
llvm-branch-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits

Reply via email to