From 58987d2e34e67742e3a65b1bb94ec2cfebae805f Mon Sep 17 00:00:00 2001 From: Matt Arsenault Date: Mon, 23 Jun 2025 22:14:44 +0900 Subject: [PATCH] RuntimeLibcalls: Pass in ABI name from MCOptions (#144894) ARM needs this to compute the available libcalls. --- llvm/include/llvm/IR/RuntimeLibcalls.h | 7 ++++--- llvm/lib/CodeGen/TargetLoweringBase.cpp | 3 ++- llvm/lib/IR/RuntimeLibcalls.cpp | 2 +- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/llvm/include/llvm/IR/RuntimeLibcalls.h b/llvm/include/llvm/IR/RuntimeLibcalls.h index 71f38bedf17e..ada1648b102f 100644 --- a/llvm/include/llvm/IR/RuntimeLibcalls.h +++ b/llvm/include/llvm/IR/RuntimeLibcalls.h @@ -58,8 +58,8 @@ struct RuntimeLibcallsInfo { const Triple &TT, ExceptionHandling ExceptionModel = ExceptionHandling::None, FloatABI::ABIType FloatABI = FloatABI::Default, - EABI EABIVersion = EABI::Default) { - initLibcalls(TT, ExceptionModel, FloatABI, EABIVersion); + EABI EABIVersion = EABI::Default, StringRef ABIName = "") { + initLibcalls(TT, ExceptionModel, FloatABI, EABIVersion, ABIName); } /// Rename the default libcall routine name for the specified libcall. @@ -150,7 +150,8 @@ private: /// Set default libcall names. If a target wants to opt-out of a libcall it /// should be placed here. LLVM_ABI void initLibcalls(const Triple &TT, ExceptionHandling ExceptionModel, - FloatABI::ABIType FloatABI, EABI ABIType); + FloatABI::ABIType FloatABI, EABI ABIType, + StringRef ABIName); }; } // namespace RTLIB diff --git a/llvm/lib/CodeGen/TargetLoweringBase.cpp b/llvm/lib/CodeGen/TargetLoweringBase.cpp index 41e73b853093..cda41a91a372 100644 --- a/llvm/lib/CodeGen/TargetLoweringBase.cpp +++ b/llvm/lib/CodeGen/TargetLoweringBase.cpp @@ -633,7 +633,8 @@ void RTLIB::initCmpLibcallCCs(ISD::CondCode *CmpLibcallCCs) { /// NOTE: The TargetMachine owns TLOF. TargetLoweringBase::TargetLoweringBase(const TargetMachine &tm) : TM(tm), Libcalls(TM.getTargetTriple(), TM.Options.ExceptionModel, - TM.Options.FloatABIType, TM.Options.EABIVersion) { + TM.Options.FloatABIType, TM.Options.EABIVersion, + TM.Options.MCOptions.getABIName()) { initActions(); // Perform these initializations only once. diff --git a/llvm/lib/IR/RuntimeLibcalls.cpp b/llvm/lib/IR/RuntimeLibcalls.cpp index ad2904d6d2ea..4837207cc53b 100644 --- a/llvm/lib/IR/RuntimeLibcalls.cpp +++ b/llvm/lib/IR/RuntimeLibcalls.cpp @@ -359,7 +359,7 @@ static void setLongDoubleIsF128Libm(RuntimeLibcallsInfo &Info, void RuntimeLibcallsInfo::initLibcalls(const Triple &TT, ExceptionHandling ExceptionModel, FloatABI::ABIType FloatABI, - EABI EABIVersion) { + EABI EABIVersion, StringRef ABIName) { initSoftFloatCmpLibcallPredicates(); initSoftFloatCmpLibcallPredicates();