Commit Graph

59 Commits

Author SHA1 Message Date
rain2133
3df3d7a097 [midend]通过编译,TODO:验证正确性 2025-07-22 22:38:47 +08:00
rain2133
f61b51b2fa [midend]优化中端框架,移除无用旧代码,ignore格式文件 2025-07-22 21:25:07 +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
rain2133
de696b2b53 [IR]重构数组地址相关指令
增加GEP指令以及相关方法
新增数组Array Type
删除无用指令(GetSubArray,LA)
删除冗余类定义(Lval)
修复中间代码生成逻辑
测试通过所以test目录下的文件
TODO:后端展开数组计算地址仅需要针对GEP指令展开
2025-07-20 15:33:58 +08:00
rain2133
18e7cbd413 Merge branch 'backend' into SCCP 2025-07-20 13:00:15 +08:00
Lixuanwang
80dee78f04 [backend]引入后端pass管理器 2025-07-20 12:45:52 +08:00
Lixuanwang
d7fb017550 Merge branch 'backend-llir' into backend 2025-07-19 18:00:42 +08:00
Lixuanwang
9528335a04 [backend-llir]修复了许多重构的bug 2025-07-19 17:50:14 +08:00
Lixuanwang
d4a6996d74 [backend]重构了后端 2025-07-19 16:06:35 +08:00
rain2133
36cfd2f64d 先将SCCP中重构IR的部分移植到backend 2025-07-19 15:00:04 +08:00
Lixuanwang
75e61bf274 [backend-llir]引入了LLIR定义 2025-07-19 14:29:57 +08:00
rain2133
8f1e477e73 暂存 2025-07-19 14:23:57 +08:00
Lixuanwang
c8308047df [backend]引入了Memset指令在后端的展开 2025-07-19 13:52:09 +08:00
rain2133
10b011a1de [fix]修复部分常量构建,[Pass]建立Pass基类和管理器,预重构优化遍结构 2025-07-18 21:28:36 +08:00
Lixuanwang
3657c08644 [backend]引入新的活跃性分析 2025-07-18 20:24:47 +08:00
rain2133
34b5a93aaf [Mem2Reg]重构SSA提升 2025-07-18 18:17:45 +08:00
rain2133
a5d97185e1 [IR]修复IR报错,调整结构。 2025-07-18 18:17:22 +08:00
rain2133
fdc946c1b5 [IR]重构常量定义,引入undefvalue定义,修改常量方法使用尽量适配旧版 2025-07-18 16:40:16 +08:00
Lixuanwang
be8ca144d0 [backend]引入了新的pass,负责消除数组复杂地址访问 2025-07-18 00:10:10 +08:00
rain2133
725da2858d [IR]指令构造器更新 2025-07-17 21:34:19 +08:00
rain2133
631ef80de2 [IR]phi指令重构,将block信息加入并提供新方法,后续需更改phi相关指令构建逻辑 2025-07-17 19:01:02 +08:00
rain2133
77fae4d662 [CFG]增加分支优化,为SCCP调用做铺垫,预备修改phi定义 2025-07-17 16:50:09 +08:00
rain2133
009f54863e [CFG]CFG优化方法转换为静态方法,方便其他优化遍调用,TODO:简化条件分支 2025-07-17 15:54:37 +08:00
rain2133
f7e318e623 [SCCP]初步构建SCCP,.cpp仍不完善暂不commit 2025-07-16 22:01:37 +08:00
rain2133
00348c1931 修改CFG优化的文件名,修改phidel标签 2025-07-16 22:01:37 +08:00
rain2133
5a6cfbee1e [SysYIROptUtils]增加通用优化工具类,修改相关代码 2025-07-16 22:01:37 +08:00
Lixuanwang
f4d599a567 Merge remote-tracking branch 'origin/loopinfo' 2025-07-16 13:17:32 +08:00
rain2133
50fd9cffe9 [IRPrinter&DCE]修改定义方便调试打印,在DEC中增加调试信息 2025-07-16 13:04:05 +08:00
LixuanWang
bd7f6ea6f6 [deploy]移除了Backend.h和.cpp 2025-07-16 10:37:19 +08:00
LixuanWang
bb1602aa5f [deploy]把Antlr生成的代码直接放到源代码文件夹中 2025-07-16 10:32:18 +08:00
rain2133
3419f84898 Merge remote-tracking branch 'origin/backend' into loopinfo 2025-07-15 13:09:55 +08:00
rain2133
ede6465e8c [IR]:增加默认添加ret指令逻辑 2025-07-15 12:53:03 +08:00
Lixuanwang
a509dabbf0 [backend]解决了数组访存地址计算问题,加入了参数控制的中端、后端调试选项 2025-07-15 11:32:53 +08:00
rain2133
0d23475aa1 [死代码删除]:保证扩展性、模块化构建死代码删除,包括消除无用store,alloca,load,globalval,mem2reg引入的无用alloca以及reg2mem导致的store-load-store冗余存储 2025-06-25 15:33:25 +08:00
rain2133
b12732f10d 修复分析器逻辑,保证优化遍共享一个分析器(主要是在mem2reg) 2025-06-25 15:30:28 +08:00
rain2133
1e06c5a446 debugging 2025-06-25 14:00:27 +08:00
rain2133
050113d31d 增加Reg2Mem,但是会生成死存储指令,需要死代码删除支持识别死存储指令 2025-06-25 13:17:16 +08:00
rain2133
4fabcc9952 mem2reg流程基本跑通,修复phi函数打印,需要删除调试print 2025-06-25 12:23:59 +08:00
rain2133
bd0b624e87 debugging 2025-06-25 02:22:16 +08:00
rain2133
ac7644f450 添加数据流分析类,实现前向后向分析的模板动作,实现活跃变量分析,基本借鉴学长代码,后续可优化实现 2025-06-24 23:45:43 +08:00
rain2133
3dbb394bc2 初步构建分析器,增加控制流分析,实现支配节点计算,支配树构建,支配边界计算,为后续Mem2reg做准备 2025-06-24 22:39:20 +08:00
rain2133
73dd8eba22 删除IR中关于分析的属性,准备建立分析器 2025-06-24 10:18:29 +08:00
rain2133
10b43fc90d 修复若干bug 2025-06-23 17:04:45 +08:00
rain2133
3d233ff199 基本完成CFG优化(IR修复) 2025-06-23 16:25:52 +08:00
rain2133
568e9af626 IRoptpre 初步构建 2025-06-23 13:17:15 +08:00
rain2133
63fc92dcbd 数组命名修复 2025-06-23 11:35:44 +08:00
rain2133
9d8930f5df fix % repeat in IR print 2025-06-23 00:22:15 +08:00
rain2133
496e2abfb6 构建IR打印器,llvm风格,跑通大部分样例(9/10),待修复 2025-06-22 17:59:19 +08:00