Hoopl vs LLVM?
Edward Z. Yang
ezyang at MIT.EDU
Mon Dec 10 23:33:14 CET 2012
Hoopl passes live in compiler/cmm; searching for DataflowLattice will
turn up lattice definitions which are the core of the analyses and rewrites.
Unfortunately, the number of true Hoopl optimizations was somewhat reduced
when Simon Marlow did aggressive performance optimizations to get the
new code generator shipped with GHC by default, but I think we hope to
add some more interesting passes for -O3, etc.
Hoopl and LLVM's approaches to optimization are quite different. LLVM
uses SSA representation, whereas Hoopl uses the Chamber-Lerner-Grove
algorithm to do analyses without requiring single-assignment. The other
barrier you're likely to run into is the fact that GHC generated C-- code
looks very different from conventional compiler output.
Hope that helps,
Excerpts from Greg Fitzgerald's message of Mon Dec 10 14:24:02 -0800 2012:
> I don't know my way around the GHC source tree. How can I get the list of
> optimizations implemented with Hoopl? Is there overlap with LLVM's
> optimization passes? If so, has anyone compared the implementations at
> all? Should one group be stealing ideas from the other? Or apples and
More information about the Glasgow-haskell-users