GHC API: Access to nativeCodeGen?

Peter A Jonsson pj at ludd.ltu.se
Mon Jul 18 06:41:06 EDT 2005


> If the language you want to generate code for is at the level of C--,
> then you could indeed use GHC's native code generator.  There isn't an
> interface to it exposed by the GHC API, but you can use the interfaces
> directly: the AsmCodeGen module is the top-level of the native code
> generator, and basically takes Cmm (defined in module Cmm) and produces
> assembly code.
> 
> However, if you want to do this, I wonder whether you would be better
> off just using the real C-- compiler.

Ok, I gave it a spin, that was "interesting". Things I wrote down
while looking at it that might be of interest to others:

I tried to build with gcc 3.4.1 and it didn't work very well. Found a
mail from November 2004 (<Message-Id: 419B599C.2020204 at tzi.de>) which
had the same problem. In a reply you said that it was the JMP_-macro
in TailCall.h and changing the cast would make the warning go away. It
did, however I think I messed up with something else since it made
other problems appear. I reverted my changes and switched gcc
instead.

I had perl 5.005_03 first in my path, that made the splitter not
work. Changing to a newer version made it work. Maybe a test could be
added to configure to avoid too old versions of perl? 

All those "Bad eta expand" looks slightly scary when building for the
first time. Found a mail from Simon Peyton Jones which made me less
worried. Maybe it could be documented that those are expected in the
building guide?

The GHC commentary was written for pre-CMM NCG. I tried patching that
while going through the code but I just ended up butchering the
document to basically contain no information whatsoever. I'm not sure
it's helpful at all in its current shape though, unfortunately.

Needed a patch to build NCG. I tried to preserve as much of the
previous structure in order to avoid introducing bugs, but I wasn't
entirely successfull. I've attached the patch and would appreciate if
someone could glance over it looking for obvious errors.

With this patch a bunch of array tests with WAY=normal fails, all in
the same way:

Stack space overflow: current size 8388608 bytes.
Use `+RTS -Ksize' to increase it.

Didn't find any obvious reason for the failure. If anyone wants to
look into it arr005.hs might be a good place to start. 

Did not check much of the other regression tests since the above
failure seems pretty vital to the functioning of the compiler.

/ Peter

-------------- next part --------------
A non-text attachment was scrubbed...
Name: nativegen.patch
Type: text/x-patch
Size: 61863 bytes
Desc: not available
Url : http://www.haskell.org//pipermail/glasgow-haskell-users/attachments/20050718/ddada374/nativegen-0001.bin


More information about the Glasgow-haskell-users mailing list