From fa81061db0d08a508ab8bbedfcf7bf5ad1e27daa Mon Sep 17 00:00:00 2001 From: gingerBill Date: Thu, 10 Oct 2019 21:50:20 +0100 Subject: [PATCH] Minor fix to Odin types with System V ABI --- src/check_type.cpp | 19 ++++++++----------- 1 file 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 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; }