aboutsummaryrefslogtreecommitdiff
path: root/src/checker.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/checker.cpp')
-rw-r--r--src/checker.cpp18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/checker.cpp b/src/checker.cpp
index 184f99ab9..2bd39e800 100644
--- a/src/checker.cpp
+++ b/src/checker.cpp
@@ -13,6 +13,7 @@ bool is_operand_value(Operand o) {
case Addressing_Constant:
case Addressing_MapIndex:
case Addressing_OptionalOk:
+ case Addressing_SoaVariable:
return true;
}
return false;
@@ -1255,6 +1256,9 @@ void add_type_info_type(CheckerContext *c, Type *t) {
break;
case Type_Basic:
switch (bt->Basic.kind) {
+ case Basic_cstring:
+ add_type_info_type(c, t_u8_ptr);
+ break;
case Basic_string:
add_type_info_type(c, t_u8_ptr);
add_type_info_type(c, t_int);
@@ -1274,6 +1278,14 @@ void add_type_info_type(CheckerContext *c, Type *t) {
add_type_info_type(c, t_type_info_float);
add_type_info_type(c, t_f64);
break;
+ case Basic_quaternion128:
+ add_type_info_type(c, t_type_info_float);
+ add_type_info_type(c, t_f32);
+ break;
+ case Basic_quaternion256:
+ add_type_info_type(c, t_type_info_float);
+ add_type_info_type(c, t_f64);
+ break;
}
break;
@@ -1328,7 +1340,11 @@ void add_type_info_type(CheckerContext *c, Type *t) {
if (bt->Struct.scope != nullptr) {
for_array(i, bt->Struct.scope->elements.entries) {
Entity *e = bt->Struct.scope->elements.entries[i].value;
- add_type_info_type(c, e->type);
+ if (bt->Struct.is_soa) {
+ add_type_info_type(c, alloc_type_pointer(e->type));
+ } else {
+ add_type_info_type(c, e->type);
+ }
}
}
for_array(i, bt->Struct.fields) {