stage1 初步实现
This commit is contained in:
@@ -44,6 +44,7 @@ void spl_ir_drop(spl_ir_t *ir) {
|
||||
node_drop_vecs(&f->nodes.data[j]);
|
||||
vec_free(f->nodes);
|
||||
vec_free(f->labels);
|
||||
vec_free(f->dbg_vars);
|
||||
}
|
||||
vec_free(ir->funcs);
|
||||
for (usize i = 0; i < ir->gdata.size; i++)
|
||||
@@ -56,6 +57,7 @@ spl_ir_func_ref_t spl_ir_alloc_fn(spl_ir_t *ir) {
|
||||
memset(&f, 0, sizeof f);
|
||||
vec_init(f.nodes);
|
||||
vec_init(f.labels);
|
||||
vec_init(f.dbg_vars);
|
||||
vec_push(ir->funcs, f);
|
||||
return ir->funcs.size - 1;
|
||||
}
|
||||
@@ -504,3 +506,14 @@ void spl_ir_dump(spl_ir_t *ir, const spl_type_t *ty) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const char *spl_ir_kind_name(spl_ir_kind_t kind) {
|
||||
static const char *const names[] = {
|
||||
#define X(a, b, c) #a,
|
||||
SPL_IR_FN_TABLE
|
||||
#undef X
|
||||
};
|
||||
if ((usize)kind < sizeof(names) / sizeof(names[0]))
|
||||
return names[kind];
|
||||
return "?";
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user