Commit Graph

104 Commits

Author SHA1 Message Date
rain2133
ef09bc70d4 [midend]修改了removeinst方法,应对不同的使用情况,增加user析构函数使得user对象销毁顺带销毁其use关系销毁,重构usedelete方法封装指令删除和use关系删除 2025-07-31 21:10:20 +08:00
rain2133
aed4577490 [midend]同上,删除了打印函数对维度信息的错误访问 2025-07-31 19:57:19 +08:00
rain2133
f3f603a032 [midend]消除冗余维度信息记录,适配IR生成器,TODO:其他优化遍生成指令修改,或者后端的访问 2025-07-31 19:36:39 +08:00
rain2133
35691ab7bc [midend-SCCP]为跳转指令增加getSuccessors方法 2025-07-31 17:19:57 +08:00
rain2133
61768fa180 [midend-SCCP]头文件构架完毕,cpp文件部分报错暂时不commit 2025-07-31 17:00:02 +08:00
rain2133
520ebd96f0 [midend-SCCP]增加不可达指令,修改跳转指令参数(基本块args已弃用默认为{}) 2025-07-31 16:59:22 +08:00
rain2133
6868f638d7 [midend-SCCP]增加基本块对的哈希值计算方法,增加删除use关系和指令的函数 2025-07-31 16:57:47 +08:00
rain2133
206a0af424 [midend-SCCP]暂存1 2025-07-30 16:33:56 +08:00
rain2133
38bee5d5ac [midend]IRPrinter增加了打印全局常量的功能 2025-07-30 14:46:28 +08:00
rain2133
98511efd91 [midend]修改constdecl的逻辑区分局部常量和全局常量声明逻辑,提供方法访问全局变量,常量的维度信息,修改GlobalValue,ConstantVariable的继承父类(User->Value)维度信息保存在Type中。 2025-07-30 14:40:10 +08:00
rain2133
31b6711d74 [midend]IR修改常量类getint和getfloat逻辑,如果类型和方法不一致那么应用强制转换返回转换后的值 2025-07-29 23:52:37 +08:00
Lixuanwang
09ae47924e [midend]重构了src目录 2025-07-29 21:30:30 +08:00
Lixuanwang
e4fd16e36a Merge branch 'backend' into midend 2025-07-29 16:37:11 +08:00
Lixuanwang
8deb4ed076 [backend]添加了2个新的pass,用于解决大立即数加载问题 2025-07-29 15:48:37 +08:00
rain2133
37e99e37a3 Merge branch 'midend-mem2reg' into midend 2025-07-29 15:48:34 +08:00
rain2133
3dc4b28c92 [midend-mem2reg]dom增加访问支配树子节点求解和访问方法,修复block打印,phi指令命名,TODO:reg2membug待修复 2025-07-29 03:25:56 +08:00
rain2133
202e6d7cd8 [midend-mem2reg]增加遍打印方法,修复reg2mem构造函数错误 2025-07-29 02:11:10 +08:00
rain2133
3e4cac089e [midend-reg2mem]增加reg2mem遍,应用未定义值,增加inst迭代器查找方法,通过编译且脚本运行通过率不变 2025-07-29 02:01:48 +08:00
Lixuanwang
9ba08126fb Merge branch 'peephole' into backend 2025-07-28 23:46:34 +08:00
Lixuanwang
b0cecca081 Merge branch 'backend-rec' into backend 2025-07-28 23:40:58 +08:00
rain2133
efe74cba6c [midend-mem2reg]mem2reg遍基本写完,编译不报错,待reg2mem写完统一测试 2025-07-28 14:28:46 +08:00
634a84f29c [peephole]Pass架构重构优化 2025-07-27 11:03:26 +08:00
Lixuanwang
2e8b564d8f [backend]修复了递归函数的调用问题,引入了新的bug? 2025-07-27 01:07:08 +08:00
Lixuanwang
af318b6c0e [backend]尝试在寄存器分配逻辑中区分调用者保存、被调用者保存寄存器 2025-07-26 21:45:01 +08:00
Lixuanwang
540742be0c [backend]添加了一个Pass,将调用者、被调用者寄存器实现转移到其中 2025-07-26 18:38:04 +08:00
Lixuanwang
8ae7478ef3 Merge branch 'midend' into backend 2025-07-26 17:36:23 +08:00
Lixuanwang
a616ec085e [midend][backend]补全了符合RV64调用约定的寄存器着色规则 2025-07-26 17:35:08 +08:00
Lixuanwang
3df9b3bb06 Merge remote-tracking branch 'origin/midend-mem2reg' into midend 2025-07-26 12:41:43 +08:00
Lixuanwang
e57ac7709d [backend]开始区分调用者保存寄存器与被调用者保存寄存器 2025-07-26 12:39:17 +08:00
rain2133
2643eb1edd [midend-mem2reg]修改函数参数定义引入argument类,显示为参数创建alloca和store指令 2025-07-26 12:30:03 +08:00
Lixuanwang
14fb3dbe48 [midend][backend-GEP]解决了一个32/64位宽的错误问题 2025-07-25 22:23:26 +08:00
rain2133
04c5c6b44d [midend-mem2reg]修复assignstmt对lvalue的错误解析(lvaue会被exp解释为值,而被assign解释为地址) 2025-07-25 20:00:41 +08:00
rain2133
e2c97fd171 [miden]DCE引入ctx避免重复运行遍导致的状态污染。修复天然活跃判断条件 2025-07-25 16:33:18 +08:00
rain2133
12f63a0bf5 [midend]解决标签重名问题 2025-07-25 12:35:35 +08:00
Lixuanwang
d50912ee4c [midend]后端适配GEP 2025-07-25 12:00:47 +08:00
rain2133
1e6f6ed711 [midend] GEP类型推断函数getIndexedType逻辑修复,增加数组type缓存池避免相同type ==操作返回假,修复实参形参类型转换判断逻辑,starttime stoptime提供支持(待后端测试) 2025-07-25 03:26:10 +08:00
rain2133
96c6b0ab6e [midend]修复函数参数为数组指针的退化问题,能够正确区分局部变量和函数参数并生成正确的GEP指令 2025-07-25 01:53:49 +08:00
rain2133
9c56bc1310 [midend]修改GEP指令定义,更靠近llvm ir设计,增加自动推断类型函数,修复generator中错误生成ir的逻辑 2025-07-24 17:02:29 +08:00
rain2133
2556ab7315 [midend]修复getanalysisusagee缺失定义,修复数组初始化错误 2025-07-24 15:04:29 +08:00
rain2133
4b9d067c12 [midend]部分DCE遍实现(传播活跃代码),修改优化遍运行逻辑,TODO:完善优化遍的getAnalysisUsage,删除无用代码 2025-07-24 14:36:33 +08:00
Lixuanwang
f4d231b989 [midend]添加了后端中对GEP指令的支持 2025-07-24 00:39:11 +08:00
Lixuanwang
56b376914b Merge branch 'backend' into midend 2025-07-23 19:30:19 +08:00
rain2133
87d38be255 [midend]更新遍静态ID定义方法,
注册遍模板函数重构(针对遍的不同构造方法),
修复phi指令更新引起的旧代码错误,
将CFG优化适配到现有终端框架中,
独立CFG优化方法使得其他优化遍能独立调用,
usedelete方法回调取消删除功能。
IRGenerator代码风格修改。
2025-07-23 17:19:11 +08:00
Lixuanwang
2040670f8c [backend]添加了DAG图打印函数;为分支指令引入了延迟物化;添加了函数参数溢出到栈的处理逻辑 2025-07-22 22:50:25 +08:00
rain2133
3df3d7a097 [midend]通过编译,TODO:验证正确性 2025-07-22 22:38:47 +08:00
rain2133
f61b51b2fa [midend]优化中端框架,移除无用旧代码,ignore格式文件 2025-07-22 21:25:07 +08:00
Lixuanwang
bbfbf96b5e [backend]解决了重构后数组初始化不正确的问题 2025-07-21 16:27:47 +08:00
rain2133
a72fc541fb [midend]活跃变量分析,CFG优化遍重写。还未跑通,暂存 2025-07-21 15:20:46 +08:00
rain2133
550f4017be [midend]重构中端,建立遍管理器,注册器等,初步构建支配树分析遍,增加基本块方法 2025-07-21 15:19:38 +08:00
rain2133
88604c1f94 [IR]消除Falltrhough现象
[IR]优化生成Ret指令逻辑
[README]添加TODO表
2025-07-20 18:23:48 +08:00