Fix issue with naked functions #2365

This commit is contained in:
Christoffer Lerno
2025-08-04 15:51:49 +02:00
parent b463358add
commit c99284103d
2 changed files with 14 additions and 3 deletions

View File

@@ -495,10 +495,12 @@ void llvm_emit_body(GenContext *c, LLVMValueRef function, FunctionPrototype *pro
// Generate LLVMValueRef's for all parameters, so we can use them as local vars in code
FOREACH_IDX(i, Decl *, param, signature->params)
if (!is_naked)
{
if (!param->name && is_naked) continue;
llvm_emit_func_parameter(c, param, prototype->abi_args[i], &arg, i);
FOREACH_IDX(i, Decl *, param, signature->params)
{
llvm_emit_func_parameter(c, param, prototype->abi_args[i], &arg, i);
}
}
LLVMSetCurrentDebugLocation2(c->builder, NULL);

View File

@@ -9,6 +9,9 @@ fn void start() @export("_start") @naked @nostrip {
}
}
fn void foo(char a) @naked @nostrip { }
/* #expect: testing.ll
define void @_start() #0 {
@@ -17,3 +20,9 @@ entry:
unreachable
}
; Function Attrs: naked nounwind uwtable
define void @testing.foo(i8 zeroext %0) #0 {
entry:
unreachable
}