有没有人有LLVM,llvm-gcc或Clang的经验?
llvm背后的整个想法对我来说似乎很有趣,我很想知道它的表现如何.如果工具还没有准备好生产,我只是不想花很多时间去尝试工具.
如果您有使用这些工具的经验,您如何看待它们?你遇到了什么主要限制?最大的好处是什么?
非常感谢!
关于LLVM,我不能说足够好的东西.与我看过的其他编译器项目相比,它非常容易使用.我不是编译人员,但是当我对LLVM或clang的某些限制感到沮丧时,通常很容易潜入并改变它.
我们(Nate Begeman,我自己和其他一些人)编写了PPC后端,没有真正的编译器设计经验,但它看起来很简单,非专家可以接近它.我们对PPC组装非常熟悉,但我们仍然非常难以置信,我们在业余时间的几周内设法输出了LLVM-gcc输出PPC代码.绝对是我编译过的最令人满意的Hello World之一.
我已经和LLVM一起玩了好几个月了.我写了两篇OCaml期刊文章,涵盖了OCaml编程语言中LLVM的使用.这特别有趣,因为OCaml语言非常适合编写编译器,并且具有丰富的功能强大且成熟的工具和库,用于解析等等.
总的来说,我的经历非常积极.LLVM完成它在锡上所说的内容并且非常易于使用.生成的代码的性能非常出色.我编写的程序之一是一个简单的Brainf*ck编译器,它可以生成我测试的任何编译器(包括GCC)中一些最快的可执行文件.
LLVM只有两个抱怨.首先,它会在出现任何错误时使用abort()而不是引发异常.这是其作者的一个深思熟虑的设计决策,他们正在努力从LLVM中删除所有异常使用,但是当尝试调试使用LLVM的编译器时,它无法从OCaml中获得回溯:您的程序只是因为LLVM的文本解释而死亡但是没有关于源中错误发生位置的线索.其次,LLVM的编译库非常庞大(20Mb).我认为这是由于C++引起的膨胀,但它使编译变得非常缓慢.
编辑:我在LLVM上的工作最终创建了一个高性能的高级垃圾收集虚拟机.免费下载在这里,并检查了相应的基准(哇!).@Alex:我会尽快为你准备好BF编译器.
我已经初步了解了LLVM并且完成了本教程,让我对它的潜力感到非常兴奋; 我可以使用它来相对轻松地将JIT构建到应用程序中的想法引起了我的注意.
我还没有深入到能够就其局限性,稳定性,性能等提供任何有用的意见.我知道它在所有方面都很好,但这纯粹是道听途说.