]> git.xonotic.org Git - xonotic/gmqcc.git/blobdiff - ast.c
adding a comment about further possible improvements
[xonotic/gmqcc.git] / ast.c
diff --git a/ast.c b/ast.c
index 8b3f110f3fd18e2ff1a14222ca6bbbe749fef8fa..3ae5034407f254c3261e5a33b423b7f13443a278 100644 (file)
--- a/ast.c
+++ b/ast.c
@@ -27,6 +27,7 @@
 #include "gmqcc.h"
 #include "ast.h"
 #include "parser.h"
+#include "liveness.h"
 
 #define ast_instantiate(T, ctx, destroyfn)                          \
     T* self = (T*)mem_a(sizeof(T));                                 \
@@ -1812,6 +1813,12 @@ bool ast_generate_accessors(ast_value *self, ir_builder *ir)
             return false;
         }
     }
+    for (i = 0; i < self->expression.count; ++i) {
+        if (self->ir_values[i]->life) {
+            ir_lifemask_delete(self->ir_values[i]->life);
+            self->ir_values[i]->life = NULL;
+        }
+    }
     if (self->getter) {
         if (!ast_global_codegen  (self->getter, ir, false) ||
             !ast_function_codegen(self->getter->constval.vfunc, ir) ||
@@ -1821,9 +1828,12 @@ bool ast_generate_accessors(ast_value *self, ir_builder *ir)
             opts_set(opts.warn, WARN_USED_UNINITIALIZED, warn);
             return false;
         }
-    }
-    for (i = 0; i < self->expression.count; ++i) {
-        vec_free(self->ir_values[i]->life);
+        for (i = 0; i < self->expression.count; ++i) {
+            if (self->ir_values[i]->life) {
+                ir_lifemask_delete(self->ir_values[i]->life);
+                self->ir_values[i]->life = NULL;
+            }
+        }
     }
     opts_set(opts.warn, WARN_USED_UNINITIALIZED, warn);
     return true;