Some more questions about Cmm pipeline

Jan Stolarek jan.stolarek at
Thu Jul 11 19:40:49 CEST 2013

Thank you both for explanations. I will try to clean up the code of Cmm pipeline a little bit.


----- Oryginalna wiadomość -----
Od: "Simon Marlow" <marlowsd at>
Do: "Jan Stolarek" <jan.stolarek at>
DW: ghc-devs at
Wysłane: czwartek, 11 lipiec 2013 17:52:49
Temat: Re: Some more questions about Cmm pipeline

1. Was a quick hack that I did sometime in the past, it probably didn't work fully. Nowadays LLVM does loopification, so its not clear whether there's any benefit to doing it in cmm (but maybe there's some other payoff that we can get by doing it earlier). 

2. Is Edward Yang's optimisation pass. Disabled because it is crazy expensive; I wrote CmmSink instead which does most of the same things and a few more. We should remove the code now that we're not going to use it. 
On 11 Jul 2013 11:37, "Jan Stolarek" < jan.stolarek at > wrote: 

Hi Simon, 

I have two questions about the Cmm pipeline: 

1. I implemented a pass that replaces tail calls with a copy of the entry block we're calling to. This is slightly extended version of loopification which will hopefully enable further optimisations. Then I noticed that loopification pass used to be implemented (cmm/CmmOpt.hs, line 418) but was commented out (d92bd17ffd8715f77fd49de0fed6e39c8d0ec28b). There's also a comment: "XXX: revisit if we actually want to do this". What was the motivation for removing loopification? Is there a reason why we might not want to do it? 

2. There is a module cmm/CmmRewriteAssignments.hs, which is not used at the moment. What was the motivation for disabling that pass? 


More information about the ghc-devs mailing list