aboutsummaryrefslogtreecommitdiff
path: root/src/check_expr.cpp
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2022-05-25 21:29:45 +0100
committergingerBill <bill@gingerbill.org>2022-05-25 21:29:45 +0100
commit63cc8a80a045d48960d85640d11f39237c2f8ca4 (patch)
tree270f01c9c64ef01b7c4cc140f2c5e311e9c3f4d9 /src/check_expr.cpp
parent1549d01bf76e8c5e13626e57b1f976330a9cdd50 (diff)
Correct parapoly for #simd
Diffstat (limited to 'src/check_expr.cpp')
-rw-r--r--src/check_expr.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/check_expr.cpp b/src/check_expr.cpp
index a30f83e7e..fcd7818bc 100644
--- a/src/check_expr.cpp
+++ b/src/check_expr.cpp
@@ -1328,6 +1328,19 @@ bool is_polymorphic_type_assignable(CheckerContext *c, Type *poly, Type *source,
}
}
return false;
+
+ case Type_SimdVector:
+ if (source->kind == Type_SimdVector) {
+ if (poly->SimdVector.generic_count != nullptr) {
+ if (!polymorphic_assign_index(&poly->SimdVector.generic_count, &poly->SimdVector.count, source->SimdVector.count)) {
+ return false;
+ }
+ }
+ if (poly->SimdVector.count == source->SimdVector.count) {
+ return is_polymorphic_type_assignable(c, poly->SimdVector.elem, source->SimdVector.elem, true, modify_type);
+ }
+ }
+ return false;
}
return false;
}