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