如何存储自定义LLVM分析过程中生成的每个基本块信息,以便在将来的优化过程中使用它?
例如,让我们假设我派出类FunctionPass
来实现活跃度分析。此过程将为函数中的每个基本块生成集LiveIn
和LiveOut
。我应该在哪里声明这些集合以供将来使用的其他LLVM通行证?如何从关联的llvm :: BasicBlock数据结构直接访问它们?
答案 0 :(得分:2)
目前没有任何直接的方法将元数据附加到BasicBlocks,因为BasicBlock类没有元数据作为数据成员。您可以将BasicBlock类扩展为一个选项,另一个常见的选项是将BasicBlock相关元数据附加到其Terminator指令,但是每个合并或拆分BasicBloks或修改CFG的传递都可能使您的信息无效。