Re: What to put behind my front-end?

Richard Pennington <rich@pennware.com>
Wed, 20 Aug 2008 05:33:02 -0500

          From comp.compilers

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)
| List of all articles for this month |

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


Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.