LLVM 插桩 LLVM IR PHI指令

news2025/1/12 13:32:10

今天在进行 LLVM 插桩时,遇到一个神奇的报错

PHI nodes not grouped at top of basic block!
  %12 = phi i32 [ %.pre, %if.then15 ], [ %argc, %maybe_close_fd_mask.exit ], !dbg !381
label %if.end19
PHI nodes not grouped at top of basic block!
  %18 = phi i32 [ %.pr, %if.else49thread-pre-split ], [ %12, %if.end19 ], !dbg !422
label %if.else49
PHI nodes not grouped at top of basic block!
  %N.1 = phi i32 [ %conv.i, %if.then34 ], [ %N.0, %if.else49 ], !dbg !431
label %if.end57
PHI nodes not grouped at top of basic block!
  %indvars.iv = phi i64 [ 1, %for.body.preheader ], [ %indvars.iv.next, %cleanup ]
label %for.body
PHI nodes not grouped at top of basic block!
  %fd.039 = phi i32 [ %call5, %if.end ], [ 0, %for.body ]
label %if.end8
LLVM ERROR: Broken module found, compilation aborted!

经过 STFW,找到如下网址 https://stackoverflow.com/questions/16754324/input-in-llvm-i-think-i-do-not-understand-dominance-and-the-location-of-phi-nod

在这里插入图片描述
意思很明显,如果一个基本块里有 phi 指令,那么从基本块的开头到 phi 指令之间必须全都是 phi 指令。也就是说,phi 指令必须堆在 basic block 的开头

所以,插桩的时候要注意,不要违背了这个原则。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

线程的状态与转换,组织与控制

进程和线程分析极其相似。见个人博客:进程的状态与转换以及组织方式 1.线程的状态与转换 2.线程的组织与控制 1.线程控制块(TCB) 2.线程表

运行中的代码,看不太懂的地方,可以实时查看运行值,以做进一步的判断

运行中的代码,看不太懂的地方,可以实时查看运行值,以做进一步的判断 运行中的代码,看不太懂的地方,可以实时查看运行值,以做进一步的判断 运行中的代码,看不太懂的地方,可以实时查看…

OpenCV 14(角点特征Harris和Shi-Tomasi)

一、角点 角点是图像很重要的特征,对图像图形的理解和分析有很重要的作用。角点在三维场景重建运动估计,目标跟踪、目标识别、图像配准与匹配等计算机视觉领域起着非常重要的作用。在现实世界中,角点对应于物体的拐角,道路的十字路口、丁字路…

机器学习 不均衡数据采样方法:imblearn 库的使用

✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。 🍎个人主页:小嗷犬的个人主页 🍊个人网站:小嗷犬的技术小站 🥭个人信条:为天地立心&…

【Hello Linux】多路转接之 epoll

本篇博客介绍: 多路转接之epoll 多路转接之epoll 初识epollepoll相关系统调用epoll的工作原理epoll服务器编写成员变量构造函数 循环函数HandlerEvent函数epoll的优缺点 我们学习epoll分为四部分 快速理解部分概念 快速的看一下部分接口讲解epoll的工作原理手写epo…

找不到msvcr120.dll怎么办?电脑缺失msvcr120.dll的修复方法

msvcr120.dll 是 Microsoft Visual C Redistributable Package 中的一个动态链接库文件,它包含了 C 运行时库的一些功能。这个文件通常与 Visual C 2010 编译器一起使用,用于支持一些大型游戏和应用程序的运行。msvcr120.dll 文件的主要作用是提供 C 语言…

远程代码执行渗透测试—Server2128

远程代码执行渗透测试 任务环境说明: √ 服务器场景:Server2128(开放链接) √服务器场景操作系统:Windows √服务器用户名:Administrator密码:pssw0rd 1.找出靶机桌面上文件夹1中的文件RCEBac…

【AI视野·今日Robot 机器人论文速览 第四十六期】Tue, 3 Oct 2023

AI视野今日CS.Robotics 机器人学论文速览 Tue, 3 Oct 2023 Totally 76 papers 👉上期速览✈更多精彩请移步主页 Daily Robotics Papers Generalized Animal Imitator: Agile Locomotion with Versatile Motion Prior Authors Ruihan Yang, Zhuoqun Chen, Jianhan M…

RabbitMQ-网页使用消息队列

1.使用消息队列 几种模式 从最简单的开始 添加完新的虚拟机可以看到,当前admin用户的主机访问权限中新增的刚添加的环境 1.1查看交换机 交换机列表中自动新增了刚创建好的虚拟主机相关的预设交换机。一共7个。前面两个 direct类型的交换机,一个是…

运行程序时msvcr110.dll丢失的解决方法,msvcr110.dll丢失5的个详细解决方法

在使用电脑的过程中,我们经常会遇到各种问题,其中之一就是 msvcr110.dll 丢失的问题。msvcr110.dll 是 Microsoft Visual C Redistributable 的一个组件,用于支持使用 Visual C 编写的应用程序。如果您的系统中丢失了这个文件,您可…

保姆级Anaconda安装教程

一.anaconda下载 建议使用清华大学开源软件镜像站进行下载,使用官网下载速度比较慢。 anaconda清华大学开源软件镜像站 : https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/ 一路next即可,注意添加环境变量得选项都勾上。 二.验证…

C++list模拟实现

list模拟实现 1.链表结点2.类模板基本框架3.构造4.插入普通迭代器实现4.1尾插4.2普通迭代器实现4.3对比list和vector的iterator4.4迭代器的价值4.5insert4.6尾插头插复用写法 5.删除erase5.1erase5.2尾删头删复用写法 6.析构emptysizeclear6.1clear6.2size6.3 empty6.4 析构 7.…

深度学习笔记之微积分及绘图

深度学习笔记之微积分及绘图 学习资料来源:微积分 %matplotlib inline from matplotlib_inline import backend_inline from mxnet import np, npx from d2l import mxnet as d2lnpx.set_np()def f(x):return 3 * x ** 2 - 4 * xdef numerical_lim(f, x, h):retur…

浅谈yolov5中的anchor

默认锚框 YOLOv5的锚框设定是针对COCO数据集中大部分物体来拟定的,其中图像尺寸都是640640的情况。 anchors参数共3行: 第一行是在最大的特征图上的锚框 第二行是在中间的特征图上的锚框 第三行是在最小的特征图上的锚框 在目标检测中,一…

[sping] spring core - 依赖注入

[sping] spring core - 依赖注入 所有代码实现基于 Spring Boot3,core 的概念很宽广,这里的 core concept 主要指的就是 Inversion of Control 和 Dependency Injection,其他的按照进度应该是会被放到其他的 section 记录 之前有写过 IoC 和…

如何在Keil和IAR环境编译生成的bin文件添加CRC校验值

之前写过一篇文章介绍过 CRC 的原理和应用。在程序升级的情况下,我们可以在烧录下载的 bin 文件添加 CRC 校验值,以校验我们获取的bin文件是否正确。 下面我打算使用 APM32F407 的工程代码,介绍下如何在 Keil 环境和 IAR 环境对编译生成的 b…

线程概念,实现方式以及多线程模型

1.线程引入 有的进程可能需要“同时”做很多事,而传统的进程只能串行地执行一系列程序。 为此,引入了“线程”,来增加并发度。 可以把线程理解为“轻量级进程”。线程是一个基本的CPU执行单元,也是程序执行流的最小单位。引入线…

GEE15:获取不同遥感指数的时间序列及不同指数间的关系

GEE 1. 不同遥感指数间的时间序列分析2. 不同指数之间的关系 1. 不同遥感指数间的时间序列分析 GPP数据在一定程度上和植被指数(如NDVI和EVI)有着显著的相关性,那么其相关性如何?如何从时间序列的角度来思考呢?下面我将…

【Spring Cloud】深入探索统一网关 Gateway 的搭建,断言工厂,过滤器工厂,全局过滤器以及跨域问题

文章目录 前言为什么需要网关以及网关的作用网关的技术实现 一、Gateway 网关的搭建1.1 创建 Gateway 模块1.2 引入依赖1.3 配置网关1.4 验证网关是否搭建成功1.5 微服务结构分析 二、Gateway 断言工厂2.1 Spring 提供的断言工厂2.2 示例:设置断言工厂 三、Gateway …

【算法训练-字符串 三】字符串相加

废话不多说,喊一句号子鼓励自己:程序员永不失业,程序员走向架构!本篇Blog的主题是【字符串相加】,使用【字符串】这个基本的数据结构来实现,这个高频题的站点是:CodeTop,筛选条件为&…