aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2025-03-07 10:38:36 +0000
committergingerBill <bill@gingerbill.org>2025-03-07 10:38:36 +0000
commitaf37ca1286ce84b9eeb51b47ad19f83bfcdde7cc (patch)
tree9d020d9899bcecb4a76b090e5be427ee1e55b893
parent168a41ba2c14fc89938ef3af84bb298099d5e4f5 (diff)
Fix #4573
-rw-r--r--src/llvm_backend_expr.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/llvm_backend_expr.cpp b/src/llvm_backend_expr.cpp
index 56c7b45ec..ea3db33f4 100644
--- a/src/llvm_backend_expr.cpp
+++ b/src/llvm_backend_expr.cpp
@@ -2145,6 +2145,12 @@ gb_internal lbValue lb_emit_conv(lbProcedure *p, lbValue value, Type *t) {
}
}
for (Type *vt : dst->Union.variants) {
+ if (src_type == t_llvm_bool && is_type_boolean(vt)) {
+ value = lb_emit_conv(p, value, vt);
+ lbAddr parent = lb_add_local_generated(p, t, true);
+ lb_emit_store_union_variant(p, parent.addr, value, vt);
+ return lb_addr_load(p, parent);
+ }
if (are_types_identical(src_type, vt)) {
lbAddr parent = lb_add_local_generated(p, t, true);
lb_emit_store_union_variant(p, parent.addr, value, vt);