![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
llvm
文章平均质量分 93
小蓝人敌法
这个作者很懒,什么都没留下…
展开
-
给llvm添加自定义Pass
背景最近在看ollvm这个东西的源码,于是乎想搞个自定义Pass玩玩看,按照网上的教程一顿倒腾发现一个坑点,那就是你编写的Pass只能通过opt这个工具来运行 我想要的效果是,我的Pass集成进去之后,当我调用clang进行编译的时候,能够自动的调用我的Pass,不要让我再调用opt工具爬坑过程 环境准备 参照ollvm源码的目录结构,在lib/Transforms/ 目录下建立...原创 2019-10-22 15:49:14 · 1720 阅读 · 1 评论 -
ollvm源码分析 - Pass之Flattening
概述承接上一篇Pass之SplitBasicBlock源码分析,这一篇文章继续分析ollvm的核心Pass Flattening, 也就是代码流程平坦化 为了描述的完整性,引用一段SplitBasicBlock分析文章中的一段话来说一下什么流程平坦化 平坦化一句话概括就是重组原始代码执行流程,把原本易于阅读的代码流程重组成一个switch case形式的代码执行流程,大大降低代码的直观...原创 2019-10-21 16:21:19 · 816 阅读 · 1 评论 -
ollvm源码分析 - Pass之Substitution
ollvm源码分析 - Pass之Substitution概述ollvm这个项目的Substitution这个Pass源码比较简单,功能也很明确,那就是进行操作符替换,那要替换哪些操作符呢?我直接抛出来吧,ollvm中替换了 加 减 与 或 异或这几种 那到底怎么替换的呢?直接抛出总结的结果吧 加法拆分 a = b + c => a = b - (-c) a =...原创 2019-10-18 16:14:46 · 784 阅读 · 0 评论