aboutsummaryrefslogtreecommitdiff
path: root/src/types.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/types.cpp')
-rw-r--r--src/types.cpp23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/types.cpp b/src/types.cpp
index dc7ecb946..5cf86d6b6 100644
--- a/src/types.cpp
+++ b/src/types.cpp
@@ -1037,6 +1037,29 @@ Type *core_array_type(Type *t) {
return t;
}
+// NOTE(bill): type can be easily compared using memcmp
+bool is_type_simple_compare(Type *t) {
+ t = core_type(t);
+ switch (t->kind) {
+ case Type_Array:
+ return is_type_simple_compare(t->Array.elem);
+
+ case Type_Basic:
+ if (t->Basic.flags & (BasicFlag_Integer|BasicFlag_Float|BasicFlag_Complex|BasicFlag_Rune|BasicFlag_Pointer)) {
+ return true;
+ }
+ return false;
+
+ case Type_Pointer:
+ case Type_Proc:
+ case Type_BitSet:
+ case Type_BitField:
+ return true;
+ }
+
+ return false;
+}
+
Type *base_complex_elem_type(Type *t) {
t = core_type(t);
if (is_type_complex(t)) {