作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
是否可以在我的通行证中使用 IR 中的注释?基本上我想使用带有基本 block 频率注释的IR,它写在注释中,如下所示,我的pass中需要频率值。我知道这是幼稚的方法,但这就足够了。
define internal void @MDFilter() #0 {
entry:
;;; Basic block executed 2 times. <-- I NEED THIS COMMENT AS A STRING IN MY PASS
%mdContext = alloca %struct.MD5_CTX, align 8
%bytes = alloca i32, align 4
%data = alloca [16 x i8], align 16
call void @MD5Init(%struct.MD5_CTX* %mdContext)
br label %while.cond
;;; Out-edge counts: [2.000000e+00 -> while.cond]
也欢迎使用任何其他方法来获取此信息。
最佳答案
不,如果不显着更改 IR 解析器,就无法以这种方式使用注释内容。然而,没有必要重新发明轮子; LLVM 中有一种机制正是用于此类事情 - 将信息从前端传输到 LLVM channel - 这就是 metadata .
因此,无论任何人或任何人将此信息添加到 IR 中,都应该将其与元数据一起添加 - 请参阅这些来源以获取有关如何执行此操作的更多信息:
如果您无法控制数据的生成,那么您应该添加一些预处理步骤,将评论转换为元数据。
最终 IR 应该看起来像这样:
define internal void @MDFilter() #0 { entry: %mdContext = alloca %struct.MD5_CTX, align 8, !freq !1 %bytes = alloca i32, align 4 %data = alloca [16 x i8], align 16 call void @MD5Init(%struct.MD5_CTX* %mdContext) br label %while.cond, !outedge !2...!1 = metadata !{i32 2}!2 = metadata !{float 2.0}
您的通行证需要查找这些 !freq
和 !outedge
节点。
关于llvm - 如何在我的 pass 中使用 LLVM IR 中的注释?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17235487/
我是一名优秀的程序员,十分优秀!