diff options
| author | Ginger Bill <bill@gingerbill.org> | 2016-10-06 17:11:17 +0100 |
|---|---|---|
| committer | Ginger Bill <bill@gingerbill.org> | 2016-10-06 17:11:17 +0100 |
| commit | 50301557b2425fc0b4dd213ad03fb635cbd6e454 (patch) | |
| tree | bcb09c25f839099ac172529283bc7e4a147614d8 /src/codegen/print_llvm.cpp | |
| parent | fee504636f9cd7633217e1877ee1b99e555bba63 (diff) | |
Untyped `nil`
Diffstat (limited to 'src/codegen/print_llvm.cpp')
| -rw-r--r-- | src/codegen/print_llvm.cpp | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/src/codegen/print_llvm.cpp b/src/codegen/print_llvm.cpp index c3f57fa75..f565e3570 100644 --- a/src/codegen/print_llvm.cpp +++ b/src/codegen/print_llvm.cpp @@ -157,13 +157,7 @@ void ssa_print_type(ssaFileBuffer *f, ssaModule *m, Type *t) { case Basic_string: ssa_fprintf(f, "%%..string"); break; case Basic_uint: ssa_fprintf(f, "i%lld", word_bits); break; case Basic_int: ssa_fprintf(f, "i%lld", word_bits); break; - case Basic_any: - ssa_fprintf(f, "{"); - ssa_print_type(f, m, t_type_info_ptr); - ssa_fprintf(f, ", "); - ssa_print_type(f, m, t_rawptr); - ssa_fprintf(f, "}"); - break; + case Basic_any: ssa_fprintf(f, "%%..any"); break; } break; case Type_Array: @@ -491,7 +485,8 @@ void ssa_print_exact_value(ssaFileBuffer *f, ssaModule *m, ExactValue value, Typ } break; default: - GB_PANIC("Invalid ExactValue: %d", value.kind); + ssa_fprintf(f, "zeroinitializer"); + // GB_PANIC("Invalid ExactValue: %d", value.kind); break; } } @@ -538,6 +533,10 @@ void ssa_print_value(ssaFileBuffer *f, ssaModule *m, ssaValue *value, Type *type } } break; + case ssaValue_Nil: + ssa_fprintf(f, "zeroinitializer"); + break; + case ssaValue_TypeName: ssa_print_encoded_local(f, value->TypeName.name); break; @@ -1045,9 +1044,16 @@ void ssa_print_llvm_ir(ssaFileBuffer *f, ssaModule *m) { ssa_fprintf(f, " = type {i8*, "); ssa_print_type(f, m, t_int); ssa_fprintf(f, "} ; Basic_string\n"); - ssa_print_encoded_local(f, make_string("..rawptr")); - ssa_fprintf(f, " = type i8* ; Basic_rawptr\n\n"); + ssa_fprintf(f, " = type i8* ; Basic_rawptr\n"); + + ssa_print_encoded_local(f, make_string("..any")); + ssa_fprintf(f, " = type {"); + ssa_print_type(f, m, t_type_info_ptr); + ssa_fprintf(f, ", "); + ssa_print_type(f, m, t_rawptr); + ssa_fprintf(f, "} ; Basic_any\n"); + gb_for_array(member_index, m->members.entries) { auto *entry = &m->members.entries[member_index]; |