diff options
| author | Laytan Laats <laytanlaats@hotmail.com> | 2024-08-12 00:02:05 +0200 |
|---|---|---|
| committer | Laytan Laats <laytanlaats@hotmail.com> | 2024-08-12 00:02:05 +0200 |
| commit | 99aa0d3a35a86d00c488554ff712c922f7133005 (patch) | |
| tree | 9feb02c7c87746db3a1ac56007e7bf75c8e40a02 /src/llvm_backend_stmt.cpp | |
| parent | 26fa3aca44a01f83447adb45f0f1e31fcc3d2ae6 (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.cpp | 2 |
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 { |