diff options
| author | gingerBill <bill@gingerbill.org> | 2018-05-12 18:40:49 +0100 |
|---|---|---|
| committer | gingerBill <bill@gingerbill.org> | 2018-05-12 18:40:49 +0100 |
| commit | 2ef22e86e0742d6dcf0e8c4796f126134e808086 (patch) | |
| tree | 04e93cb32d73adaa3826bb46a33231219902b59f /src/ir_print.cpp | |
| parent | 830f4f540fdbe30b22e93540249e61c1d1521f9b (diff) | |
Make `any` use `typeid` rather than `^Type_Info`
Diffstat (limited to 'src/ir_print.cpp')
| -rw-r--r-- | src/ir_print.cpp | 19 |
1 files changed, 8 insertions, 11 deletions
diff --git a/src/ir_print.cpp b/src/ir_print.cpp index 435924f06..862281a55 100644 --- a/src/ir_print.cpp +++ b/src/ir_print.cpp @@ -319,6 +319,8 @@ void ir_print_type(irFileBuffer *f, irModule *m, Type *t, bool in_struct) { case Basic_rune: ir_write_str_lit(f, "i32"); return; + case Basic_typeid: + /* fallthrough */ case Basic_int: case Basic_uint: case Basic_uintptr: @@ -341,8 +343,6 @@ void ir_print_type(irFileBuffer *f, irModule *m, Type *t, bool in_struct) { case Basic_rawptr: ir_write_str_lit(f, "%..rawptr"); return; case Basic_string: ir_write_str_lit(f, "%..string"); return; case Basic_cstring: ir_write_str_lit(f, "i8*"); return; - - case Basic_typeid: ir_write_str_lit(f, "%..typeid"); return; } break; @@ -538,7 +538,6 @@ void ir_print_exact_value(irFileBuffer *f, irModule *m, ExactValue value, Type * return; } - switch (value.kind) { case ExactValue_Bool: if (value.value_bool) { @@ -653,7 +652,11 @@ void ir_print_exact_value(irFileBuffer *f, irModule *m, ExactValue value, Type * } case ExactValue_Pointer: if (value.value_pointer == 0) { - ir_write_str_lit(f, "null"); + if (is_type_typeid(type)) { + ir_write_str_lit(f, "0"); + } else { + ir_write_str_lit(f, "null"); + } } else { ir_write_str_lit(f, "inttoptr ("); ir_print_type(f, m, t_int); @@ -1748,15 +1751,9 @@ void print_llvm_ir(irGen *ir) { ir_write_str_lit(f, " = type {"); ir_print_type(f, m, t_rawptr); ir_write_str_lit(f, ", "); - ir_print_type(f, m, t_type_info_ptr); + ir_print_type(f, m, t_typeid); ir_write_str_lit(f, "} ; Basic_any\n"); - ir_print_encoded_local(f, str_lit("..typeid")); - ir_write_str_lit(f, " = type "); - ir_print_type(f, m, t_uintptr); - ir_write_str_lit(f, "; Basic_typeid\n"); - - ir_write_str_lit(f, "declare void @llvm.dbg.declare(metadata, metadata, metadata) nounwind readnone \n"); ir_write_byte(f, '\n'); |