Passing a single value to @wasm would ignore the renaming

This commit is contained in:
Christoffer Lerno
2025-11-18 18:25:07 +01:00
parent 49b8cfe267
commit 2a41fa6281
3 changed files with 40 additions and 7 deletions

View File

@@ -32,6 +32,7 @@
- Regression vector ABI: npot vectors would load incorrectly from pointers and other things. #2576
- Using `defer catch` with a (void), would cause an assertion. #2580
- Fix decl attribute in the wrong place causing an assertion. #2581
- Passing a single value to `@wasm` would ignore the renaming.
### Stdlib changes

View File

@@ -3326,14 +3326,15 @@ static bool sema_analyse_attribute(SemaContext *context, ResolvedAttrData *attr_
RETURN_SEMA_ERROR(module, "Expected a constant string value as argument.");
}
attr_data->wasm_module = module->const_expr.bytes.ptr;
if (!sema_analyse_expr_rvalue(context, expr)) return false;
if (!expr_is_const_string(expr))
{
RETURN_SEMA_ERROR(expr, "Expected a constant string value as argument.");
}
decl->extname = expr->const_expr.bytes.ptr;
decl->has_extname = true;
}
if (!sema_analyse_expr_rvalue(context, expr)) return false;
if (!expr_is_const_string(expr))
{
RETURN_SEMA_ERROR(expr, "Expected a constant string value as argument.");
}
decl->extname = expr->const_expr.bytes.ptr;
decl->has_extname = true;
return true;
case ATTRIBUTE_EXPORT:
if (context->unit->module->is_generic)

View File

@@ -0,0 +1,31 @@
// #target: wasm32
module test;
fn int testexport(int num) @export("test_export")
{
return num * 100;
}
fn int testwasm(int num) @wasm("test_wasm")
{
return num * 100;
}
fn int main()
{
return 0;
}
/* #expect: test.ll
define i32 @test_export(i32 %0) #0 {
entry:
%mul = mul i32 %0, 100
ret i32 %mul
}
define i32 @test_wasm(i32 %0) #1 {
entry:
%mul = mul i32 %0, 100
ret i32 %mul
}