运行LLVM Pass的两种方式
运行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的两种方式相关推荐
- 基础知识:编程语言介绍、Python介绍、Python解释器安装、运行Python解释器的两种方式、变量、数据类型基本使用
阅读目录 今日学习内容: 1.编程语言的介绍 2.Python介绍 3.安装Python解释器(多版本共存) 4.运行Python解释器程序两种方式.(交互式与命令行式)(♥♥♥♥♥) 5.变量(♥♥ ...
- 周一02.3运行python程序的两种方式
一.运行python程序的两种方式 方法一:交互式: 优点:输入一行代码立刻返回结果 缺点:无法永久保存代码 方法 ...
- Linux下编译、链接、加载运行C++ OpenCV的两种方式及常见问题的解决
Linux下编译.链接.加载运行C++ OpenCV的两种方式及常见问题的解决 在Linux下安装完OpenCV C++之后(还没有安装的读者请参考Ubuntu 18.04 安装OpenCV C++) ...
- python有两个运行程序分别是什么_运行python程序的两种方式
[单选题]I wonder why ________ are so interested in action movies. [单选题]项目经理的职责不包括以下哪项内容 ? [简答题]结合项目的特点和 ...
- python打开方式包括_运行Python程序有两种方式:________和________。
运行Python程序有两种方式:________和________. 答: 交互式 文件式 自觉的人,心目中有一张蓝图,人生理想.但是不知道世界的游戏规则 答:× 山水画的鉴赏方法? 答:1.首先看风 ...
- 运行python程序的两种方式交互式和文件式_Python基础知识2
运行Python程序的两种方式 小白学习,如有错误欢迎指点 一.每位小白写的第一个Python程序 1.运行Python程序的两种方式 1.1 交互式模式(即时对话) 打开cmd,打开Python解释 ...
- 运行python程序的两种方式交互式和文件式_执行Python程序的两种方式
交互式(了解) 交互式环境下,敲完一条命令按下enter键马上能看到结果,调试程序方便.程序无法永久保存,关掉cmd窗口数据就消失了. 命令行式(了解) 打开文本编辑器,在文本编辑器中写入一串字符. ...
- 运行python程序的两种方式交互式和文件式_教你如何编写、保存与运行 Python 程序...
第一步 接下来我们将看见如何在 Python 中运行一个传统的"Hello World"程序.Python教程本章将会教你如何编写.保存与运行 Python 程序. 通过 Pyth ...
- go项目部署:docker部署go项目直接运行二进制文件部署(两种方式进行部署)
go项目部署:docker部署go项目&直接运行二进制文件部署 引言:之前断断续续的接触到项目部署,一直没有详细的了解部署,于是最近就好好的专研一下项目的部署,前期准备:一个自己或者别人的具有 ...
最新文章
- 【通俗理解线性代数】 -- 理解行列式
- 用于Spring应用程序的Gradle原型
- mybatis的动态sql及模糊查询
- 「leetcode」383. 赎金信:哈希表的经典题目
- 通过pxe远程安装linux,通过PXE远程安装Linux系统
- Linux系统上QQ闪退的问题
- 2017java考证_Sun认证Java程序员考试试题
- 主机域名中什么叫计算机名,主机域名中的主机名是什么概念
- 不要抹去 就让它在脸上自由奔淌吧
- 山西计算机专业三本大学排名,2021山西三本院校排名 最新大学排行榜
- 内存泄漏导致的浏览器崩溃
- 如何控制H5 video 只能后退(向后拖动)不能快进(向前拖动)
- 实现可点击的幸运大转盘
- 南宁发展重点向南 五象湖标志性建筑“五象塔”落成
- hdu2018 母牛的故事(模拟)
- 莱布尼兹是微积分奠基人吗?
- 释放C盘 清理垃圾的两个命令 (仅记录)
- 下一清分日期是几年前_驾驶证清分日期是什么意思?清分日期包含当天吗
- eDonkey (eD2k) vs. BitTorrent (BT)
- 舟山惠普服务器维修电话,【舟山HP(惠普)服务器配件】舟山HP(惠普)服务器配件报价及图片大全-列表版-ZOL中关村在线...