浏览代码

Enforce constant pointer cast on global procedure variable initialization `x := proc() {}`

gingerBill 3 年之前
父节点
当前提交
117d32dfc4
共有 1 个文件被更改,包括 3 次插入0 次删除
  1. 3 0
      src/llvm_backend.cpp

+ 3 - 0
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;