运行LLVM Pass的两种方式

  • 一、通过opt -load mypass.so -mypass code.bc
  • 二、通过clang -Xclang -load -Xclang mypass.so code.c

一、通过opt -load mypass.so -mypass code.bc

核心代码

//引入的头文件
#include "MyHello.h"namespace mytest{char MyHello::ID = 0;RegisterPass<MyHello> X("myhello", "MyHello World Pass");bool MyHello::runOnFunction(Function &F){errs() << "Hello: ";errs() << F.getName() << '\n';return false;}
}

$ clang -c -emit-llvm code.c
$ opt -load myhello.so -myhello code.bc

二、通过clang -Xclang -load -Xclang mypass.so code.c

#include "llvm/Pass.h"
#include "llvm/IR/Function.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/IR/LegacyPassManager.h"
#include "llvm/Transforms/IPO/PassManagerBuilder.h"
using namespace llvm;namespace {struct SkeletonPass : public FunctionPass {static char ID;SkeletonPass() : FunctionPass(ID) {}virtual bool runOnFunction(Function &F) {errs() << "I saw a function called " << F.getName() << "!\n";return false;}};
}char SkeletonPass::ID = 0;// Automatically enable the pass.
// http://adriansampson.net/blog/clangpass.html
static void registerSkeletonPass(const PassManagerBuilder &,legacy::PassManagerBase &PM) {PM.add(new SkeletonPass());
}
static RegisterStandardPassesRegisterMyPass(PassManagerBuilder::EP_EarlyAsPossible,registerSkeletonPass);

$ clang -Xclang -load -Xclang mypass.so code.c

方式2参照https://www.cs.cornell.edu/~asampson/blog/clangpass.html

运行LLVM Pass的两种方式相关推荐

  1. 基础知识:编程语言介绍、Python介绍、Python解释器安装、运行Python解释器的两种方式、变量、数据类型基本使用

    阅读目录 今日学习内容: 1.编程语言的介绍 2.Python介绍 3.安装Python解释器(多版本共存) 4.运行Python解释器程序两种方式.(交互式与命令行式)(♥♥♥♥♥) 5.变量(♥♥ ...

  2. 周一02.3运行python程序的两种方式

    一.运行python程序的两种方式 方法一:交互式:                      优点:输入一行代码立刻返回结果                       缺点:无法永久保存代码 方法 ...

  3. Linux下编译、链接、加载运行C++ OpenCV的两种方式及常见问题的解决

    Linux下编译.链接.加载运行C++ OpenCV的两种方式及常见问题的解决 在Linux下安装完OpenCV C++之后(还没有安装的读者请参考Ubuntu 18.04 安装OpenCV C++) ...

  4. python有两个运行程序分别是什么_运行python程序的两种方式

    [单选题]I wonder why ________ are so interested in action movies. [单选题]项目经理的职责不包括以下哪项内容 ? [简答题]结合项目的特点和 ...

  5. python打开方式包括_运行Python程序有两种方式:________和________。

    运行Python程序有两种方式:________和________. 答: 交互式 文件式 自觉的人,心目中有一张蓝图,人生理想.但是不知道世界的游戏规则 答:× 山水画的鉴赏方法? 答:1.首先看风 ...

  6. 运行python程序的两种方式交互式和文件式_Python基础知识2

    运行Python程序的两种方式 小白学习,如有错误欢迎指点 一.每位小白写的第一个Python程序 1.运行Python程序的两种方式 1.1 交互式模式(即时对话) 打开cmd,打开Python解释 ...

  7. 运行python程序的两种方式交互式和文件式_执行Python程序的两种方式

    交互式(了解) 交互式环境下,敲完一条命令按下enter键马上能看到结果,调试程序方便.程序无法永久保存,关掉cmd窗口数据就消失了. 命令行式(了解) 打开文本编辑器,在文本编辑器中写入一串字符. ...

  8. 运行python程序的两种方式交互式和文件式_教你如何编写、保存与运行 Python 程序...

    第一步 接下来我们将看见如何在 Python 中运行一个传统的"Hello World"程序.Python教程本章将会教你如何编写.保存与运行 Python 程序. 通过 Pyth ...

  9. go项目部署:docker部署go项目直接运行二进制文件部署(两种方式进行部署)

    go项目部署:docker部署go项目&直接运行二进制文件部署 引言:之前断断续续的接触到项目部署,一直没有详细的了解部署,于是最近就好好的专研一下项目的部署,前期准备:一个自己或者别人的具有 ...

最新文章

  1. 【通俗理解线性代数】 -- 理解行列式
  2. 用于Spring应用程序的Gradle原型
  3. mybatis的动态sql及模糊查询
  4. 「leetcode」383. 赎金信:哈希表的经典题目
  5. 通过pxe远程安装linux,通过PXE远程安装Linux系统
  6. Linux系统上QQ闪退的问题
  7. 2017java考证_Sun认证Java程序员考试试题
  8. 主机域名中什么叫计算机名,主机域名中的主机名是什么概念
  9. 不要抹去 就让它在脸上自由奔淌吧
  10. 山西计算机专业三本大学排名,2021山西三本院校排名 最新大学排行榜
  11. 内存泄漏导致的浏览器崩溃
  12. 如何控制H5 video 只能后退(向后拖动)不能快进(向前拖动)
  13. 实现可点击的幸运大转盘
  14. 南宁发展重点向南 五象湖标志性建筑“五象塔”落成
  15. hdu2018 母牛的故事(模拟)
  16. 莱布尼兹是微积分奠基人吗?
  17. 释放C盘 清理垃圾的两个命令 (仅记录)
  18. 下一清分日期是几年前_驾驶证清分日期是什么意思?清分日期包含当天吗
  19. eDonkey (eD2k) vs. BitTorrent (BT)
  20. 舟山惠普服务器维修电话,【舟山HP(惠普)服务器配件】舟山HP(惠普)服务器配件报价及图片大全-列表版-ZOL中关村在线...

热门文章

  1. Virtual Box 虚拟机响应慢解决办法
  2. Mybatis中按照年、季度、月、日、最近七天,查询
  3. c++多态之 运行时多态与编译时多态
  4. 项目预算包括管理储备__成本基准只包括应急储备
  5. 中间件-ES-中文拼音多音字插件
  6. 平头哥RVB2601开发板实现LED彩灯
  7. solidworks画螺纹
  8. solidworks怎么画螺纹
  9. Unity安卓打包设置项目名称为中文名
  10. 普元ESB服务器迁移方案总结