
Hello Greg, 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, Edward 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 oranges?
Thanks, Greg