[llvm-branch-commits] [clang] [clang][CodeGen] Copy calling convention to .inline builtin clones (PR #234089)
via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Tue Oct 20 23:24:59 PDT 2026
llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-clang-codegen
@llvm/pr-subscribers-clang
Author: Vitaly Buka (vitalybuka)
<details>
<summary>Changes</summary>
0f0e31cf511d created a separate `.inline` function for inline builtins instead
of renaming `Fn` in place, leaving the default C calling convention on the
clone even when `Fn` uses a different calling convention.
Assisted-by: Gemini
---
Full diff: https://github.com/llvm/llvm-project/pull/234089.diff
2 Files Affected:
- (modified) clang/lib/CodeGen/CodeGenFunction.cpp (+1)
- (modified) clang/test/CodeGen/memcpy-inline-builtin-no-extern.c (+1-1)
``````````diff
diff --git a/clang/lib/CodeGen/CodeGenFunction.cpp b/clang/lib/CodeGen/CodeGenFunction.cpp
index 73bdfa94d4911..51588a7ebc556 100644
--- a/clang/lib/CodeGen/CodeGenFunction.cpp
+++ b/clang/lib/CodeGen/CodeGenFunction.cpp
@@ -1505,6 +1505,7 @@ void CodeGenFunction::GenerateCode(GlobalDecl GD, llvm::Function *Fn,
Clone = llvm::Function::Create(Fn->getFunctionType(),
llvm::GlobalValue::InternalLinkage,
Fn->getAddressSpace(), FDInlineName, M);
+ Clone->setCallingConv(Fn->getCallingConv());
Clone->setAttributes(Fn->getAttributes());
CGM.SetLLVMFunctionAttributesForDefinition(FD, Clone);
Clone->addFnAttr(llvm::Attribute::AlwaysInline);
diff --git a/clang/test/CodeGen/memcpy-inline-builtin-no-extern.c b/clang/test/CodeGen/memcpy-inline-builtin-no-extern.c
index 44501c47b5c02..1ac1b0262170c 100644
--- a/clang/test/CodeGen/memcpy-inline-builtin-no-extern.c
+++ b/clang/test/CodeGen/memcpy-inline-builtin-no-extern.c
@@ -113,7 +113,7 @@ int call_umask(int m) {
//
//
// CHECK: Function Attrs: alwaysinline nobuiltin nounwind
-// CHECK-LABEL: define internal i32 @umask.inline(
+// CHECK-LABEL: define internal preserve_mostcc i32 @umask.inline(
// CHECK-SAME: i32 noundef [[M:%.*]]) #[[ATTR2]] {
// CHECK-NEXT: [[ENTRY:.*:]]
// CHECK-NEXT: [[M_ADDR:%.*]] = alloca i32, align 4
``````````
</details>
https://github.com/llvm/llvm-project/pull/234089
More information about the llvm-branch-commits
mailing list