LLVM的最大好处是什么?

时间:2008-10-05 23:48:08

标签: c++ c llvm clang

有没有人有[{3}},LLVMllvm-gcc的经验?

llvm背后的整个想法对我来说似乎很有趣,我很想知道它的表现如何。如果工具还没有准备好生产,我只是不想花很多时间去尝试工具。

如果您有使用这些工具的经验,您如何看待它们?你遇到了什么主要限制?最大的好处是什么?

非常感谢!

4 个答案:

答案 0 :(得分:39)

我不能说LLVM的好东西。与我看过的其他编译器项目相比,它非常容易使用。我不是编译人员,但是当我对LLVM或clang的一些限制感到沮丧时,通常很容易深入并改变它。

我们(Nate Begeman,我自己和其他一些人)编写了PPC后端,没有真正的编译器设计经验,但看起来非常简单,非专家可以接近它。我们对PPC组装非常熟悉,但我们仍然非常难以置信,我们在业余时间的几周内设法输出了LLVM-gcc输出PPC代码。绝对是我编译过的最令人满意的Hello World之一。

答案 1 :(得分:25)

我已经使用LLVM打开和关闭了好几个月了。我写了两篇OCaml Journal篇文章,介绍了使用OCaml编程语言的LLVM。这一点特别有趣,因为OCaml语言非常适合编写编译器,并且具有丰富的功能强大且成熟的工具和库,可用于解析等。

总的来说,我的经历非常积极。 LLVM完成它在锡上所说的内容并且非常易于使用。生成的代码的性能非常出色。我编写的程序之一是一个简单的Brainf * ck编译器,它可以生成我测试的任何编译器(包括GCC)中一些最快的可执行文件。

我只有两个LLVM抱怨。首先,它会在出现任何错误时使用abort()而不是引发异常。这是其作者的一个深思熟虑的设计决策,他们正在努力从LLVM中删除所有异常使用,但是当尝试调试使用LLVM的编译器时,它无法从OCaml中获得回溯:您的程序只是因为LLVM的文本解释而死亡但是没有关于源中错误发生位置的线索。其次,LLVM的编译库非常庞大(20Mb)。我认为这是由于C ++引起的膨胀,但它使编译变得非常缓慢。

编辑:我在LLVM上的工作最终创建了一个高性能的高级垃圾收集虚拟机。免费下载here并查看相应的benchmarks(哇!)。 @Alex:我会尽快为你编写BF编译器。

答案 2 :(得分:21)

我已经开始使用LLVM了,并且通过this tutorial工作让我对它的潜力非常兴奋;我可以使用它来相对轻松地将JIT构建到应用程序中的想法让我感到高兴。

我还没有深入到能够就其局限性,稳定性,性能等提供任何有用的意见。我知道它在所有方面都很好,但这纯粹是道听途说。

答案 3 :(得分:2)

你问过工具,我想提一下Eclipse CDT的LLVM插件(适用于Windows,Linux和Mac)。它将LLVM很好地集成到IDE中,用户无需了解有关LLVM的任何信息。按下构建按钮足以生成.bc和可执行文件(并且背景上的中间文件对用户不可见)。

最新版本可通过官方Eclipse更新站点获得:http://download.eclipse.org/releases/mars

它位于Programming Languages下,名为“C / C ++ LLVM-Family Compiler Build Support”。