diff options
| author | Ginger Bill <bill@gingerbill.org> | 2016-08-30 00:04:14 +0100 |
|---|---|---|
| committer | Ginger Bill <bill@gingerbill.org> | 2016-08-30 00:04:14 +0100 |
| commit | 0eaf7bd830dcda6e00f80eefed36bdf7beb02d5d (patch) | |
| tree | 3e65c52384458031b5ede490429c9c1938d8ba0b /src/codegen/print_llvm.cpp | |
| parent | 593563d8eabf725ac851f4c3c72cd32b5a71aa7c (diff) | |
Begin "Everything's a namespace"
Diffstat (limited to 'src/codegen/print_llvm.cpp')
| -rw-r--r-- | src/codegen/print_llvm.cpp | 25 |
1 files changed, 11 insertions, 14 deletions
diff --git a/src/codegen/print_llvm.cpp b/src/codegen/print_llvm.cpp index c5571712c..689b19ac8 100644 --- a/src/codegen/print_llvm.cpp +++ b/src/codegen/print_llvm.cpp @@ -169,7 +169,11 @@ void ssa_print_type(gbFile *f, BaseTypeSizes s, Type *t) { ssa_fprintf(f, "*"); break; case Type_Named: - ssa_print_encoded_local(f, t->Named.name); + if (get_base_type(t)->kind == Type_Struct) { + ssa_print_encoded_local(f, t->Named.name); + } else { + ssa_print_type(f, s, get_base_type(t)); + } break; case Type_Tuple: if (t->Tuple.variable_count == 1) { @@ -748,13 +752,15 @@ void ssa_print_proc(gbFile *f, ssaModule *m, ssaProcedure *proc) { void ssa_print_type_name(gbFile *f, ssaModule *m, ssaValue *v) { GB_ASSERT(v->kind == ssaValue_TypeName); + Type *base_type = get_base_type(ssa_type(v)); + if (base_type->kind != Type_Struct) + return; ssa_print_encoded_local(f, v->TypeName.name); ssa_fprintf(f, " = type "); ssa_print_type(f, m->sizes, get_base_type(v->TypeName.type)); ssa_fprintf(f, "\n"); } - void ssa_print_llvm_ir(gbFile *f, ssaModule *m) { if (m->layout.len > 0) { ssa_fprintf(f, "target datalayout = \"%.*s\"\n", LIT(m->layout)); @@ -772,21 +778,12 @@ void ssa_print_llvm_ir(gbFile *f, ssaModule *m) { auto *entry = &m->members.entries[member_index]; ssaValue *v = entry->value; switch (v->kind) { - case ssaValue_TypeName: { - ssa_print_encoded_local(f, v->TypeName.name); - ssa_fprintf(f, " = type "); - ssa_print_type(f, m->sizes, get_base_type(v->TypeName.type)); - ssa_fprintf(f, "\n"); - } break; + case ssaValue_TypeName: + ssa_print_type_name(f, m, v); + break; } } - gb_for_array(i, m->nested_type_names) { - ssaValue *v = m->nested_type_names[i]; - ssa_print_type_name(f, m, v); - } - - gb_for_array(member_index, m->members.entries) { auto *entry = &m->members.entries[member_index]; ssaValue *v = entry->value; |