diff options
| author | gingerBill <bill@gingerbill.org> | 2019-10-10 21:50:20 +0100 |
|---|---|---|
| committer | gingerBill <bill@gingerbill.org> | 2019-10-10 21:50:20 +0100 |
| commit | fa81061db0d08a508ab8bbedfcf7bf5ad1e27daa (patch) | |
| tree | 58c44858726d7bf9e237bf4154db44a4e774359e | |
| parent | 39b3c8c80fa65ce91174659c5155b5e51512e8c1 (diff) | |
Minor fix to Odin types with System V ABI
| -rw-r--r-- | src/check_type.cpp | 19 |
1 files changed, 8 insertions, 11 deletions
diff --git a/src/check_type.cpp b/src/check_type.cpp index 917682f33..329755ea5 100644 --- a/src/check_type.cpp +++ b/src/check_type.cpp @@ -2003,15 +2003,16 @@ Type *handle_single_distributed_type_parameter(Array<Type *> const &types, bool } Type *handle_struct_system_v_amd64_abi_type(Type *t) { + if (type_size_of(t) > 16) { + return alloc_type_pointer(t); + } Type *original_type = t; Type *bt = core_type(t); t = base_type(t); i64 size = type_size_of(bt); switch (t->kind) { - case Type_Array: case Type_Slice: - case Type_DynamicArray: case Type_Struct: break; @@ -2023,16 +2024,12 @@ Type *handle_struct_system_v_amd64_abi_type(Type *t) { case Basic_complex128: case Basic_quaternion128: break; + default: + return original_type; } - return original_type; - case Type_Pointer: - case Type_Map: - case Type_Union: - case Type_Enum: - case Type_Proc: - case Type_BitField: - case Type_BitSet: - case Type_SimdVector: + break; + + default: return original_type; } |