【问题标题】:Relationship between clang, opt, llc and llvm-linkerclang、opt、llc 和 llvm-linker 的关系
【发布时间】:2023-04-03 20:55:01
【问题描述】:

不久前,我查看了 clang、llc 和 opt 的源代码,以了解它们如何为管道添加优化。我的理解是,clang 通过调用 opt 和 llc 调用的相同方法,在其管道中添加了与 opt 和 llc 相同的优化。 clang 也不会单独调用 opt 和/或 llc。

这几乎没问题,只是存在一种风险,即 opt 在某个时候可能会在其管道中进行不同的优化(与 clang 相比),因为源更改是在一个而不是另一个中完成的。 llc 和 clang 的比较也是如此。这种看法正确吗?

我还看到了显示以下工作流程的图表:clang、opt、llvm-linker、再次选择(对于 IPA?)然后是 llc。我无法将此工作流程与我在 clang 中看到的内容联系起来。甚至我对 LTO 的理解是链接器(Say gold)会调用优化。我无法理解 llvm-linker 在这里的作用。

高度赞赏任何见解。

【问题讨论】:

    标签: llvm llvm-clang


    【解决方案1】:

    opt、llc 和 llvm-linker 是开发人员端工具,可用于运行在 LLVM 库中实现的某些方法。最终用户通常不应该使用它们。

    “图表”可能只是某人定制的 quick'n'dirty LTO 管道。

    【讨论】:

    • 谢谢。你能提供更多关于 llvm-linker 的意义的 cmets 吗?我最大的问题是它相当于系统链接器?
    • 另一个问题:您是否认为 opt 和 clang 中的优化存在不同步的风险,因为其中一个的代码更改不会反映在另一个上?
    • 视情况而定。 llvm-link 将位码文件链接在一起,lld 尝试替换系统链接器,类似于 clang 替换系统编译器的方式。
    • 不,通常不是因为 opt 中的优化通常是 O1/O2/O3 框架的一部分,因此没有显式调用。此外,执行通行证的同一个人将确保从 clang 中调用他们。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-11
    • 1970-01-01
    • 2018-03-11
    • 2020-03-27
    • 2014-03-28
    相关资源
    最近更新 更多