inside the GHC code generator

Rene de Visser rene_de_visser at hotmail.com
Thu Feb 23 09:32:21 EST 2006


>seems that you don;t understand the situation. ghc compiles Haskell to
>language called "core", do almost all optimizations at level of this
>language, then translates final result to the "STG" language from that
>the C-- code is generated. changing the translation of STG can't
>prevent ANY ghc optimization. although iy is not so easy because ghc
>code generation and RTS closely tied together

I should have been a bit clearer here. I meant that optimizations that are 
available from
STG -> Assembler, are better than STG -> C -> Assembler.

GHC currently doesn't do most of the optimizations I am thinking of.
-- Bit tagging to reduce pointer chasing, speed up pattern matching. Due to 
memory latency and speed it is quicker to do bit masking rather than memory 
reads
-- Parameter passing and regisgter usage opimizations that rely on the 
structure of the RTS.
-- Multiple stacks with custom frame layout.
-- dynamic code optimization etc.
-- Taking advantage of special assember instructions and flags.

Though I have also seen comments that you can do a lot of these with GCC if 
you do your own stack and parameter management. i.e. don't use the C stack 
at all.

Though your suggestions are probably better than nothing, which is probably 
what the alternative is (for instance I have not sufficient time to work on 
these things).

Note that I didn't say that the assembly generation of OCAML was better than 
GCC, just that it was comparable.

Rene.




More information about the Glasgow-haskell-users mailing list