#ifndef __SCC_LIR_BUILDER_H__ #define __SCC_LIR_BUILDER_H__ #include "scc_lir.h" #include "scc_lir_module.h" #include typedef struct scc_lir_builder { scc_lir_func_t *func; scc_lir_bblock_t *cur_bb; scc_hashtable_t value_to_vreg; // 高层 IR 值 -> 虚拟寄存器 scc_lir_module_t *module; } scc_lir_builder_t; void scc_lir_builder_init(scc_lir_builder_t *builder, scc_lir_module_t *module); void scc_lir_builder_drop(scc_lir_builder_t *builder); void scc_lir_builder_begin_func(scc_lir_builder_t *builder, const char *name); void scc_lir_builder_end_func(scc_lir_builder_t *builder); void scc_lir_builder_begin_bblock(scc_lir_builder_t *builder, const char *label); void scc_lir_builder_end_bblock(scc_lir_builder_t *builder); void scc_lir_builder_add_instr(scc_lir_builder_t *builder, const scc_lir_instr_t *instr); unsigned int scc_lir_builder_new_vreg(scc_lir_builder_t *builder); #endif /* __SCC_LIR_BUILDER_H__ */