aboutsummaryrefslogtreecommitdiff
path: root/src/codegen
diff options
context:
space:
mode:
Diffstat (limited to 'src/codegen')
-rw-r--r--src/codegen/print_llvm.cpp3
-rw-r--r--src/codegen/ssa.cpp8
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));