添加了对命令行参数枚举类型的支持,允许用户从预定义的选项中进行选择, 并在解析时进行验证。同时修复了空值检查问题。 refactor(mir): 重构pass管理系统 将原有的pass管理器系统简化为直接的pass执行函数,移除了复杂的 依赖管理和流水线构建机制,使系统更加简洁明了。 chore(ir): 添加Windows x64 ABI实现 实现了Windows x64平台的ABI约定,包括参数传递、寄存器使用和 栈帧布局的处理逻辑。 feat(config): 统一编译阶段控制配置 将多个独立的布尔类型编译阶段控制改为统一的枚举类型,便于 管理和扩展新的编译阶段。
31 lines
1.1 KiB
C
31 lines
1.1 KiB
C
#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_PRE_REGALLOC, // 寄存器分配前
|
|
SCC_MIR_STAGE_REGALLOC, // 寄存器分配本身
|
|
SCC_MIR_STAGE_POST_REGALLOC // 寄存器分配后
|
|
} 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__ */
|