aboutsummaryrefslogtreecommitdiff
path: root/src/llvm_backend_stmt.cpp
diff options
context:
space:
mode:
authorLaytan Laats <laytanlaats@hotmail.com>2024-08-12 00:02:05 +0200
committerLaytan Laats <laytanlaats@hotmail.com>2024-08-12 00:02:05 +0200
commit99aa0d3a35a86d00c488554ff712c922f7133005 (patch)
tree9feb02c7c87746db3a1ac56007e7bf75c8e40a02 /src/llvm_backend_stmt.cpp
parent26fa3aca44a01f83447adb45f0f1e31fcc3d2ae6 (diff)
fix type switching over internal pointer union
Fixes #3947
Diffstat (limited to 'src/llvm_backend_stmt.cpp')
-rw-r--r--src/llvm_backend_stmt.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/llvm_backend_stmt.cpp b/src/llvm_backend_stmt.cpp
index e70cc503e..8f1c3a123 100644
--- a/src/llvm_backend_stmt.cpp
+++ b/src/llvm_backend_stmt.cpp
@@ -1646,7 +1646,7 @@ gb_internal void lb_build_type_switch_stmt(lbProcedure *p, AstTypeSwitchStmt *ss
union_data = lb_emit_conv(p, parent_ptr, t_rawptr);
Type *union_type = type_deref(parent_ptr.type);
if (is_type_union_maybe_pointer(union_type)) {
- tag = lb_emit_conv(p, lb_emit_comp_against_nil(p, Token_NotEq, union_data), t_int);
+ tag = lb_emit_conv(p, lb_emit_comp_against_nil(p, Token_NotEq, parent_value), t_int);
} else if (union_tag_size(union_type) == 0) {
tag = {}; // there is no tag for a zero sized union
} else {