From f40482aa29f687b4630744457844bad7f45ec614 Mon Sep 17 00:00:00 2001 From: Ginger Bill Date: Thu, 6 Oct 2016 23:30:22 +0100 Subject: Maybe types; value, ok := maybe_value(x) --- src/codegen/print_llvm.cpp | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'src/codegen/print_llvm.cpp') diff --git a/src/codegen/print_llvm.cpp b/src/codegen/print_llvm.cpp index f565e3570..1abbdb0d1 100644 --- a/src/codegen/print_llvm.cpp +++ b/src/codegen/print_llvm.cpp @@ -160,6 +160,17 @@ void ssa_print_type(ssaFileBuffer *f, ssaModule *m, Type *t) { case Basic_any: ssa_fprintf(f, "%%..any"); break; } break; + case Type_Pointer: + ssa_print_type(f, m, t->Pointer.elem); + ssa_fprintf(f, "*"); + break; + case Type_Maybe: + ssa_fprintf(f, "{"); + ssa_print_type(f, m, t->Maybe.elem); + ssa_fprintf(f, ", "); + ssa_print_type(f, m, t_bool); + ssa_fprintf(f, "}"); + break; case Type_Array: ssa_fprintf(f, "[%lld x ", t->Array.count); ssa_print_type(f, m, t->Array.elem); @@ -212,10 +223,7 @@ void ssa_print_type(ssaFileBuffer *f, ssaModule *m, Type *t) { } } break; - case Type_Pointer: - ssa_print_type(f, m, t->Pointer.elem); - ssa_fprintf(f, "*"); - break; + case Type_Named: if (is_type_struct(t) || is_type_union(t)) { String *name = map_get(&m->type_names, hash_pointer(t)); -- cgit v1.2.3