ret_val :: proc (x: i32, y: i32) -> i32 {
big_arr : [128] i32;
+ big_arr[0] = 1234;
+ big_arr[1] = 1234;
big_arr[127] = 1234;
return big_arr[127] + x + y;
}
summing :: proc (x: ^i32) -> i32 {
s := 0;
- for i: 0, N do s += x[i];
+ for i: 0, N {
+ tmp :: ^i;
+ s += x[i];
+ }
return s;
}
WI(WI_I32_ADD);
}
}
-
+
break;
}
case Ast_Kind_Local: {
u64 offset = 0;
compile_local_location(mod, &code, (AstLocal *) aof->expr, &offset);
- WID(WI_I32_CONST, offset);
- WI(WI_I32_ADD);
+ if (offset != 0) {
+ WID(WI_I32_CONST, offset);
+ WI(WI_I32_ADD);
+ }
break;
}
}
static b32 local_is_wasm_local(AstLocal* local) {
- if (local->flags & Ast_Flag_Address_Taken) return 1;
+ if (local->flags & Ast_Flag_Address_Taken) return 0;
if (local->type->kind == Type_Kind_Basic) return 1;
if (local->type->kind == Type_Kind_Pointer) return 1;
return 0;