【发布时间】:2011-02-11 17:14:30
【问题描述】:
我正在尝试使 LLVM 内联库中的函数。
我有与llvm-link 链接在一起的LLVM 位码文件(手动生成),我还有一个由clang 编译成位码并使用llvm-ar 存档的库(用C 编写)。我设法将所有内容链接在一起并执行,但我无法让LLVM 内联库中的函数。有什么线索应该如何做到这一点?
【问题讨论】:
标签: linker clang llvm llvm-ir inlining
我正在尝试使 LLVM 内联库中的函数。
我有与llvm-link 链接在一起的LLVM 位码文件(手动生成),我还有一个由clang 编译成位码并使用llvm-ar 存档的库(用C 编写)。我设法将所有内容链接在一起并执行,但我无法让LLVM 内联库中的函数。有什么线索应该如何做到这一点?
【问题讨论】:
标签: linker clang llvm llvm-ir inlining
将位码文件与库链接在一起后,是否对链接的位码运行内部化传递? internalize pass 使所有函数(除了main())都是静态的,并告诉优化器/代码生成器可以安全地内联函数,而无需为某些(不存在的)外部引用保留副本。
我使用从llvm-ld 借来的代码手动将我的位码文件和位码库链接在一起,并进行内部化传递,但我不确定llvm-link 是否进行内部化传递。
【讨论】:
createInternalizePass (lib/Transforms/IPO/Internalize.cpp)。