[llvm-branch-commits] [llvm] DAG: Avoid using getLibcallName when looking for a divrem call (PR #170413)
Matt Arsenault via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Tue Dec 2 18:54:31 PST 2025
https://github.com/arsenm created https://github.com/llvm/llvm-project/pull/170413
Also introduce an error if it's not available, which is not yet
testable.
>From b5ef5ed3e65584020a039a2fa8cd98c4d7ce31f9 Mon Sep 17 00:00:00 2001
From: Matt Arsenault <Matthew.Arsenault at amd.com>
Date: Tue, 2 Dec 2025 21:03:00 -0500
Subject: [PATCH] DAG: Avoid using getLibcallName when looking for a divrem
call
Also introduce an error if it's not available, which is not yet
testable.
---
llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp | 15 +++++++++++++--
1 file changed, 13 insertions(+), 2 deletions(-)
diff --git a/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp b/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
index 99d14a60c6ed1..8336e1d1f4134 100644
--- a/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
+++ b/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
@@ -2381,8 +2381,19 @@ SelectionDAGLegalize::ExpandDivRemLibCall(SDNode *Node,
Entry.IsZExt = !isSigned;
Args.push_back(Entry);
- SDValue Callee = DAG.getExternalSymbol(TLI.getLibcallName(LC),
- TLI.getPointerTy(DAG.getDataLayout()));
+ RTLIB::LibcallImpl LibcallImpl = TLI.getLibcallImpl(LC);
+ if (LibcallImpl == RTLIB::Unsupported) {
+ DAG.getContext()->emitError(Twine("no libcall available for ") +
+ Node->getOperationName(&DAG));
+ SDValue Poison = DAG.getPOISON(RetVT);
+ Results.push_back(Poison);
+ Results.push_back(Poison);
+ return;
+ }
+
+ SDValue Callee =
+ DAG.getExternalSymbol(TLI.getLibcallImplName(LibcallImpl).data(),
+ TLI.getPointerTy(DAG.getDataLayout()));
SDLoc dl(Node);
TargetLowering::CallLoweringInfo CLI(DAG);
More information about the llvm-branch-commits
mailing list