aboutsummaryrefslogtreecommitdiff
path: root/src/types.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/types.cpp')
-rw-r--r--src/types.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/types.cpp b/src/types.cpp
index 7fd363dd4..a9e9eb0f1 100644
--- a/src/types.cpp
+++ b/src/types.cpp
@@ -956,10 +956,15 @@ Type *alloc_type_simd_vector(i64 count, Type *elem) {
Type *type_deref(Type *t) {
if (t != nullptr) {
Type *bt = base_type(t);
- if (bt == nullptr)
+ if (bt == nullptr) {
return nullptr;
- if (bt != nullptr && bt->kind == Type_Pointer)
+ }
+ if (bt != nullptr && bt->kind == Type_Pointer) {
return bt->Pointer.elem;
+ }
+ if (bt != nullptr && bt->kind == Type_RelativePointer) {
+ return type_deref(bt->RelativePointer.pointer_type);
+ }
}
return t;
}