Update Tilde to get basic "Hello World" working with runtime.print_string

This commit is contained in:
gingerBill
2023-07-24 11:30:07 +01:00
parent 360cb9eb9a
commit 4051dd9522
3 changed files with 13 additions and 7 deletions
BIN
View File
Binary file not shown.
+10 -4
View File
@@ -303,12 +303,15 @@ gb_internal cgValue cg_build_builtin(cgProcedure *p, BuiltinProcId id, Ast *expr
case BuiltinProc_min:
if (ce->args.count == 2) {
Type *t = type_of_expr(expr);
return cg_builtin_min(p, t, cg_build_expr(p, ce->args[0]), cg_build_expr(p, ce->args[1]));
cgValue x = cg_build_expr(p, ce->args[0]);
cgValue y = cg_build_expr(p, ce->args[1]);
return cg_builtin_min(p, t, x, y);
} else {
Type *t = type_of_expr(expr);
cgValue x = cg_build_expr(p, ce->args[0]);
for (isize i = 1; i < ce->args.count; i++) {
x = cg_builtin_min(p, t, x, cg_build_expr(p, ce->args[i]));
cgValue y = cg_build_expr(p, ce->args[i]);
x = cg_builtin_min(p, t, x, y);
}
return x;
}
@@ -316,12 +319,15 @@ gb_internal cgValue cg_build_builtin(cgProcedure *p, BuiltinProcId id, Ast *expr
case BuiltinProc_max:
if (ce->args.count == 2) {
Type *t = type_of_expr(expr);
return cg_builtin_max(p, t, cg_build_expr(p, ce->args[0]), cg_build_expr(p, ce->args[1]));
cgValue x = cg_build_expr(p, ce->args[0]);
cgValue y = cg_build_expr(p, ce->args[1]);
return cg_builtin_max(p, t, x, y);
} else {
Type *t = type_of_expr(expr);
cgValue x = cg_build_expr(p, ce->args[0]);
for (isize i = 1; i < ce->args.count; i++) {
x = cg_builtin_max(p, t, x, cg_build_expr(p, ce->args[i]));
cgValue y = cg_build_expr(p, ce->args[i]);
x = cg_builtin_max(p, t, x, y);
}
return x;
}
+3 -3
View File
@@ -334,8 +334,8 @@ gb_internal void cg_procedure_end(cgProcedure *p) {
}
bool emit_asm = false;
if (string_starts_with(p->name, str_lit("bug@"))) {
emit_asm = true;
if (string_starts_with(p->name, str_lit("runtime@_os_write"))) {
// emit_asm = true;
}
TB_FunctionOutput *output = tb_module_compile_function(p->module->mod, p->func, TB_ISEL_FAST, emit_asm);
@@ -358,7 +358,7 @@ gb_internal void cg_procedure_generate(cgProcedure *p) {
cg_procedure_end(p);
if (
// string_starts_with(p->name, str_lit("bug@")) ||
string_starts_with(p->name, str_lit("runtime@_os_write")) ||
false
) { // IR Printing
TB_Arena *arena = tb_default_arena();