在该选做实验中,请自行选择优化Pass对IR进行优化,要求至少选择2个不同优化Pass。提交要求见提交要求小节
请自行编写优化Pass
并添加至PassMgr
中以对IR进行优化,要求至少编写实现2种不同的优化。
每添加一个Pass,需要在../include/Optimize/和../src/Optimize/中分别添加相应的.h
和.cpp
文件,并在CMakeLists.txt中添加相应的cpp文件名。
为了说明优化效果,请在../test/student目录下添加测试程序.sy
,并编写评测脚本../test/student/eval.sh。该脚本将会在bash环境下执行。该测试脚本可驱动其他脚本,其他脚本也请放置在../test/student/目录下。请在脚本中自行添加在评测时需要用到的环境变量。脚本中应采用相对路径,避免采用绝对路径,因为提交的项目可能置于评测机的不同路径下。
学生编写的评测脚本运行时向stdout的输出将被收集作为待助教评判的内容。
请在opt.md中说明如下内容
- 你做了哪些优化,为什么选择这些优化
- 优化的设计思想
- 代码实现上的结构考虑
- 实现关键点分析
- 优化前后的性能评测分析
- 实验中遇到的困难(可选)
- 其他你认为比较重要的点或者亮点(可选)
- 参考文献
除此之外,请说明添加的源代码文件位置、测试程序(包括输入数据、输出数据)的位置、评测脚本的内容和环境预设要求。
- ../include/Optimize/和../src/Optimize/目录下优化Pass的源代码
- 在../test/student目录下的优化效果评测脚本
eval.sh
和其他必要的脚本 - ../test/student目录下的测试程序、输入数据、输出数据
- 当前目录下的报告opt.md
某些优化组合起来效果可能更好;某些优化可能只执行一次效果并不理想。可以灵活使用PassMgr
来管理各个Pass的执行。
在必做部分有代码检查器的编写,可以进一步针对特定的优化做相应的检查,防止优化对数据结构的破坏。可以将该部分内容补充到report.md中。