aboutsummaryrefslogtreecommitdiff
path: root/src/llvm_backend.cpp
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2022-09-17 10:26:57 +0100
committergingerBill <bill@gingerbill.org>2022-09-17 10:26:57 +0100
commit117d32dfc476bffdcc526003538710794874018d (patch)
tree37fdc4c0921d613b8d6157f446ddc7ff801d82ae /src/llvm_backend.cpp
parent320b84df4f7f2af868775951f89d19d353ef654e (diff)
Enforce constant pointer cast on global procedure variable initialization `x := proc() {}`
Diffstat (limited to 'src/llvm_backend.cpp')
-rw-r--r--src/llvm_backend.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/llvm_backend.cpp b/src/llvm_backend.cpp
index 4eb343fa7..aa901d22f 100644
--- a/src/llvm_backend.cpp
+++ b/src/llvm_backend.cpp
@@ -780,6 +780,9 @@ lbProcedure *lb_create_startup_runtime(lbModule *main_module, lbProcedure *start
var->init = init;
} else if (lb_is_const_or_global(init)) {
if (!var->is_initialized) {
+ if (is_type_proc(init.type)) {
+ init.value = LLVMConstPointerCast(init.value, lb_type(p->module, init.type));
+ }
LLVMSetInitializer(var->var.value, init.value);
var->is_initialized = true;
continue;