Llvm 附加程序';它的位码为';s二进制

Llvm 附加程序';它的位码为';s二进制,llvm,Llvm,LLVM中是否有一个pass或其他东西,可以将给定的LLVM::Module序列化为二进制形式,然后将此数据放入源模块?所以,当我把它链接到二进制文件中时,我会得到一个编译代码的位代码表示,它与单个文件中的本机代码相链接 如果没有,您能就如何实现这一点提供一些建议吗?此功能现在在Clang/LLVM中部分实现,并被调用。现在可以运行clang-c-emit llvm-flto=thin source.cpp,这将生成一个嵌入相同位代码的llvm位代码文件。正在开发对使用嵌入位代码编写本机对象文件

LLVM中是否有一个pass或其他东西,可以将给定的
LLVM::Module
序列化为二进制形式,然后将此数据放入源模块?所以,当我把它链接到二进制文件中时,我会得到一个编译代码的位代码表示,它与单个文件中的本机代码相链接


如果没有,您能就如何实现这一点提供一些建议吗?

此功能现在在Clang/LLVM中部分实现,并被调用。现在可以运行
clang-c-emit llvm-flto=thin source.cpp
,这将生成一个嵌入相同位代码的llvm位代码文件。正在开发对使用嵌入位代码编写本机对象文件的支持。

为什么要这样做?一些基于运行时配置文件的后期优化?您将如何访问该模块?我认为,位代码指针可以像字符串常量一样导出,或者只导出
extern void*m
。我会使用这个指针在本机级别将其反序列化为
llvm::Module*
。反序列化后您会如何处理它?为什么这很重要?分析它并在程序中使用分析结果。我想不出任何情况下需要在同一个二进制文件中使用位代码。您始终可以单独加载它。