1

我是 LLVM 框架和编译器领域的新手。我正在尝试熟悉它。在编译器中做了一些初步阅读后,我有以下问题:

我想知道如何在 LLVM JIT 中完成函数内联。它是否与在 jit 编译时使用的静态内联中使用的传递相同,因为我觉得运行时(即 jit 编译时)的信息在静态编译时更好,因此一些更好的优化传递(价格便宜在时间方面)可以使用。

我错过了什么吗?我真的很感谢在这方面的一些帮助。

提前致谢。

4

1 回答 1

3

你没有错过任何东西。LLVM 过去、现在、将来可能会更适合静态编译器。它支持基本意义上的 JIT 编译(非常好,事实上,随着 MCJIT 的出现),您可以毫不费力地从 IR 转到内存中的机器代码。但它不执行跟踪执行或开箱即用分析等操作。您可以添加它们,但 AFAIK 对修补已经发出的代码的支持充其量是有限的(即您可能必须重新编译大量代码)。虽然您始终可以添加代码来收集指标并编写自己的优化通道以利用这些(或以其他方式针对 JIT 编译器的要求进行定制),但这需要付出很大的努力。另见:空载燕子回顾展(第三部分;请注意,该帖子已超过 1 年)。

于 2012-08-22T14:43:36.130 回答