Hi,

Am Donnerstag, den 05.03.2015, 23:05 +0100 schrieb Jan Stolarek:
> > What function I should reach for when I want to look at each block (or
> > each Last node) in an CmmGraph, possibly modifying it and possibly
> > adding auxillary nodes on the way?
>
> Take a look at Compiler.Hoopl.Block in hoopl library - it has some useful 
> functions for working on 
> blocks. blockSplitTail might be what you're looking for if you want to look 
> at the last block.
> If 
> you want to look at each block in a graph you most likely need postorderDfs 
> from CmmUtils. I 
> suggest studying one of existing Cmm passes to see how to traverse a Cmm 
> graph and operate on it. 
> CmmContFlowOpt seems to be a good candidate - good comments, fairly short, 
> uses many functions 
> that you should learn if you want to work with Cmm.

I had a look around, of course. CmmContFlowOpt is not quite a good
example, as it does not generate new blocks (quite obvious from the fact
that there is no UniqSM around to generate the new labels).

Looking at CmmUtils, I guess I could just use
        ofBlockList entry . concatMap myPerBlockOperation . toBlockList

I was expecting something a bit higher level, but maybe it’s that
simple :-)

Thanks!
Joachim
-- 
Joachim “nomeata” Breitner
  m...@joachim-breitner.de • http://www.joachim-breitner.de/
  Jabber: nome...@joachim-breitner.de  • GPG-Key: 0xF0FBF51F
  Debian Developer: nome...@debian.org

Attachment: signature.asc
Description: This is a digitally signed message part

_______________________________________________
ghc-devs mailing list
ghc-devs@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs

Reply via email to