mirror of
https://github.com/c3lang/c3c.git
synced 2026-02-27 03:51:18 +00:00
Passing a single value to @wasm would ignore the renaming
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
31
test/test_suite/abi/wasm_attribute.c3t
Normal file
31
test/test_suite/abi/wasm_attribute.c3t
Normal 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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user