Переглянути джерело

Merge branch 'master' into windows-llvm-13.0.0

gingerBill 2 роки тому
батько
коміт
60d222f2a8
1 змінених файлів з 9 додано та 1 видалено
  1. 9 1
      src/llvm_backend_general.cpp

+ 9 - 1
src/llvm_backend_general.cpp

@@ -1987,7 +1987,15 @@ LLVMTypeRef lb_type_internal(lbModule *m, Type *type) {
 				}
 				
 				field_remapping[field_index] = cast(i32)fields.count;
-				array_add(&fields, lb_type(m, field->type));
+
+				Type *field_type = field->type;
+				if (is_type_proc(field_type)) {
+					// NOTE(bill, 2022-11-23): Prevent type cycle declaration (e.g. vtable) of procedures
+					// because LLVM is dumb with procedure types
+					field_type = t_rawptr;
+				}
+
+				array_add(&fields, lb_type(m, field_type));
 				
 				if (!type->Struct.is_packed) {
 					padding_offset = align_formula(padding_offset, type_align_of(field->type));