diff options
| author | gingerBill <ginger.bill.22@gmail.com> | 2016-08-05 21:07:25 +0100 |
|---|---|---|
| committer | gingerBill <ginger.bill.22@gmail.com> | 2016-08-05 21:07:25 +0100 |
| commit | ba238c569a54ac52aa318aa1238be790f941f724 (patch) | |
| tree | 5dea8e913a6f5b21299fb5f5b6b5ed7f5aeed5d0 /src/codegen/print_llvm.cpp | |
| parent | 4a303b5c3ef38bd99c36fa990c922917c0134d52 (diff) | |
Strings galore!
Diffstat (limited to 'src/codegen/print_llvm.cpp')
| -rw-r--r-- | src/codegen/print_llvm.cpp | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/src/codegen/print_llvm.cpp b/src/codegen/print_llvm.cpp index 8d7fe3d87..5ae423f41 100644 --- a/src/codegen/print_llvm.cpp +++ b/src/codegen/print_llvm.cpp @@ -440,12 +440,13 @@ void ssa_print_instr(gbFile *f, ssaModule *m, ssaValue *value) { case ssaInstr_Call: { auto *call = &instr->call; - if (call->type) { + Type *result_type = call->type->proc.results; + if (result_type) { ssa_fprintf(f, "%%%d = ", value->id); } ssa_fprintf(f, "call "); - if (call->type) { - ssa_print_type(f, m->sizes, call->type); + if (result_type) { + ssa_print_type(f, m->sizes, result_type); } else { ssa_fprintf(f, "void"); } @@ -454,14 +455,17 @@ void ssa_print_instr(gbFile *f, ssaModule *m, ssaValue *value) { ssa_fprintf(f, "("); + auto *params = &call->type->proc.params->tuple; for (isize i = 0; i < call->arg_count; i++) { - ssaValue *arg = call->args[i]; - Type *t = ssa_value_type(arg); + Entity *e = params->variables[i]; + GB_ASSERT(e != NULL); + Type *t = e->type; if (i > 0) { ssa_fprintf(f, ", "); } ssa_print_type(f, m->sizes, t); ssa_fprintf(f, " "); + ssaValue *arg = call->args[i]; ssa_print_value(f, m, arg, t); } ssa_fprintf(f, ")\n"); |