#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)); \
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) ||
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;