LLVM每日谈之八 PASS例子分析

作者: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进行了注册之后,才可以进行使用。

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

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值