mirror of
https://github.com/c3lang/c3c.git
synced 2026-02-27 12:01:16 +00:00
Fix issue with naked functions #2365
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user