On Thu, 2006-03-30 at 20:23 +0100, Duncan Coutts wrote:

Things are very slowly becoming clearer...

> We compiled a little module with the stage1 compiler. So we get
> registerised output assembly. It is using machine registers and making
> tail calls. We've looked through the assembly but we can't see anything
> obviously wrong yet.

Well as I said, we were not using the mangler because it wasn't working.
But of course that means that we can't use tail calls! Doh.

So the code was trying to make tail calls, and we couldn't see anything
obviously wrong with the calling sequence. But if we're not using the
mangler then 

> I assume it's possible to enable the various aspects of the registerised
> built one by one and have something (mostly) working in between?

So no. :-) There are dependencies between them which we didn't fully
understand at the beginning.

What would you recommend is the bat way for us to verify that each bit
of the registerised build is working? If we turn everything on including
the mangler and it breaks where do we start debugging?

Is it possible to build without tailcalls (ie using the
mini-interpreter) but using the stg->machine register mappings? Or how
about the other way around - using tail calls (& that aspect of the
mangler) but not using any machine regs. And similarly, can we not turn
on the tables next to code bits?

What's the best way of building stage1/stage2 ghc and all the C code it
generates with debugging info?

We're using this mk/build.mk:

SRC_HC_OPTS     = -H32m -O0
GhcStage1HcOpts = -O0 -DDEBUG
GhcStage2HcOpts = -O0 -DDEBUG -optc-g
GhcLibHcOpts    =
GhcLibWays      = debug
SplitObjs       = NO


Sorry, lots of questions. :-)

But if we can get registerised alpha working, we'll try hppa & mips
next... ;-)

Duncan

_______________________________________________
Glasgow-haskell-bugs mailing list
Glasgow-haskell-bugs@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs

Reply via email to