llvm - 获取 LLVM BasicBlock 的持久 ID
问题描述
我正在寻找一种方法——使用 LLVM API——来获取 BasicBlock 的标识符,稍后我可以使用它来查找(再次通过 API)相同的块。
无论这个 ID 是什么,我都需要它“在序列化过程中保持稳定”(在位码序列化/反序列化周期之后保持有效并引用同一块)。
块 ID 不一定是全局唯一的:如果 ID 对一个函数是唯一的,我可以通过将块 ID 与函数的符号名称组合成一个全局唯一的对。
候选人:
- 按迭代顺序(在父函数的块上)的块索引。但是迭代的顺序在序列化上是否已定义且稳定?
StringRef
返回的Node->printAsOperand()
。但是我可以使用这个作为键来查询块的函数,还是我必须进行大量字符串比较的搜索?这在序列化过程中是否稳定?- 用于
Block::setName()
为每个块分配我自己的 ID。这将起作用,但会使位码膨胀。
谢谢你。
解决方案
推荐阅读
- flutter - 应用程序运行正常,但当应用程序突然启动时显示此屏幕并消失
- php - PHP中的“(表达式)OR(语句)”结构
- laravel - Laravel - 我如何获得不同产品列的总和?
- python - 按第n个字符python从字符串中拆分字符
- java - Toast 消息不显示?
- email - 如何使用脚本在 Outlook 中将电子邮件合并并转发到单个电子邮件中?
- ios - 使用 swift 代码对两个视图进行约束
- python - 如何将深度嵌套的 JSON 读入数据框?
- dataframe - 如何使用 pyspark 将 null 分配给配置单元表列
- cuda - 设备 -> 主机与主机 -> cuda 中的设备复制性能