随笔分类 - llvm
llvm相关的一些知识
摘要:Barjan 算法和inline流程 图的一些基本概念: 关联(incident):点为边的端点; 邻接(adjacent):点与点关联同一条边,或边与边关联同一顶点; 子图:图G'的点和边都是图G的子集,则G'为G的子图; 道路:从点v到点u的路径; 简单道路:没有重复边的道路; 回路:起点与终点
阅读全文
摘要:参考资料 https://zhuanlan.zhihu.com/p/395552440
阅读全文
摘要:SIMPLIFY CFG 源码分析 9.0 Some useful command to show Result Opt 工具显示优化先后的IR opt -O2 -print-before-all -print-after-all is_sorted2.ll Opt 运行单独的优化pass opt
阅读全文
摘要:opt -dot-cfg a.ll 生成dot 文件。 dot mian.dot -Tpng -o a.png xdg-open a.png opt -dot-callgraph a.ll
阅读全文
摘要:llvm-share-dominatortree Dominator Tree https://blog.csdn.net/dashuniuniu/article/details/52224882 Def 支配了所有的user 如果每一条从流图的入口结点到结点 n 的路径都经过结点 d, 我们就说
阅读全文
摘要:1,D{n} 的求解 求一个一个流图的所有节点的支配节点的算法 输入:一个流图G,G的节点集合是{N},边的集合是{E} 输出:对于N中的每个节点n,给出D{n},即所有支配节点n的节点集合D{n} 方法: 对于N中所有节点 D{n} = OUT[n] 图1 算法运行过程 D{1} = {1} D{
阅读全文
摘要:LLVM优化一个简单函数 一个优化的、领先的编译器通常被组织为: 一个将源代码翻译为一个中间表示(IR)的前端。 一个目标无关的优化流水线:一系列,它们持续重写IR,以消除低效性以及不能容易翻译为机器码的形式。有时称之为“中端(middle end)”。 一个目标相关的后端,生成汇编代码或机器码。
阅读全文