LLVM 执行哪些优化?

2024-04-01

我想具体了解一下LLVM的各个优化级别分别对应什么。

也就是说,我想知道当我使用 llvm (或 clang 或 opt)的“-0x”选项时,哪些优化过程是准确执行的(在前端之外)以及按什么顺序执行。 相应工具的“man”没有提供关于此事的太多信息(与 gcc 的相反)。

我知道这个有用的页面:http://llvm.org/docs/Passes.html http://llvm.org/docs/Passes.html,但它不提供有关“-Ox”选项的任何信息。 我正在寻找一些调试或详细选项(特别是使用“opt --help”中的信息),但我找不到任何有用的选项。

作为补充,通过解析代码,我注意到所有各种 LLVM 工具以及 clang 使用不同的驱动程序,以自己的方式解析选项。所有这些驱动程序都与“-Ox”选项相似吗?

Edit:我找到了“opt”工具的选项“-debug-pass=Arguments”,它为选项“O1”提供了以下输出:

Pass Arguments:  -targetdata -no-aa -tbaa -targetlibinfo -basicaa -simplifycfg -domtree -scalarrepl -early-cse -lower-expect
Pass Arguments:  -targetlibinfo -targetdata -no-aa -tbaa -basicaa -globalopt -ipsccp -deadargelim -instcombine -simplifycfg -basiccg -prune-eh -always-inline -functionattrs -scalarrepl-ssa -domtree -early-cse -simplify-libcalls -lazy-value-info -jump-threading -correlated-propagation -simplifycfg -instcombine -tailcallelim -simplifycfg -reassociate -domtree -loops -loop-simplify -lcssa -loop-rotate -licm -lcssa -loop-unswitch -instcombine -scalar-evolution -loop-simplify -lcssa -iv-users -indvars -loop-idiom -loop-deletion -loop-unroll -memdep -memcpyopt -sccp -instcombine -lazy-value-info -jump-threading -correlated-propagation -domtree -memdep -dse -adce -simplifycfg -instcombine -strip-dead-prototypes -preverify -domtree -verify

这与我想要的很接近,但仍然有两个问题:

  • 为什么有两个列表?

  • 其他工具有类似的选项吗,尤其是“clang”? (根据我的测试,“-debug-pass=Arguments”不适用于 clang)

Edit:工具“opt”的选项“-debug-pass=Structure”提供了更多用户友好的数据(来自http://llvm.org/docs/WritingAnLLVMPass.html http://llvm.org/docs/WritingAnLLVMPass.html)


为什么有两个列表?

功能和模块通道有自己的通道管理器,因此单独打印。

其他工具有类似的选项吗,尤其是“clang”

使用 clang,您可以使用 -mllvm -debug-pass=Arguments。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LLVM 执行哪些优化? 的相关文章

  • 为什么 .NET/C# 不优化尾调用递归?

    I found 这个问题 https stackoverflow com questions 340762 which languages support tail recursion optimization关于哪些语言优化尾递归 为什么
  • MVC 4 中的运行时动态捆绑和缩小

    我想知道是否有人可以帮助我使用 MVC 4 附带的新优化命名空间进行捆绑和缩小 我有一个多租户应用程序 我想在其中决定应根据每个用户的设置加载哪些 js 文件 一种方法是预先创建所有包并根据用户的设置更改resolvebundleurl的虚
  • 每次升级 Xcode 时,我都会遇到安装了 Brew 的 GCC 的链接器错误

    因此 我升级到 Mavericks 以及最新版本的 Xcode 5 02 并且正如预期的那样 无法编译任何包含 C 扩展的新 Ruby gem 这种情况尤其发生在我自己的项目 NMatrix 中 其中包含 C 和 C 代码 我重新安装了 X
  • CUDA 常量内存是否应该被均匀地访问?

    我的 CUDA 应用程序的恒定内存小于 8KB 既然它都会被缓存 我是否需要担心每个线程访问相同的地址以进行优化 如果是 如何确保所有线程同时访问同一地址 既然它都会被缓存 我是否需要担心每个线程访问相同的地址以进行优化 是的 这缓存本身每
  • str.find 怎么这么快?

    我之前遇到过一个问题 我在迭代字符串并使用切片时寻找子字符串 原来这是一个really关于性能的坏主意 str find速度要快得多 但我不明白为什么 import random import string import timeit Ge
  • 如何使用自定义 llc 编译 Rust 程序?

    我有一个自定义 LLVM 后端 并且想为该自定义 nostd 目标交叉编译 Rust 我想分两步编译 Rust 程序 Using rustc生成 LLVM IR 用我自己的opt and llc将 LLVM IR 转换为机器代码 我尝试使用
  • 比较字符串结尾的最佳方法是使用 RIGHT、LIKE 还是其他?

    我需要将字符串的结尾与存储过程中可能的结尾列表进行比较 会被叫很多 大概有10 15个候选结局 此时 仅使用代码的解决方案比创建专用于此的表更好 类似的东西 IF ENDSWITH var foo OR ENDSWITH var bar O
  • 如何通过点积获得峰值 CPU 性能?

    Problem 我一直在研究 HPC 特别是使用矩阵乘法作为我的项目 请参阅我的个人资料中的其他帖子 我在这些方面取得了不错的成绩 但还不够好 我退后一步 看看我在点积计算方面能做得如何 点积与矩阵乘法 点积更简单 并且允许我测试 HPC
  • 集合划分比差分获得更好的结果

    分区问题 https en wikipedia org wiki Partition problem已知是 NP 困难的 根据问题的特定实例 我们可以尝试动态规划或一些启发式方法 例如差分法 也称为 Karmarkar Karp 算法 后者
  • 查找二维空间中圆内的所有点

    我表示我的 2D 空间 考虑一个窗口 其中每个像素显示为 2D 数组中的一个单元格 即 100x100 的窗口由相同维度的数组表示 现在给定窗口中的一个点 如果我画一个半径的圆r 我想找到该圆圈中的所有点 我想我应该检查半径周围方形区域中的
  • 找到两个移动物体的更好交点

    我想极大地优化我的算法之一 我将尽力以最好的方式解释它 主题 我们当时处于二维欧几里德系统中t 0 在这个系统中有两个对象 O1 and O2 O1 and O2分别位于点PA and PC O1移动于常数和已知点方向的速度PB 当物体到达
  • 如何分析Android应用程序的电池使用情况并对其进行优化?

    我想分析我的应用程序的电池使用情况 我的意思是应用程序的各个部分 例如 广播接收器 监听器 服务等 使用多少电池 我需要一个详细的列表 从列表中 我想优化电池的使用 方法与使用内存分析器类似 http android developers
  • 如何减少 JSF 中的 javax.faces.ViewState

    减少 JSF 中视图状态隐藏字段大小的最佳方法是什么 我注意到我的视图状态约为 40k 这会在每次请求和响应时下降到客户端并返回到服务器 特别是到达服务器时 这对用户来说会显着减慢 我的环境 JSF 1 2 MyFaces Tomcat T
  • Rglpk - 梦幻足球阵容优化器 - For 循环输出的 Rbind

    我有一个使用 Rgplk 的梦幻足球阵容优化器 它使用for循环生成多个最佳阵容 其数量由用户输入 代码如下 Lineups lt list for i in 1 Lineup no matrix lt rbind as numeric D
  • 从 XML 构建树结构的速度很慢

    我正在将 XML 文档解析为我自己的结构 但对于大型输入来说构建它非常慢 是否有更好的方法来做到这一点 public static DomTree
  • 使用 lpSolve 优化 R 团队名单

    我是 R 新手 有一个想要解决的特定幻想运动队优化问题 我见过其他帖子使用 lpSolve 来解决类似的问题 但我似乎无法理解代码 下面的示例数据表 每个球员都在一个球队中 扮演着特定的角色 有薪水 并且每场比赛都有平均得分 我需要的限制是
  • CSS 选择器在哪个方向进行验证?

    我记得不久前在网上看过一个视频 是雅虎工程师的演讲 他在视频中提到浏览器从右到左读取 CSS 选择器 而不是从左到右 意义 body header links a实际上会拉出页面上的所有锚点 过滤那些具有类父级的锚点links有一个班级的家
  • 通过分布式数据库聚合作业优化网络带宽

    我有一个分布式 联合数据库 结构如下 数据库分布在三个地理位置 节点 每个节点集群有多个数据库 关系数据库是 PostgreSQL MySQL Oracle 和 MS SQL Server 的混合体 非关系数据库是 MongoDB 或 Ca
  • 获取 LLVM getelementptr 中的操作数名称

    我正在尝试获取 getelementptr 指令引用的数组的名称 当在实际的 C 代码中使用中间变量对数组进行索引时 这似乎起作用 如下所示 int a 0 i a 3 在这种情况下 我得到以下位码 arrayidx getelementp
  • 找到一系列间隔的最有效分组

    我有一个应用程序 其中有一系列不重叠的固定宽度间隔 每个间隔都有一个给定的键 每个间隔具有相同的宽度 并且可以存在连续的间隔 本质上 我想以最小化单独间隔的数量的方式对间隔和键进行分组 这可以通过合并具有相同键的连续间隔或查找匹配间隔并将它

随机推荐

  • 如何从任何地方获取上下文? [复制]

    这个问题在这里已经有答案了 在Android中 有什么方法可以静态获取应用程序的上下文吗 例如从后台线程检索它 Thanks 最简单 也是正确 的方法是 定义一个新类 public class MyApp extends Applicati
  • hibernate查询语言还是使用条件?

    任何人告诉我使用 criteria hql sql 进行查询 要求是用户输入电子邮件或用户名 查询返回密码 来自表用户的用户 Criteria API 非常适合动态查询生成 并且是我的首选 你可以这样做 Criteria criteria
  • Git/Mercurial (hg) 意见 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 首先声明 我不是一个专业的程序员 而是一个有需要并且必须学习的工程师 我总是独自工作 所以只有我和我的七个分裂人格 我们作为一个团队工
  • 如何使用struts 2标签比较列表元素(字符串类型)和字符串(在请求范围内)

    我的列表包含 A B C D 元素
  • 如何监听 Firebase 中的特定值变化?

    My data structure is the following compliments received uid complimentId 我想听听有关恭维 已收到 uid complimentId updatedAt 的更改 我的代
  • 如何使JComboBox表格编辑器具有普通JComboBox的设计?

    我有一个JComboBox用作编辑器JTable 在图片中 您可以在标记的列中看到它们Produs 我想使用独立的设计JComboBox在网格单元中 特别是组合框的右侧部分 其中网格单元中缺少三角形 因此用户无需单击其中之一即可知道网格单元
  • 如何从具有相同签名的方法或扩展函数调用顶级函数?

    我使用科特林1 1 2 2 我想调用顶层函数plus100 Int Int从方法Mul2 plus100 Int Int 我尝试在下面的代码中执行此操作 但实际上Mul2 plus100本身被称为 class Mul2 fun plus10
  • Objective-C 属性表达式的地址

    我需要财产的访问地址 但有问题 示例代码是 interface Rectangle NSObject SDL Rect wall SDL Rect ground property SDL Rect wall property SDL Rec
  • WidgetKit @StateObject 不更新视图

    我无法理解如何让我的SwiftUI数据模型示例与我的小部件一起使用 它在我的测试应用程序中运行得很好 我立即观察到变化 当我尝试使用小部件时 我可以看到控制台中打印的数据 但我的中没有发生任何变化View in WidgetKit 我正在使
  • 错误:列表类型不带参数

    尽管它与示例中使用的完全相同 但我收到以下错误 错误 列表类型不带参数 List
  • NODEJS writeStream 错误

    var http require http var fs require fs createWriteStream file1 http createServer function req res This opens up the wri
  • 批量获取消息性能

    我需要获取收件箱中的最后 100 条消息 仅限标题 为此 我目前正在使用 IMAP 扩展来搜索并获取消息 这是通过两个请求完成的 SEARCH进而UID FETCH Gmail API 相当于在一个请求中获取多封邮件的功能是什么 我能找到的
  • 为什么 SDWebImage 加载后在单元格中不显示图像?

    我正在使用 SDWebImage 在我的表格中 每一行都有图像和标签 如您所见 图像看不到 但是当我返回父视图控制器并再次来到这里时 它们就会显示出来 我正在使用的代码是 cell imageView setImageWithURL NSU
  • 如何自动连续垂直滚动div内容

    我需要垂直滚动包含图像的 div 任何帮助或参考将不胜感激 Maybe 像这样的东西 http jsfiddle net 9qC9E 8 有助于 第一张和最后一张图像应该是相同的 JS function var box document g
  • Django REST Framework,PUT/POST 序列化程序数据消失

    当我尝试更新或发布新实例时 我遇到部分数据消失的问题 有了这样的数据 data item Product station Workbench ingredients item ing1 amount 2 item ing2 amount 1
  • auth-hmac功能测试问题

    我想在我的 api 应用程序中使用这个 gemhttps github com seangeo auth hmac https github com seangeo auth hmac 我有一个关于创建请求身份验证测试的问题 我想用 hma
  • React 中的 ForwardRefExoticComponent 和 ForwardRefRenderFunction 有什么区别?

    我正在编写一个 React 组件 它可以将引用转发给它的子组件 我发现对于函数组件的返回类型 我可以使用ForwardRefExotic组件 and 前向参考渲染函数 但我不确定它们之间有什么区别 到目前为止 使用时ForwardRefEx
  • 如何创建布局并在 tmux 启动时运行命令?

    我正在尝试编写一个可以运行 源的脚本 以便 tmux 设置特定的布局并运行命令 我有一些结果 这是我到目前为止所写的内容 selectp t 1 splitw v p 15 splitw h p 50 selectp t 1 send ke
  • Cocoa Swift,获取/设置文件和目录上的隐藏(可见/不可见)标志

    我想测试文件系统上的文件或目录是否具有特定标志 在本例中为 隐藏 标志 然后设置或删除它 我知道这可以通过命令行实现 但我想知道是否可以使用 Cocoa Swift 来做到这一点 我尝试使用NSFileManager attributesO
  • LLVM 执行哪些优化?

    我想具体了解一下LLVM的各个优化级别分别对应什么 也就是说 我想知道当我使用 llvm 或 clang 或 opt 的 0x 选项时 哪些优化过程是准确执行的 在前端之外 以及按什么顺序执行 相应工具的 man 没有提供关于此事的太多信息