Переглянути джерело

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;