}
}
-printarr :: proc (arr: ^i32, len: i32) {
- i := 0;
- while i < len {
- print(arr[i]);
- i += 1;
- }
-}
-
// Don't need to bind this function to a symbol
proc #export "main" {
print(min(10.0, 12.0));
i += 1;
}
- printarr(global_arr, len);
+ print(global_arr, len);
sort(global_arr, len);
print(1234567);
- printarr(global_arr, len);
+ print(global_arr, len);
}
-
print_i64 :: proc #foreign "host" "print" (value: i64) ---
print_f64 :: proc #foreign "host" "print" (value: f64) ---
+print_i32arr :: proc (arr: ^i32, len: i32) {
+ i := 0;
+ while i < len {
+ print(arr[i]);
+ i += 1;
+ }
+}
+
+print_i64arr :: proc (arr: ^i64, len: i32) {
+ i := 0;
+ while i < len {
+ print(arr[i]);
+ i += 1;
+ }
+}
+
+print_f32arr :: proc (arr: ^f32, len: i32) {
+ i := 0;
+ while i < len {
+ print(arr[i]);
+ i += 1;
+ }
+}
+
+print_f64arr :: proc (arr: ^f64, len: i32) {
+ i := 0;
+ while i < len {
+ print(arr[i]);
+ i += 1;
+ }
+}
+
print :: proc #overloaded {
print_bool,
print_i32,
print_f32,
print_i64,
- print_f64
+ print_f64,
+
+ print_i32arr,
+ print_i64arr,
+ print_f32arr,
+ print_f64arr,
}
} else if (lval->kind == Ast_Kind_Array_Access) {
AstArrayAccess* aa = (AstArrayAccess *) lval;
- WID(WI_I32_CONST, aa->elem_size);
compile_expression(mod, &code, aa->expr);
- WI(WI_I32_MUL);
+ if (aa->elem_size != 1) {
+ WID(WI_I32_CONST, aa->elem_size);
+ WI(WI_I32_MUL);
+ }
compile_expression(mod, &code, aa->addr);
WI(WI_I32_ADD);