diff options
| author | gingerBill <bill@gingerbill.org> | 2022-05-25 21:29:45 +0100 |
|---|---|---|
| committer | gingerBill <bill@gingerbill.org> | 2022-05-25 21:29:45 +0100 |
| commit | 63cc8a80a045d48960d85640d11f39237c2f8ca4 (patch) | |
| tree | 270f01c9c64ef01b7c4cc140f2c5e311e9c3f4d9 /src/check_expr.cpp | |
| parent | 1549d01bf76e8c5e13626e57b1f976330a9cdd50 (diff) | |
Correct parapoly for #simd
Diffstat (limited to 'src/check_expr.cpp')
| -rw-r--r-- | src/check_expr.cpp | 13 |
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; } |