gpt4 book ai didi

llvm - 如何在我的 pass 中使用 LLVM IR 中的注释?

转载 作者:行者123 更新时间:2023-12-02 00:56:39 31 4
gpt4 key购买 nike

是否可以在我的通行证中使用 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/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com