]> git.xonotic.org Git - xonotic/gmqcc.git/blobdiff - ir.c
TYPE_FUNCTION values which are not constant are now allowed to be generated, they...
[xonotic/gmqcc.git] / ir.c
diff --git a/ir.c b/ir.c
index 2261e884e8ca3db375438b717b04030aa3b612a6..01e297ffbdebd1f0eb2641394e095129f981f555 100644 (file)
--- a/ir.c
+++ b/ir.c
@@ -2638,7 +2638,7 @@ static bool ir_builder_gen_global(ir_builder *self, ir_value *global)
              * should be checksummed and added to progdefs.h when we generate it.
              */
         }
-        else if (!strcmp(global->name, "end_sys_globals")) {
+        else if (!strcmp(global->name, "end_sys_fields")) {
             /* TODO: same as above but for entity-fields rather than globsl
              */
         }
@@ -2718,9 +2718,14 @@ static bool ir_builder_gen_global(ir_builder *self, ir_value *global)
     case TYPE_FUNCTION:
         if (code_defs_add(def) < 0)
             return false;
-        ir_value_code_setaddr(global, code_globals_elements);
-        code_globals_add(code_functions_elements);
-        return gen_global_function(self, global);
+        if (!global->isconst) {
+            ir_value_code_setaddr(global, code_globals_add(0));
+            return global->code.globaladdr >= 0;
+        } else {
+            ir_value_code_setaddr(global, code_globals_elements);
+            code_globals_add(code_functions_elements);
+            return gen_global_function(self, global);
+        }
     case TYPE_VARIANT:
         /* assume biggest type */
             ir_value_code_setaddr(global, code_globals_add(0));