llvm pass

pass们组合在一起,处理IR

而最后的目标代码生成阶段,会生成另一种MIR(Machine IR)

PassManager管理这些pass

pass处理IR之后会改变分析的情况,这些关于IR的信息由 AnalysisManager处理

1、pass

(1)转换pass

比如我们试图给指针变量加上noalias属性

这里返回的是一个分析

(2)分析pass

分析pass返回的也是分析,但是它不改变IR

也就是不管是分析pass还是转换pass,都要返回一个PreservedAnalyses更新最新的信息。

2、分析工具

Printing Pass pipeline details

clang -O0 -Xclang -disable-O0-optnone -emit-llvm -S test.c

-Xclang是传递想要的参数给前端

-disable-O0-optnone 标志用于在编译时告诉 Clang 或 LLVM 编译器即使在 -O0 优化级别也不要自动为每个函数添加 optnone 属性,允许一定程度的优化发生,尽管这些优化仍然会比其他优化级别如 -O1, -O2, -O3-Os 来得少。

-emit-llvm: 这是告诉编译器生成LLVM中间表示(IR)的选项。LLVM IR是一种高级的、与平台无关的汇编语言,可以被LLVM后端编译为特定目标平台的机器代码。

-S: 这是告诉编译器生成汇编代码的选项。当结合-emit-llvm选项使用时,它将生成LLVM IR的文本表示。

之后对生成的.ll使用如下命令

opt -O2 --disable-output --debug-pass-manager test.ll

综上所述,——debug-pass-manager是一个有用的工具,可以查看Pass管道在某个优化级别上运行的Pass及其顺序。了解这些信息可以让您大致了解pass和分析如何与输入IR交互。】

Printing changes to the IR after each Pass

 opt -O2 --disable-output --print-changed ./test.ll

可以打印出经过pass之后改变的IR

也可以针对指定的函数或者一组特点的pass来看

可以只运行前几个管道

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/334279.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

在线多端口排课教务管理工具:教育机构管理的得力助手

在现代教育中,教务管理是一个复杂而重要的任务。为了简化这一过程,许多在线教务管理工具应运而生。今天,我将向大家介绍一款名为乔拓云的在线多端口排课教务管理工具。 首先,乔拓云是一个功能强大的教务管理系统。它不仅提供了小程…

Python创建线程

Python 提供了 _thread 和 threading 两个模块来支持多线程,其中 _thread 提供低级别的、原始的线程支持,以及一个简单的锁,正如它的名字所暗示的,一般编程不建议使用 thread 模块;而 threading 模块则提供了功能丰富的…

使用C#操作文件:一个实际案例——替换文件中的IP地址

标题: 使用C#操作文件:一个实际案例——替换文件中的IP地址 介绍: 欢迎阅读我的最新博客!今天,我们将探讨如何使用C#来处理一个实际的编程挑战:读取一个配置文件并替换其中的IP地址。这是一个非常常见的…

vue写了debugger谷歌浏览器打开控制台没进断点

vue代码中打了断点,谷歌打开f12进不了断点解决方案如下 1、打开谷歌浏览器控制台,点击设置 2、在 Ignore List 中将“Enable Ignore Listing”勾选去掉,然后就可以正常使用debugger了

Es bulk批量导入数据(1w+以上)

最近在学习es的理论知识以及实际操作,随时更新~ 概要:首先你得有1w条数据的json,然后用java读取json文件导入 一. 创建Json数据 首先我生成1.5w条数据,是为了实践分页查询,用from-size和scroll翻页去实践 生成四个字段…

UG机械制图的基本常识

目前来说工程图就是传递产品信息的工具,所以图纸一定不能出错,因为所有的设计都要转化为生产的输入。 一张完整的工程图应由图框,图素,尺寸标注以及技术要求这四部分组成, 图框包括图纸幅面:A0,A1,A2,A3,…

(2024,VMamba,交叉扫描,线性复杂度,全局感受野,动态权重)视觉状态空间模型

VMamba: Visual State Space Model 公和众和号:EDPJ(进 Q 交流群:922230617 或加 VX:CV_EDPJ 进 V 交流群) 目录 0. 摘要 3. 方法 3.1 基础概念 3.2 2D 选择性扫描 3.3 VMamba 模型 3.3.1 整体架构 3.3.2 VSS…

nvm, node.js, npm, yarn 安装配置

文章目录 nvm 安装node.js 安装npm yarn 配置 nvm 安装 nvm 是一个 node.js 管理工具,可以快捷下载安装使用多个版本的node.js linux 命令行输入: curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bashwget -qO- https…

电子签名实名认证的必要性解析

电子签名是确保电子文件真实性和完整性的重要手段,而实名认证则是保证电子签名有效性的必要条件。在电子签名过程中,实名认证的作用主要体现在以下几个方面: 确认身份:实名认证能够确认签署者的真实身份,防止冒签、代…

SL1581降压恒压芯片 4V至30V降5V输出 电流2.4A 电路简单

SL1581降压恒压芯片是一款非常实用的电源管理芯片,它能够在4V至30V的输入电压范围内实现5V的稳定输出,同时最大输出电流可达2.4A。相比传统的线性降压电源,SL1581采用了开关电源的原理,因此其电路更加简单、高效和可靠。 在电路设…

决策树、随机森林可视化

分享一个Python可视化工具pybaobabdt,轻松对决策树、随机森林可视化,例如, 图怎么看:每一种颜色代表一个class,link的宽度表示从一个节点流向另一个节点的items数量。 安装 pip install pybaobabdt pip install pygra…

ESC云服务器使用

购买云服务器 选择CPU,内存,选择硬盘大小,选择系统购买。 我买的2C4G40G,用来使用docker部署应用。1个月费用100多点。 购买后,在控制台可以看到实例 远程连接 阿里云客户端 下载客户端,在控制台需要先创…

WPF入门到跪下 第十一章 Prism(一)数据处理

官网:https://primslibrary.com 源码地址:https://guthub.com/PrismLibrary/prism Prism是由微软发布、维护的开源框架,提供了一组设计模式的实现,有助于编写结构良好的且可维护的XAML应用程序,包括MVVM、依赖注入、命…

Android 拍照以及相册中选择(适配高版本)————上传头像并裁剪(一)

前言 在项目研发中,相信大家都遇到过给用户增加头像照片的需求。 随着手机版本的不断更新,android 8、android 9、android 10、android 12、android 13、鸿蒙系统等等;遇到这个功能需求,大家肯定会想,“这还不好写&…

一键AI智能改写,自动修改文章效率高

在当今信息爆炸的时代,写作成为了人们日常生活和工作中不可或缺的一部分。不论是学生写作业,还是职场人士起草报告,都需要投入大量的时间和精力来构思和修改文章。然而,随着科技的不断进步,一项新的技术正在改变着写作…

HTML111111111

在线编辑器 在线 HTML 空元素 没有内容的 HTML 元素被称为空元素。空元素是在开始标签中关闭的。 即使 在所有浏览器中都是有效的,但使用 其实是更长远的保障。 HTML 水平线 标签在 HTML 页面中创建水平线。 hr 元素可用于分隔内容。 HTML 折行 如果您希望…

免费的爬虫软件【2024最新】

在国际市场竞争日益激烈的背景下,国外网站的SEO排名直接关系到网站在搜索引擎中的曝光度和用户点击量。良好的SEO排名能够带来更多的有针对性的流量,提升网站的知名度和竞争力。 二、国外网站SEO排名的三种方法 关键词优化: 关键词优化是SEO…

Java基础面试题-2day

面向对象 创建一个对象用什么运算符,对象实体和对象引用有什么不同? 创建对象使用new String A new String(); A即为对象引用,通过new运算符,创建String()类型的对象实体。 对象引用的存储位置在栈内存 对象实体的存储位置在堆…

分布式事务Seata实战-AT模式(注册中心为Eureka)

大致记录Seata的AT模式下创建项目过程中需要注意的点和可能遇到的问题。 本项目是以官网的给的示例(即下图)进行创建的,以Eureka为注册中心。 官网:Seata AT 模式 | Apache Seata™ 官方代码示例: 快速启动 | Apac…