From: tom@softlab.se (Tom Rindborg)
Subject: SUMMARY: Code generator generator survey request
Reply-To: tom@softlab.se (Tom Rindborg)
Organization: Compilers Central
Date: Tue, 6 Oct 1992 13:31:52 GMT
Keywords: tools, summary

Some time ago I posted a request for information on available code
generator generators. I would like to thank all the people who
replied, and (by request) post a summary of the replies I got.

First my original posting:

> We are currently investigating the possibilities of porting an IBM
> based compiler written in VSPASCAL, using CGSS for its code generator
> part, to a Sun environment using C.
>
> Part of the investigation is to determine if it is possible to keep
> CGSS or to to find a feasible alternative. We are aware of BEG as an
> alternative, but we do not have much information about anything else.
> This has lead us to consult the wisdom of the net with a couple of
> questions:
>
> 1. What code generator generators are there out there? Does some kind
> of survey exist? What other sources of information are there?
>
> 2. Does anyone have experience of such a task, especially porting CGSS
> based code generators to BEG or to another code generator generator?
> Do any conversion tools exist?
>
> 3. One important issue is efficiency, does anyone have any information
> about or experience of code generators generated by code generator
> generators in this respect? CGSS vs BEG? Anything else?
>
> Any pointers are greatly appreciated!

  Lars Viklund (lvi@ida.liu.se) pointed me to a research report by
  Niclas Andersson and Peter Fritzon at PELAB, Linkoping University
  called "Comparative Evaluation and Industrial Application of Code
  Generator Generators".

Abstract: The past ten to fifteen years has seen active research in the
area of automatically generating the code generator part of compilers from
formal specifications. However, less work has been done on evaluating and
applying these systems in an industrial setting. This paper attempts to
fill this gap.  Three systems for automatic generation of code generators
are evaluated in this paper: CGSS, BEG and TWIG. CGSS is an older
Graham-Glanville style system based on pattern matching through parsing,
whereas BEG and TWIG are more recent systems based on tree pattern
matching combined with dynamic programming. An industrial-strength code
generator previously implemented for a special-purpose language using the
CGSS system is described and compared in some detail to our new
implementation based on the BEG system. Several problems of integrating
local and global register allocation within automatically generated code
generators are described, and some solutions proposed. We finally conclude
that current technology of automatically generating code generators is
viable in an industrial setting. However, further research needs to be
done on the problem of properly integrating register allocation with
instruction selection, when both are generated from declarative
specifications.

  I had seen an earlier version of this report which is directly related to
  our investigation.

  Anton Martin Ertl (anton@mips.complang.tuwien.ac.at), Chris Fraser
  (cwf@research.att.com) and Christopher M. Donawa (donawa@cs.mcgill.ca)
  pointed me to Burg which is available for anonymous ftp from
  kaese.cs.wisc.edu, file pub/burg.shar.Z. I have fetched Burg and looked at
  it, it looks interesting but it is probably not applicable to our current
  invetigation.

  Christopher M. Donawa also writes:

I've used two code generator generators: Twig and BURG.  Twig is the more
flexible, but I prefer BURG.  you can get BURG from kaese.cs.wisc.edu, and
I think david hanson or steven tjiang (at AT&T in NJ) has Twig

: 3. One important issue is efficiency: does anyone have any information
: about or experience of code generators generated by code generator
: generators in this respect? CGSS vs BEG? Anything else?

Twig claims a port for C was made in a day, and the code is quite good.

  According to the research report mentioned above, Twig and BEG have many
  things in common. BEG has some features which probably makes it a better
  choice for us.

  Joseph M Orost (joe@babel.ho.att.com) writes:

If you are talking about the CGSS from Karlsruhe, and previously offered
by Systeam KG, now Alsys: I evaluated it at my old job at Concurrent
Computer and found it impossible to generate good code using it.

At Concurrent, we used PO from Jack Davidson (U. Virginia).  GCC also uses
a modified form of PO.  Now I would look into VPO from Manual Benitez &
Jack Davidson, and also MASCOT from Alsys GMBH (if you can get them to
sell it to you!).

I'm doing RISC back-ends at my current job, for which generators are
definitely overkill.

I have not checked up these systems, but I believe MASCOT is related to
(predecessor?) of BEG (don't quote me on this one though).

  Hank Dietz (hankd@ecn.purdue.edu) writes:

PCCTS (the Purdue Compiler-Construction Tool Set) will have
optimizer/parallelizer/code generator-generator tools released within
the next 6 months or so...  I don't know if you can wait that long.
The current system is available via an email server:

pccts@ecn.purdue.edu

and that is also where you'll find the most up-to-date info on PCCTS
things.  PCCTS is, of course, fully public domain.

  Sounds very interesting, but six months are too long for us to wait.

  Our investigation is not finished yet.

<< Tom Rindborg, SoftLab ab	Phone : +46 13 21 24 70
<< Teknikringen 14		Fax   : +46 13 21 33 14
<< S-583 30 LINKOPING		Email : tom@softlab.se
<< SWEDEN			UUCP  : uunet!mcsun!suenet!heffa!tom
-- 
Send compilers articles to compilers@iecc.cambridge.ma.us or
{ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.