diff options
| author | Matt Arsenault <Matthew.Arsenault@amd.com> | 2025-06-27 17:53:03 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-06-27 17:53:03 +0900 |
| commit | b4d3283ab79ceedc8819b36d8ce2f30dafb7c38e (patch) | |
| tree | 555858d4a5c2cf040a1e3e00312bf01d5b207741 /llvm/lib/IR/RuntimeLibcalls.cpp | |
| parent | 779f7243c8bb70ae0f63ea402bdc92a0cbf9b618 (diff) | |
AArch64: Add libcall impl declarations for __arm_sc* memory functions (#144977)
These were bypassing the ordinary libcall emission mechanism. Make sure
we have entries in RuntimeLibcalls, which should include all possible
calls the compiler could emit.
Fixes not emitting the # prefix in the arm64ec case.
Diffstat (limited to 'llvm/lib/IR/RuntimeLibcalls.cpp')
| -rw-r--r-- | llvm/lib/IR/RuntimeLibcalls.cpp | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/llvm/lib/IR/RuntimeLibcalls.cpp b/llvm/lib/IR/RuntimeLibcalls.cpp index 79a49159efc7..712f1a48d0b7 100644 --- a/llvm/lib/IR/RuntimeLibcalls.cpp +++ b/llvm/lib/IR/RuntimeLibcalls.cpp @@ -489,8 +489,17 @@ void RuntimeLibcallsInfo::initLibcalls(const Triple &TT, } if (TT.isAArch64()) { - if (TT.isWindowsArm64EC()) + if (TT.isWindowsArm64EC()) { setWindowsArm64LibCallNameOverrides(); + setLibcallImpl(RTLIB::SC_MEMCPY, RTLIB::arm64ec___arm_sc_memcpy); + setLibcallImpl(RTLIB::SC_MEMMOVE, RTLIB::arm64ec___arm_sc_memmove); + setLibcallImpl(RTLIB::SC_MEMSET, RTLIB::arm64ec___arm_sc_memset); + } else { + setLibcallImpl(RTLIB::SC_MEMCPY, RTLIB::__arm_sc_memcpy); + setLibcallImpl(RTLIB::SC_MEMMOVE, RTLIB::__arm_sc_memmove); + setLibcallImpl(RTLIB::SC_MEMSET, RTLIB::__arm_sc_memset); + } + setAArch64LibcallNames(*this, TT); } else if (TT.isARM() || TT.isThumb()) { setARMLibcallNames(*this, TT, FloatABI, EABIVersion); |
