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

时间:2015-04-05 14:59:44

标签: llvm llvm-c++-api

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

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

1 个答案:

答案 0 :(得分:2)

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