LLVM--如何在代码中调用遍(Pass)
来源:互联网 发布:mac虚拟机pd12破解版 编辑:程序博客网 时间:2024/05/16 17:41
本文介绍三种调用遍(Pass)的方法
一、直接调用
如果要调用的遍没有依赖其他的遍,我们可以直接调用,如可以使用如下方法调用函数遍(FunctionPass) DominatorTree。
DominatorTree*T=new DominatorTree(); T->runOnFunction(*F); T->print(errs());
二、使用遍管理器
如果我们要调用的遍中依赖其他遍,我们可以使用PassManager或者FunctionPassManager调用。
如我们可以使用PassManager调用模块编,使用FunctionPassManager调用函数遍和基本块(basic block pass)。
具体见include/llvm/PassManager.h
Module* M;...PassManager pm; pm.add(new ModulePass1);pm.run(*M)
三、使用getAnalysisUsage
调用在llvm中已经注册的遍。但是我们的编写的类必须也是一个遍。
namespace { struct Mypass : public FunctionPass { static char ID; Mypass() : FunctionPass(ID) { } virtual void getAnalysisUsage(AnalysisUsage &AU) const { AU.addRequired<DominatorTree>(); } virtual bool runOnFunction(Function &F) { DominatorTree& DT = getAnalysis<DominatorTree>(F); return false; } };}char Mypass::ID = 0;static RegisterPass<Mypass> X("mypass", "My test analysis", true, true);
四、参考
http://stackoverflow.com/questions/14799127/llvm-pass-segfaults-on-getanalysisdominatortree 0 0
- LLVM--如何在代码中调用遍(Pass)
- 在LLVM中编写pass的详细教程(1)
- 在LLVM中编写pass的详细教程(2)
- 在LLVM中编写pass的详细教程(3)
- 在LLVM中编写pass的详细教程(4)
- 如何在VS2010中调用汇编代码
- 如何在c++中调用java代码
- LLVM pass manager debugging
- LLVM Pass 初探
- CMake LLVM Pass配置
- 【LLVM】MyHello Pass
- LLVM之PASS初体验
- 如何在代码中调用“文件打开方式对话框”?
- 如何在C#代码中调用exe执行文件?
- 如何在C#代码中调用exe执行文件
- 如何在C++中调用C的代码
- 如何在C++中调用C的代码
- 如何在C++中调用C的代码
- Android listview与adapter用法
- Varnish and nginx setup
- Oracle数据库REMOTE_LOGIN_PASSWORDFILE参数的设置
- [RabbitMQ+Python入门经典] 兔子和兔子窝
- Thinking in Java 接口
- LLVM--如何在代码中调用遍(Pass)
- Android VNC Server
- 1021:恶搞指数 分form sdjzuacm
- cocos2d-x在android下添加插屏广告 (转)
- linux怎么运行.SH文件
- HDU2014
- Topic Model
- 对于CSS中的1px 与1em的区别
- 关于Factory, Abstract Factory, Factory Method, 和Builder模式