Changes in Hoopl

Simon Marlow marlowsd at
Tue Aug 27 18:06:02 CEST 2013

On 26/08/13 10:00, Jan Stolarek wrote:
>> 1. This adds a new constraint on the dataflow algorithm, namely that it
>> must traverse the blocks in the correct order.
> I don't follow. From what I've seen in the code Hoopl orders blocks using depth-first traversal.
> For backwards analysis it reverses that order. I don't think that proposed changes will affect
> this. What did I miss?

You didn't miss anything.  The new constraint is that forwards analysis 
*must* process blocks in this order, whereas previously it didn't have to.

>> 2. Has anyone tried implementing this change?  I'm slightly concerned
>> that having a difference between forward and backward analyses might
>> lead to divergence in some of the shared parts of the internals of the
>> algorithm.
> If it turns out that forward and backward cases have to diverge to implement this change, will
> that be acceptable? GHC's specialized Hoopl module (compiler/cmm/Hoopl/Dataflow) already has
> separate functions for handling forward and backward analysis.

But they share the core fixpoint algorithm underneath: fixpoint, 
fixpointAnal, and some auxiliary functions.  It's not a big deal.  This 
code is heavily tuned though, so keep an eye on performance.


More information about the ghc-devs mailing list