[llvm] 6009607 - DAG: Check if deoptimize call is available before emitting it (#170940)
via llvm-commits
llvm-commits at lists.llvm.org
Mon Dec 29 13:48:33 PST 2025
Author: Matt Arsenault
Date: 2025-12-29T21:48:28Z
New Revision: 60096071242348cf9af2345100931e02b83bfee0
URL: https://github.com/llvm/llvm-project/commit/60096071242348cf9af2345100931e02b83bfee0
DIFF: https://github.com/llvm/llvm-project/commit/60096071242348cf9af2345100931e02b83bfee0.diff
LOG: DAG: Check if deoptimize call is available before emitting it (#170940)
Added:
Modified:
llvm/lib/CodeGen/SelectionDAG/StatepointLowering.cpp
llvm/test/CodeGen/AMDGPU/llvm.deoptimize.ll
Removed:
################################################################################
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(...)
More information about the llvm-commits
mailing list