I'll allow myself to ask my second question again:

2) In my algorithm I need to initialize all of the blocks in a graph with 
bottom element of a lattice, except for the entry block, which needs some other 
initial values. I've written something like this:

cmmCopyPropagation dflags graph = do
    let entry_blk = g_entry graph
    g' <- dataflowPassFwd graph [(entry_blk, (Top, Top))] $
            analRewFwd cpLattice cpTransfer cpRewrite
    return . fst $ g'

cpLattice = DataflowLattice "copy propagation" (Bottom, Bottom) cpJoin

However, it seems that Bottom values passed to cpLattice are ignored - I could 
replace second parameter to DataflowLattice with `undefined` and the code would 
still run without causing an error. Is there something obviously wrong in the 
way I pass initial fact values to dataflowPassFwd, or should I look for the 
problem in other parts of my code?

Janek

_______________________________________________
ghc-devs mailing list
ghc-devs@haskell.org
http://www.haskell.org/mailman/listinfo/ghc-devs

Reply via email to