文档章节

LLVM每日谈之八 PASS例子分析

snsn1984
 snsn1984
发布于 2013/02/28 11:20
字数 331
阅读 419
收藏 1

作者:snsn1984

之前已经 简单的介绍过怎么样去运行PASS(地址: http://blog.csdn.net/snsn1984/article/details/8160696),并且以hello PASS为例进行了运行,可以输出hello 和函数的名字。下面咱们继续进一步的分析一下这个PASS的具体内容:

http://llvm.org/docs/doxygen/html/Hello_8cpp_source.html

这里就是之前运行过的pass的源码,可以看出来,输入的主要是在下面的代码中实现的

00032 errs() << "Hello: ";
00033 errs().write_escaped(F.getName()) << '\n';
这里的首先输出了:Hello,然后通过LLVM::Function类的getName()的成员函数取得了函数的名字进行输出。这两行代码是在
virtual bool runOnFunction(Function &F)
这个函数里面的,而这个函数是结构体Hello的成员函数。并且我们也可以通过
struct Hello : public FunctionPass
可以知道,Hello是继承了类FunctionPass.
virtual bool runOnFunction(Function &F)
其实就是FunctionPass的一个虚函数,这里对它进行了实现。一个FunctionPass的子类要想做一些实际的工作,就必须对这个虚函数进行实现。
00040 static RegisterPass<Hello> X("hello", "Hello World Pass");
这个语句的主要意思是对hello PASS进行注册,只有PASS进行了注册之后,才可以进行使用。

--------------------------------------------------转载请注明出处------------------------------------------------

© 著作权归作者所有

snsn1984
粉丝 94
博文 32
码字总数 45245
作品 0
长春
项目经理
私信 提问
LLVM每日谈之十三 使用LLVM自带的PASS

作者:snsn1984 PS:最近一段时间,投入在LLVM上的时间有些减少。差点把对它的研究断掉,今天开始继续。对LLVM的研究需要很长一段时间的坚持不懈才可以彻底搞明白。 前面已经介绍过如何写自己...

snsn1984
2013/06/13
216
0
LLVM每日谈之十二 LLVM的源码分析之Pass相关

作者:snsn1984 题记:在学习LLVM的过程中,要想学的更加深入,掌握更多的技能,LLVM的源码是必须要读的,但是在这么多的源码中,从哪里下手?很容易让人找不到头脑,本文这里就先拿出几个P...

snsn1984
2013/06/03
325
0
llvm每日谈之四 Pass初探

作者:snsn1984 LLVM 的Pass框架是LLVM系统的一个很重要的部分。每个Pass都是做优化或者转变的工作,LLVM的优化和转换工作就是由很多个Pass来一起完成的。 所 以按照我的理解,Pass就是LLVM系...

snsn1984
2012/11/08
954
0
LLVM每日谈之九 谈LLVM的学习

作者:snsn1984 从接触LLVM编译器到现在,也有多半年时间了,在这多半年的时间里,也花了不少精力在上面。现在回过头来总结一下在LLVM的学习过程中的一些感悟。(注:这里对LLVM的学习,不是...

snsn1984
2013/02/28
523
1
七天LLVM零基础入门(Linux版本)------第四天

作者:snsn1984 第一步:复习 http://llvm.org/docs/LangRef.html) 编程指引文档 (http://llvm.org/docs/ProgrammersManual.html) 这两篇文档是LLVM的重中之重,希望学习的时候认真一点,...

snsn1984
2013/02/27
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

Archiva 不小心删掉了管理员权限怎么办

Archiva 的界面和 UI 比较容易出问题。 在添加用户和为用户进行权限修改的时候,不小心连 admin 这个用户的权限都删掉了。 这个时候应该如何恢复 admin 这个用户的权限? 这个时候你可以尝试...

honeymoose
38分钟前
5
0
Java8新特性之空指针异常的克星Optional类

Java8新特性系列我们已经介绍了Stream、Lambda表达式、DateTime日期时间处理,最后以“NullPointerException” 的克星Optional类的讲解来收尾。 背景 作为开发人员每天与NullPointerExceptio...

程序新视界
51分钟前
4
0
OSChina 周四乱弹 —— 福布斯终身秃头奖

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @宇辰OSC :分享如是我闻的单曲《地藏经上卷》: 如是我闻#今日歌曲推荐# 《地藏经上卷》- 如是我闻 手机党少年们想听歌,请使劲儿戳(这里) ...

小小编辑
54分钟前
210
8
Mybatis Plus删除

/** @author beth @data 2019-10-17 00:30 */ @RunWith(SpringRunner.class) @SpringBootTest public class DeleteTest { @Autowired private UserInfoMapper userInfoMapper; /** 根据id删除......

一个yuanbeth
今天
6
0
总结

一、设计模式 简单工厂:一个简单而且比较杂的工厂,可以创建任何对象给你 复杂工厂:先创建一种基础类型的工厂接口,然后各自集成实现这个接口,但是每个工厂都是这个基础类的扩展分类,spr...

BobwithB
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部