aboutsummaryrefslogtreecommitdiff
path: root/src/check_type.cpp
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2020-11-22 21:38:45 +0000
committergingerBill <bill@gingerbill.org>2020-11-22 21:38:45 +0000
commita2461bdf6b2e5ab9db5ded4206857df74ba4d1cd (patch)
treef3ed8d968cb2a2f7367f582502c17864e756a1cb /src/check_type.cpp
parent740411f20713d2533073db4bc6a14f63a5f2a3db (diff)
Modify llvm_abi.cpp to work correctly for win64 abi of `i128` types. (it's a pain)
Diffstat (limited to 'src/check_type.cpp')
-rw-r--r--src/check_type.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/check_type.cpp b/src/check_type.cpp
index 6ea17eca6..dfd0f093d 100644
--- a/src/check_type.cpp
+++ b/src/check_type.cpp
@@ -2279,7 +2279,11 @@ Type *type_to_abi_compat_param_type(gbAllocator a, Type *original_type, ProcCall
return new_type;
}
if (build_context.ODIN_ARCH == "amd64") {
- if (is_type_integer_128bit(original_type)) {
+ bool is_128 = is_type_integer_128bit(original_type);
+ if (!is_128 && is_type_bit_set(original_type) && type_size_of(original_type) == 16) {
+ // is_128 = true;
+ }
+ if (is_128) {
if (build_context.ODIN_OS == "windows") {
return alloc_type_simd_vector(2, t_u64);
} else {