aboutsummaryrefslogtreecommitdiff
path: root/src/llvm_backend_stmt.cpp
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2024-08-18 22:45:26 +0100
committergingerBill <bill@gingerbill.org>2024-08-18 22:45:26 +0100
commit95c3b8a8def04c7725d6e8b3523d28be7c48046c (patch)
tree345cddac940f5cc06afe5d0f3c9a8989a5bd5bbb /src/llvm_backend_stmt.cpp
parentae417793668b1e74aae165e61cd2f29ed0c2cee0 (diff)
Move assert to `else` branch
Diffstat (limited to 'src/llvm_backend_stmt.cpp')
-rw-r--r--src/llvm_backend_stmt.cpp11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/llvm_backend_stmt.cpp b/src/llvm_backend_stmt.cpp
index 8f1c3a123..dc577308f 100644
--- a/src/llvm_backend_stmt.cpp
+++ b/src/llvm_backend_stmt.cpp
@@ -1574,9 +1574,14 @@ gb_internal void lb_store_type_case_implicit(lbProcedure *p, Ast *clause, lbValu
GB_ASSERT(e != nullptr);
if (e->flags & EntityFlag_Value) {
// by value
- GB_ASSERT(are_types_identical(e->type, value.type));
- lbAddr x = lb_add_local(p, e->type, e, false);
- lb_addr_store(p, x, value);
+ if (are_types_identical(e->type, value.type)) {
+ lbAddr x = lb_add_local(p, e->type, e, false);
+ lb_addr_store(p, x, value);
+ } else {
+ GB_ASSERT(are_types_identical(type_deref(e->type), value.type));
+ lbAddr x = lb_add_local(p, type_deref(e->type), e, false);
+ lb_addr_store(p, x, value);
+ }
} else {
if (!is_default_case) {
Type *clause_type = e->type;