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

将元数据关联到分析过程中的LLVM基本块,llvm,llvm-c++-api,Llvm,Llvm C++ Api,如何存储自定义LLVM分析过程中生成的每个基本块信息,以使其在未来的优化过程中可用 例如,假设我正在派生类FunctionPass,以实现活性分析。此过程将为函数中的每个基本块生成集LiveIn和LiveOut。我应该在哪里声明这些集合以供其他LLVM过程将来使用?如何使它们可以从关联的llvm::BasicBlock数据结构直接访问?目前没有任何直接的方法将元数据附加到BasicBlock,因为BasicBlock类没有元数据作为数据成员。您可以将BasicBlock类扩展为一个选项,另一个常

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


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

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

谢谢,那很有用。