diff options
| author | gingerBill <bill@gingerbill.org> | 2021-05-31 20:58:28 +0100 |
|---|---|---|
| committer | gingerBill <bill@gingerbill.org> | 2021-05-31 20:58:28 +0100 |
| commit | 2573da12fc3e299be3f983474347628ddd3076dc (patch) | |
| tree | 4134bd34c0f2acfc02a49880532c23021fecd690 /src/llvm_backend.cpp | |
| parent | bbc9c6a93c655a8bfef67c0f571134274c63580e (diff) | |
Fix #992
Diffstat (limited to 'src/llvm_backend.cpp')
| -rw-r--r-- | src/llvm_backend.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/llvm_backend.cpp b/src/llvm_backend.cpp index 687423c63..eb38aa519 100644 --- a/src/llvm_backend.cpp +++ b/src/llvm_backend.cpp @@ -14283,7 +14283,9 @@ lbProcedure *lb_create_startup_runtime(lbModule *main_module, lbProcedure *start LLVMValueKind value_kind = LLVMGetValueKind(init.value); // gb_printf_err("%s %d\n", LLVMPrintValueToString(init.value)); - if (lb_is_const_or_global(init)) { + if (is_type_any(e->type) || is_type_union(e->type)) { + var->init = init; + } else if (lb_is_const_or_global(init)) { if (!var->is_initialized) { LLVMSetInitializer(var->var.value, init.value); var->is_initialized = true; @@ -14967,7 +14969,7 @@ void lb_generate_code(lbGenerator *gen) { if (decl->init_expr != nullptr) { TypeAndValue tav = type_and_value_of_expr(decl->init_expr); - if (!is_type_any(e->type)) { + if (!is_type_any(e->type) && !is_type_union(e->type)) { if (tav.mode != Addressing_Invalid) { if (tav.value.kind != ExactValue_Invalid) { ExactValue v = tav.value; |