#ifndef __SCC_MIR_PASS_H__ #define __SCC_MIR_PASS_H__ #include "scc_mir_module.h" /** Pass 的唯一标识符 (枚举) */ typedef enum { SCC_MIR_PASS_ABI_LOWERING, // ABI 物理化 (核心) SCC_MIR_PASS_REG_ALLOC, // 寄存器分配 (核心) SCC_MIR_PASS_FRAME_LAYOUT, // 栈帧布局 (核心) SCC_MIR_PASS_PROLOGUE_EPILOGUE, // 序言/尾声插入 (核心) SCC_MIR_PASS_DEAD_CODE_ELIM, // 死代码消除 (优化) SCC_MIR_PASS_CONST_PROP, // 常量传播 (优化) SCC_MIR_PASS_PEEPHOLE, // 窥孔优化 (优化) SCC_MIR_PASS_CFG_SIMPLIFY, // CFG 简化 (优化) SCC_MIR_PASS_COPY_PROP, // 复制传播 (优化) SCC_MIR_PASS_COUNT } scc_mir_pass_id_t; /** Pass 运行阶段 (用于自动排序) */ typedef enum { SCC_MIR_STAGE_ANY, // 无特殊阶段要求 SCC_MIR_STAGE_REGALLOC, // 寄存器分配本身 SCC_MIR_STAGE_FRAME_LAYOUT, // 帧布局 SCC_MIR_STAGE_PROLOGUE_EPILOGUE, // 函数头尾处理 } scc_mir_pass_stage_t; void scc_mir_pass(scc_mir_module_t *mir_module, scc_mir_pass_stage_t stage); #endif /* __SCC_LIR_PASS_H__ */