使 LLVM 内联库中的函数
我正在尝试使 LLVM 内联库中的函数。
我有 LLVM 位码文件(手动生成),用 llvm-link
链接在一起,我还有一个库(用 C 语言编写)由 clang
编译成位码并存档与llvm-ar
。我设法将所有内容链接在一起并执行,但无法设法让 LLVM 内联库中的函数。关于应该如何完成此操作的任何线索?
I am trying to make LLVM
inline a function from a library.
I have LLVM bitcode files (manually generated) that I linked together with llvm-link
, and I also have a library (written in C) compiled into bitcode by clang
and archived with llvm-ar
. I manage to link everything together and to execute but I can't manage to get LLVM
to inline a function from the library. Any clue about how this should be done?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
将位码文件与库链接在一起后,是否对链接的位码运行Internalize pass?内部化过程使所有函数(除了
main()
)静态化,并告诉优化器/代码生成器可以安全地内联函数,而无需为某些(不存在的)外部引用保留可用的副本。我使用从
llvm-ld
借用的代码手动将我的位码文件和位码库链接在一起,并执行内部化传递,但我不确定llvm-link
是否执行内化通过与否。After you link the bitcode files together with the library, do you run an Internalize pass on the linked bitcode? The internalize pass makes all functions (besides
main()
) static and tells optimizer/code generator that the functions can be safely inlined without keeping a copy available for some (non-existent) external reference.I manually link my bitcode files and bitcode libraries together using code borrowed from
llvm-ld
and I do the internalize pass, but I'm not sure ifllvm-link
does the internalize pass or not.