当前位置:   article > 正文

LLVM 编译器学习笔记之二十九 -- 控制流程CFG_llvm getterminator()

llvm getterminator()

1、查看控制流图的方法

a) 对于中间表达的 *.ll 文件

  1. opt -dot-cfg before-indvars.ll
  2. dot -Tpng .p.dot -o tmp.png

b) 在调试过程中,可以使用F.viewCFG()接口先获取相应的*.dot文件,之后雷同

    参考:自动向量化调试过程查看CFG流图_CanaanLeeN的博客-CSDN博客

2、dominate 信息可以根据CFG计算获取,但是重新计算比较耗时间。如果非常确定的一些变更,也可以直接使用接口addNewBlock及changeImmediateDominator之类进行微调, 可以通过DT->viewGraph ()接口获取dominate 信息, 参考updateDominatorTree

  1. a) addNewBlock 一般对一个不存在于DTNode,新增添加
  2. b) changeImmediateDominator 一般作用于已经在DT中的边,进行变更调整

参考https://www.youtube.com/watch?v=bNV18Wy-J0U

3、比较指令对应signed/unsigned有不同的名称,参考https://web.sonoma.edu/users/f/farahman/sonoma/courses/es310/310_arm/lectures/Chapter_6_BRANCH_ARM.pdf

4、Condition Codes 和 SVE Predicate condition flags 有不同的含义,注意区分,参考https://www.stonybrook.edu/commcms/ookami/support/_docs/Arm_SVE_reduced.pdf

5、llvm中使用接口IsSameAsFreshTree确认更新前后tree结构的一致性,可以使用p DT->print(errs())接口打印当前的状态,需要配置set overload-resolution off如果遇到

注意:p DT->verify (DominatorTree::VerificationLevel::Fast) 中Freshly computed tree:为DT->changeImmediateDominator调整前的形态,而Current:是调整后的状态

参考emitMinimumIterationCountCheck,其中ReplaceInstWithInst能调整Freshly computed tree对应的dominate信息,其本质是调整BB->->getTerminator()的跳转指令

6、接口Create(LoopExitBlock, OldTerm)在OldTerm前插入一条指令的效果

7、需要注意SimplifyCFGOpt::simplifySwitch和SimplifyCFGOpt::simplifyCondBranch优化的策略,比如simplifySwitch将swich优化为branch, 然后branch又调整回Switch,将导致编译死循环,因此需要同时对这两个函数进行策略调整。参考⚙ D87056 [POC] SVE/SVE2 implementation (LLVM 9)

 8、在SimplifyCFGOpt::simplifyOnce->simplifySwitch中可以调整控制流,在SinkCommon也可以Sink指令

9、在 SinkCommonCodeFromPredecessors->canSinkInstructions中需要判断两个指令的操作数是否一致I->isSameOperationAs(I0)

10、在SwitchToLookupTable创建跳转表时,会创建default分支的处理SI->getDefaultDest()

11、选项-passes='simplifycfg<switch-to-lookup>‘ 等效于-passes=simplifycfg --switch-to-lookup

12、在case仅缺一个值时,使用default分支填补,以便生成一个查询表,参考PR76669

13、cmov vs branch的总结及优化:https://discourse.llvm.org/t/rfc-cmov-vs-branch-optimization/6040

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/331228?site
推荐阅读
相关标签
  

闽ICP备14008679号