将元数据与分析过程中的LLVM基本块相关联



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

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

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

最新更新