让LLVM内联库中的一个函数

10

我正在尝试让 LLVM 内联一个库中的函数。

我有手动生成的 LLVM 位代码文件,使用 llvm-link 连接在一起,并且我也有一个 C 语言库(使用 clang 编译为位代码,并用 llvm-ar 存档)。我成功地将它们全部链接在一起并执行了程序,但是我无法让 LLVM 内联来自库中的函数。有关如何操作的任何线索吗?

1个回答

8
在将位码文件与库链接在一起后,您是否对链接的位码运行了内部化处理?内部化处理会使得除了main()之外的所有函数都变成静态函数,并告诉优化器/代码生成器这些函数可以安全地进行内联,而不必保留某些(不存在的)外部引用的副本。
我使用从llvm-ld借鉴来的代码手动将我的位码文件和位码库链接在一起,并进行内部化处理,但我不确定llvm-link是否会进行内部化处理。

我该如何启动内部化传递? - osgx
@osgx:看看createInternalizePasslib/Transforms/IPO/Internalize.cpp). - Eli Bendersky

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接