diff options
| author | gingerBill <ginger.bill.22@gmail.com> | 2016-08-22 15:43:13 +0100 |
|---|---|---|
| committer | gingerBill <ginger.bill.22@gmail.com> | 2016-08-22 15:43:13 +0100 |
| commit | 81c592b5e92411e4b64744a152bd445bb6154433 (patch) | |
| tree | 1034a7abdff999d72561aa29b8a90ecb3fb19c76 /src/codegen | |
| parent | a98e93f03f7bd62ebf589b473c61ab5daf37f02c (diff) | |
Integer Enumerations
Diffstat (limited to 'src/codegen')
| -rw-r--r-- | src/codegen/print_llvm.cpp | 3 | ||||
| -rw-r--r-- | src/codegen/ssa.cpp | 8 |
2 files changed, 7 insertions, 4 deletions
diff --git a/src/codegen/print_llvm.cpp b/src/codegen/print_llvm.cpp index 6a983d09d..cb2e1e3ad 100644 --- a/src/codegen/print_llvm.cpp +++ b/src/codegen/print_llvm.cpp @@ -157,6 +157,9 @@ void ssa_print_type(gbFile *f, BaseTypeSizes s, Type *t) { } break; + case Type_Enumeration: + ssa_print_type(f, s, t->enumeration.base); + break; case Type_Pointer: ssa_print_type(f, s, t->pointer.elem); ssa_fprintf(f, "*"); diff --git a/src/codegen/ssa.cpp b/src/codegen/ssa.cpp index 0d9780e74..ad5e997ed 100644 --- a/src/codegen/ssa.cpp +++ b/src/codegen/ssa.cpp @@ -1237,10 +1237,11 @@ ssaValue *ssa_emit_conv(ssaProcedure *proc, ssaValue *value, Type *t) { } - Type *src = get_base_type(src_type); - Type *dst = get_base_type(t); - if (are_types_identical(t, src_type)) + Type *src = get_enum_base_type(get_base_type(src_type)); + Type *dst = get_enum_base_type(get_base_type(t)); + if (are_types_identical(src, dst)) { return value; + } if (value->kind == ssaValue_Constant) { if (dst->kind == Type_Basic) { @@ -1383,7 +1384,6 @@ ssaValue *ssa_emit_conv(ssaProcedure *proc, ssaValue *value, Type *t) { return v; } - gb_printf_err("Not Identical %s != %s\n", type_to_string(src_type), type_to_string(t)); gb_printf_err("Not Identical %s != %s\n", type_to_string(src), type_to_string(dst)); |