1

如何存储在自定义 LLVM 分析过程中生成的每个基本块信息,以使其在未来的优化过程中可用?

例如,假设我正在派生类FunctionPass来实现活性分析。这个过程将产生集合LiveInLiveOut函数中的每个基本块。我应该在哪里声明这些集合以供其他 LLVM 通行证将来使用?我怎样才能让它们直接从它们关联的 llvm::BasicBlock 数据结构中访问?

4

1 回答 1

2

目前没有任何直接的方法可以将元数据附加到 BasicBlocks,因为 BasicBlock 类没有 Metadata 作为数据成员。您可以将 BasicBlock 类扩展为一个选项,另一种常见的选项是将 BasicBlock 相关元数据附加到其 Terminator 指令,但每次合并或拆分 BasicBloks 或修改 CFG 的过程都可能使您的信息无效。

于 2015-04-24T13:15:22.803 回答