This commit is contained in:
gingerBill
2017-10-15 10:14:17 +01:00
parent b3b688fa50
commit 94762b56f6
+13 -12
View File
@@ -664,19 +664,20 @@ bool ir_type_has_default_values(Type *t) {
return ir_type_has_default_values(t->Array.elem);
case Type_Struct:
if (!t->Struct.is_raw_union) {
for_array(i, t->Struct.fields) {
Entity *f = t->Struct.fields_in_src_order[i];
if (f->kind != Entity_Variable) continue;
if (f->Variable.default_is_nil) {
// NOTE(bill): This is technically zero
continue;
} else if (f->Variable.default_value.kind != ExactValue_Invalid) {
return true;
} else if (f->Variable.default_is_undef) {
return true;
}
if (t->Struct.is_raw_union) return false;
for_array(i, t->Struct.fields) {
Entity *f = t->Struct.fields_in_src_order[i];
if (f->kind != Entity_Variable) continue;
if (f->Variable.default_is_nil) {
// NOTE(bill): This is technically zero
continue;
} else if (f->Variable.default_value.kind != ExactValue_Invalid) {
return true;
} else if (f->Variable.default_is_undef) {
return true;
}
bool sub = ir_type_has_default_values(f->type);
if (sub) return true;
}
break;
}