Fix Compiler panic with SIMD Vector debug information #481

This commit is contained in:
gingerBill
2019-11-19 23:24:49 +00:00
parent d22e5b697d
commit 0839dccfdc
3 changed files with 23 additions and 4 deletions

View File

@@ -3008,7 +3008,13 @@ gbString write_type_to_string(gbString str, Type *type) {
break;
case Type_Struct: {
str = gb_string_appendc(str, "struct");
if (type->Struct.soa_elem != nullptr) {
str = gb_string_append_fmt(str, "#soa[%d]", cast(int)type->Struct.soa_count);
str = write_type_to_string(str, type->Struct.soa_elem);
break;
}
str = gb_string_appendc(str, "struct");
if (type->Struct.is_packed) str = gb_string_appendc(str, " #packed");
if (type->Struct.is_raw_union) str = gb_string_appendc(str, " #raw_union");
str = gb_string_appendc(str, " {");
@@ -3179,10 +3185,8 @@ gbString write_type_to_string(gbString str, Type *type) {
if (type->SimdVector.is_x86_mmx) {
return "intrinsics.x86_mmx";
} else {
str = gb_string_appendc(str, "intrinsics.vector(");
str = gb_string_append_fmt(str, "%d, ", cast(int)type->SimdVector.count);
str = gb_string_append_fmt(str, "#vector[%d]", cast(int)type->SimdVector.count);
str = write_type_to_string(str, type->SimdVector.elem);
str = gb_string_appendc(str, ")");
}
break;
}