有没有人有 LLVM 的经验, llvm-gcc Clang

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

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

非常感谢!

有帮助吗?

解决方案

我初次尝试使用LLVM并通过本教程进行操作我对它的潜力非常兴奋;我可以使用它来相对轻松地将JIT构建到应用程序中的想法让我感到高兴。

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

其他提示

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

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

我已经使用LLVM打开和关闭了好几个月了。我在 OCaml Journal 文章,内容涉及LLVM的使用。 ffconsultancy.com/“rel =”noreferrer“> OCaml 编程语言。这一点特别有趣,因为OCaml语言非常适合编写编译器,并且具有丰富的功能强大且成熟的工具和库,可用于解析等。

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

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

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

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top