【问题标题】:Make LLVM inline a function from a library使 LLVM 内联一个库中的函数
【发布时间】:2011-02-11 17:14:30
【问题描述】:

我正在尝试使 LLVM 内联库中的函数。

我有与llvm-link 链接在一起的LLVM 位码文件(手动生成),我还有一个由clang 编译成位码并使用llvm-ar 存档的库(用C 编写)。我设法将所有内容链接在一起并执行,但我无法让LLVM 内联库中的函数。有什么线索应该如何做到这一点?

【问题讨论】:

    标签: linker clang llvm llvm-ir inlining


    【解决方案1】:

    将位码文件与库链接在一起后,是否对链接的位码运行内部化传递? internalize pass 使所有函数(除了main())都是静态的,并告诉优化器/代码生成器可以安全地内联函数,而无需为某些(不存在的)外部引用保留副本。

    我使用从llvm-ld 借来的代码手动将我的位码文件和位码库链接在一起,并进行内部化传递,但我不确定llvm-link 是否进行内部化传递。

    【讨论】:

    • 我怎样才能开始内化通行证?
    • @osgx:看看createInternalizePass (lib/Transforms/IPO/Internalize.cpp)。
    猜你喜欢
    • 2012-08-17
    • 1970-01-01
    • 1970-01-01
    • 2011-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多