Commit Graph

310 Commits

Author SHA1 Message Date
rain2133
c4c91412d1 [midend]修改一点逻辑和注释,删除无用文件 2025-08-08 15:31:35 +08:00
rain2133
f17e44f8d4 [midend-Alias]针对sysy语言设计了保守和激进的别名优化策略,设计了通过接口设置选项,后续需要验证。保留了一些激进策略接口置空待后续增加。 2025-08-08 15:08:49 +08:00
rain2133
a406e44df3 [midend-Alias]应用别名分析结果,sccp现在能简单传播数组元素了 2025-08-08 02:12:32 +08:00
rain2133
b1a46b7d58 [midend-LoopAnalysis]为项目添加别名分析遍,副作用分析遍,循环分析遍,循环特征分析遍 2025-08-08 00:56:50 +08:00
rain2133
bd02f5f1eb [midend-LoopAnalysis]为phi指令添加新的方法供外部遍历(目前不是顺序遍历) 2025-08-08 00:55:01 +08:00
rain2133
f083e38615 [midend-Loop]循环分析构建,增加很多统计方法和循环信息方法 2025-08-06 22:29:39 +08:00
rain2133
ef9d7c4d03 [midend-LoopAnalysis]增加维护循环层级的逻辑,修改父子循环关系求解的逻辑。 2025-08-03 15:22:18 +08:00
rain2133
1c7c85dd2f Merge commit 'f879a0f521e3033d3f928a5976ac095af6905942' into midend-LoopAnalysis 2025-08-03 14:30:32 +08:00
Lixuanwang
f879a0f521 [midend]修复了后端不适配中端全局变量定义的问题 2025-08-02 22:06:37 +08:00
rain2133
aa7f2bb0f5 [midend]loop分析构建 2025-08-02 17:42:43 +08:00
rain2133
bfe218be07 [midend]非全0初始化数组情况下,检查0初始值个数,超过阈值(目前为16)则生成menset减少大量store操作 2025-08-02 02:33:25 +08:00
rain2133
e48cddab9f [midend]修复多维数组维度信息的计算值(理论上计算结果一定是常量),TODO:修复类似问题 2025-08-01 19:19:05 +08:00
rain2133
aef10b48e8 [midend]删除前驱后继移除时不存在的检查,phi增加llvm风格接口,重构CFGOpt特别是空块删除的逻辑(待验证) 2025-08-01 18:34:43 +08:00
rain2133
a0b69f20fb [midend]合并了SCCP和backend,修复了支配树的错误求解,修复了Mem2Reg的重命名alloca的栈管理 2025-08-01 15:18:33 +08:00
rain2133
999f2c6615 Merge remote-tracking branch 'origin/backend' into midend 2025-08-01 14:06:20 +08:00
rain2133
1eedb55ca0 Merge branch 'midend-SCCP' into midend 2025-08-01 14:02:14 +08:00
rain2133
c268191826 [midend-SCCP]修改BaiscBlock的析构逻辑,将CFG修改的职责交给优化遍,注释Mem2Reg的调试信息。 2025-08-01 01:44:33 +08:00
rain2133
0f1fcc835d [midend-SCCP]删除User的析构函数,usedelete增加逻辑通知inst所使用的value移除对应的use关系(一般在这之前会替换使用inst的uses为其他值),TODO:仍然存在bug需要调试 2025-07-31 22:32:04 +08:00
rain2133
c5af4f1c49 [midend-SCCP]bug修复,增加不可达指令(理论来说后端不会出现这条指令,只是为了IR完整性添加),添加相关方法,phi指令方法修复;目前能够跑完所有优化,但是User的析构函数重定义导致全局析构不能正确完成,需要修复 2025-07-31 22:03:35 +08:00
rain2133
9a53e1b917 [midend]适应上一次commit修改已有优化遍中相关指令删除的代码 2025-07-31 21:10:59 +08:00
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
35b421b60b [midend]修改原因同上一次commit 2025-07-31 19:38:43 +08:00
rain2133
f3f603a032 [midend]消除冗余维度信息记录,适配IR生成器,TODO:其他优化遍生成指令修改,或者后端的访问 2025-07-31 19:36:39 +08:00
rain2133
de0f8422e9 [midend-SCCP]没有编译报错但是Segmemtation falut 2025-07-31 17:29:34 +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
Lixuanwang
e8699d6d25 [backend]更新脚本和库以支持性能测试用例 2025-07-31 16:42:41 +08:00
Lixuanwang
0727d5a6d8 Merge commit 'fc7afdbb359e71e799ea50ac71ac21ce233aeaac' into backend 2025-07-31 15:01:06 +08:00
rain2133
fc7afdbb35 [midend]修复错误的RelExp类型转换 2025-07-31 13:55:59 +08:00
Lixuanwang
bfe2b248cd Merge branch 'backend-float' into backend 2025-07-31 12:16:11 +08:00
Lixuanwang
6d60522ce2 Merge branch 'midend' into backend-float 2025-07-31 12:14:38 +08:00
807fb3f560 [backend]微优化与可读性维护不影响原逻辑和分数 2025-07-31 11:23:17 +08:00
rain2133
82288464c3 [midend]修复常量变量的声明逻辑同变量声明,重构表达式生成逻辑(将中缀表达式转换为后缀表达式判断类型提升后再进行统一类型转换和计算)。运行脚本通过率[117/140]。 2025-07-31 02:47:39 +08:00
rain2133
7e8b90ffd4 [midend]修改全局变量,全局常量类,提供维度访问方法,消除维度信息(记录在Type中),createItoFInst命名修复,增加打印全局常量。 2025-07-31 02:45:40 +08:00
Lixuanwang
b3cf3cba29 [backend]修复了多参数传递的错误 2025-07-30 22:16:37 +08:00
Lixuanwang
03b62b138f [backend]修复了一个栈管理问题 2025-07-30 20:40:56 +08:00
Lixuanwang
8e94f89931 Merge branch 'midend' into backend 2025-07-30 18:27:42 +08:00
Lixuanwang
b388dc4542 Merge branch 'backend-float' into backend 2025-07-30 18:26:06 +08:00
Lixuanwang
48b0aec6c3 [midend][backend]修复了全局常量数组的访问错误 2025-07-30 18:23:56 +08:00
Lixuanwang
1fb5cd398d [backend]修复了多参数传递的问题 2025-07-30 17:58:39 +08:00
rain2133
206a0af424 [midend-SCCP]暂存1 2025-07-30 16:33:56 +08:00
Lixuanwang
877a0f5dc2 [backend-float]修复部分问题 2025-07-30 16:00:02 +08:00
a3c4d5a2b8 [Optimize]对PreRA指令调度进行优化 2025-07-30 15:27:23 +08:00
Lixuanwang
39c13c46ec Merge branch 'midend' into backend-float 2025-07-30 15:10:38 +08:00
Lixuanwang
dd38bdc133 [backend]引入浮点数支持,但目前寄存器分配存在问题 2025-07-30 15:07:29 +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