gpt4 book ai didi

LLVM:如何遍历模块元数据来查找值?

转载 作者:行者123 更新时间:2023-12-01 13:39:09 29 4
gpt4 key购买 nike

我的 LLVM 模块中有这个元数据树:

!meta.test = !{!0}    
!0 = !{"str1", "str2", !1}
!1 = !{!2, !3, null}
!2 = !{"str3", i8 5}

我希望能够获得值(value):i8 5。

我正在尝试使用 M->getNamedMetadata("meta.test"),但我无法使用 LLVM API 遍历元数据树以达到该值。

我该怎么做?

干杯。

最佳答案

对于 LLVM 3.6 及更高版本
getNamedMetadata返回 NamedMetadata , 你可以使用 getOperand(unsigned)获取 MDNode并且可以根据您的使用转换为您适当的类型。

所以M->getNamedMetadata("meta.test")->getOperand(0)会得到你metadataNode !0 MDNode .

您可以使用 cast< ValueAsMetadata >(MDNode)->getvalue()获取 Value i8 5
或者您可以使用 cast< MDString >(MDNode)->getString()获取 Value str1 .

所以简而言之,您可以遍历元数据 MDNodes使用 getOperand()根据层次结构调用并将其转换为您的使用。见 this了解更多信息。

关于LLVM:如何遍历模块元数据来查找值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41751672/

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