aboutsummaryrefslogtreecommitdiff
path: root/src/codegen/print_llvm.cpp
diff options
context:
space:
mode:
authorgingerBill <ginger.bill.22@gmail.com>2016-08-05 21:07:25 +0100
committergingerBill <ginger.bill.22@gmail.com>2016-08-05 21:07:25 +0100
commitba238c569a54ac52aa318aa1238be790f941f724 (patch)
tree5dea8e913a6f5b21299fb5f5b6b5ed7f5aeed5d0 /src/codegen/print_llvm.cpp
parent4a303b5c3ef38bd99c36fa990c922917c0134d52 (diff)
Strings galore!
Diffstat (limited to 'src/codegen/print_llvm.cpp')
-rw-r--r--src/codegen/print_llvm.cpp14
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");