Related articles |
---|
What to put behind my front-end? m.helvensteijn@gmail.com (Michiel) (2008-08-17) |
Re: What to put behind my front-end? kamalpr@hp.com (kamal) (2008-08-17) |
Re: What to put behind my front-end? rich@pennware.com (Richard Pennington) (2008-08-20) |
From: | Richard Pennington <rich@pennware.com> |
Newsgroups: | comp.compilers |
Date: | Wed, 20 Aug 2008 05:33:02 -0500 |
Organization: | at&t http://my.att.net/ |
References: | 08-08-024 |
Keywords: | code |
Posted-Date: | 20 Aug 2008 14:01:34 EDT |
Michiel wrote:
> Hi,
>
> I'm working on a compiler for a new language with a colleague. I have
> described it briefly in an earlier thread (Number of compiler passes).
[snip]
> Denis Washington pointed me to LLVM, which seems a likely candidate. But I
> would like to make a more informed decision.
I strongly second LLVM.
I'm making a back end for the C/C++ parser Elsa
( http://www.cs.berkeley.edu/~smcpeak/elkhound/ ).
I looked a little bit at SUIF (and MachSUIF) before I went to LLVM.
SUIF looked OK, especially after I was able to build it using a
current version of gcc, which took a bit of work. It seems that no one
is doing active development in SUIF, however, so unless to are very
self sufficient it may not be the way to go.
LLVM has several things going for it in my opinion:
* Berkeley-like licensing.
* Very active development community.
Really! And these people are very helpful, both on the mailing list
and the IRC channel.
I've submitted several problem reports and they are usually fixed
within a day or two. Not that there are a lot of bugs. I'm using
LLVM in an unusual way and tickling parts that may not be used often.
* Very clean and understandable structure.
* Strongly typed intermediate language.
Very useful when lowering an AST to IR. LLVM catches a lot of
mistakes.
* Easy to add optimization passes.
* Support for several targets.
x86/x86_64, mips, Sparc, ARM, ...
* A port of gcc/g++.
Very useful to see what kind of IR another compiler generates.
* A clean, library based structure.
I was able to combine LLVM libraries into a single front end
That parses, optimizes, links, and does inter procedural
optimizations, inlining, etc. of the IR very easily.
I started using LLVM in the beginning of December of last year and by
the end of the year was able to compile and run a non-trivial program
(bzip2).
I generally keep current with the LLVM sources and I have had very few
cases where the API has changed to the point that I've had to update my
code.
If you're interested, my stuff is described (sort of!) at http://ellcc.org
-Rich
Return to the
comp.compilers page.
Search the
comp.compilers archives again.