[LLVMdev] Porting LLVM backend is no fun yet

Greg McGary greg at mcgary.org
Sat Apr 11 17:03:04 PDT 2009

As we've already seen, David Chisnall prefers hacking LLVM over GCC (see 
http://www.informit.com/articles/article.aspx?p=1215438): "In contrast, 
every time I look at the GCC code, it takes two people to
prevent me from clawing my eyeballs out."

I'm sorry to report that so-far I have had the opposite experience.  
Some years ago, I ported binutils (via CGEN) and GCC to an embedded RISC 
CPU and found it the process straightforward and pleasant.  CGEN was 
especially handy for describing a sometimes quirky RISC instruction set 
and offered great flexibility for factoring-out commonalities.  By 
contrast, I have found TableGen to be much more rigid and brittle.  
There are too many constructs that need to be special-cased, and the 
existing ports do them in gratuitously different ways.  There also seem 
to be too many layers of classes and helper functions in proportion to 
what's being specified.  I guess that sums-up my gripe: low signal/noise 
and gratuitous complexity.  Sorry to be complaining rather than 
proposing solutions.  When I better get the hang of all of this, I 
expect to have some ideas on how to improve TableGen.  Is there a 
development plan or wishlist for TableGen?  I see nothing on the wiki yet.

I must also say that the LLVM code is considerably "denser" because of 
the unfortunate choice of BiCapitalizedIdentifierNames.  Underscores 
lend some horizontal whitespace to names and make their subtokens 
visually distict.  BiCapped code is kinda like German with its 
cumbersome compound nouns.

Enough complaining for now--back to banging skull on stone!  8^)


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20090411/71df421b/attachment.html>

More information about the llvm-dev mailing list