aboutsummaryrefslogtreecommitdiff
path: root/src/codegen/print.cpp
diff options
context:
space:
mode:
authorgingerBill <ginger.bill.22@gmail.com>2016-07-31 23:01:42 +0100
committergingerBill <ginger.bill.22@gmail.com>2016-07-31 23:01:42 +0100
commit70f6282f41cdd7f500159116c520140364f6739a (patch)
tree577ba99ea8249236dc4a70695a1e94ef26ddb340 /src/codegen/print.cpp
parent776dc0e8f1aa506ae0096c78ff10565e56c175e7 (diff)
Variable declaration and assign, unary operators
Diffstat (limited to 'src/codegen/print.cpp')
-rw-r--r--src/codegen/print.cpp19
1 files changed, 11 insertions, 8 deletions
diff --git a/src/codegen/print.cpp b/src/codegen/print.cpp
index 6ce039e0b..8e7f33ac9 100644
--- a/src/codegen/print.cpp
+++ b/src/codegen/print.cpp
@@ -146,7 +146,7 @@ void ssa_print_type(gbFile *f, BaseTypeSizes s, Type *t) {
if (i > 0) ssa_fprintf(f, ", ");
ssa_print_type(f, s, &t->procedure.params[i]);
}
- ssa_fprintf(f, ")");
+ ssa_fprintf(f, ") ");
break;
}
}
@@ -159,7 +159,7 @@ void ssa_print_exact_value(gbFile *f, ssaModule *m, ExactValue value, Type *type
case ExactValue_String: {
ssa_fprintf(f, "{");
ssa_print_type(f, m->sizes, &basic_types[Basic_i8]);
- ssa_fprintf(f, "* \"");
+ ssa_fprintf(f, "* c\"");
// TODO(bill): Make unquote string function
String unquoted = value.value_string;
unquoted.text++;
@@ -209,7 +209,7 @@ void ssa_print_value(gbFile *f, ssaModule *m, ssaValue *value, Type *type_hint)
}
switch (value->kind) {
case ssaValue_TypeName:
- ssa_print_encoded_local(f, value->type_name->token.string);
+ ssa_print_encoded_local(f, value->type_name.entity->token.string);
break;
case ssaValue_Global:
ssa_print_encoded_global(f, value->global.entity->token.string);
@@ -237,7 +237,9 @@ void ssa_print_instruction(gbFile *f, ssaModule *m, ssaValue *value) {
Type *type = instr->local.entity->type;
ssa_fprintf(f, "%%%d = alloca ", value->id);
ssa_print_type(f, m->sizes, type);
- ssa_fprintf(f, ", align %lld\n", type_align_of(m->sizes, gb_heap_allocator(), type));
+ ssa_fprintf(f, ", align %lld ", type_align_of(m->sizes, gb_heap_allocator(), type));
+ ssa_fprintf(f, "; %.*s", LIT(instr->local.entity->token.string));
+ ssa_fprintf(f, "\n");
ssa_fprintf(f, "\tstore ");
ssa_print_type(f, m->sizes, type);
ssa_fprintf(f, " zeroinitializer, ");
@@ -271,9 +273,11 @@ void ssa_print_instruction(gbFile *f, ssaModule *m, ssaValue *value) {
case ssaInstruction_BinaryOp: {
- ssaBinaryOp *bo = &value->instruction.binary_op;
+ auto *bo = &value->instruction.binary_op;
Type *type = ssa_value_type(bo->left);
+ ssa_fprintf(f, "%%%d = ", value->id);
+
if (is_type_float(type))
ssa_fprintf(f, "f");
@@ -320,15 +324,14 @@ void ssa_print_instruction(gbFile *f, ssaModule *m, ssaValue *value) {
}
void ssa_print_llvm_ir(gbFile *f, ssaModule *m) {
- gb_printf("-- Printing LLVM-IR -- \n\n");
gb_for_array(member_index, m->members.entries) {
auto *entry = &m->members.entries[member_index];
ssaValue *v = entry->value;
switch (v->kind) {
case ssaValue_TypeName: {
- ssa_print_encoded_local(f, v->type_name->token.string);
+ ssa_print_encoded_local(f, v->type_name.entity->token.string);
ssa_fprintf(f, " = type ");
- ssa_print_type(f, m->sizes, get_base_type(v->type_name->type));
+ ssa_print_type(f, m->sizes, get_base_type(v->type_name.type));
ssa_fprintf(f, "\n");
} break;