patch applied (ghc): Inline implication constraints

Simon Peyton Jones simonpj at microsoft.com
Mon Nov 5 17:24:34 EST 2007


Mon Nov  5 14:08:07 PST 2007  simonpj at microsoft.com
  * Inline implication constraints
  
  This patch fixes Trac #1643, where Lennart found that GHC was generating
  code with unnecessary dictionaries.  The reason was that we were getting
  an implication constraint floated out of an INLINE (actually an instance
  decl), and the implication constraint therefore wasn't inlined even 
  though it was used only once (but inside the INLINE).  Thus we were 
  getting:
  
  	ic = \d -> <stuff>
  	foo = _inline_me_ (...ic...)
  
  Then 'foo' gets inlined in lots of places, but 'ic' now looks a bit 
  big.  
  
  But implication constraints should *always* be inlined; they are just
  artefacts of the constraint simplifier.
  
  This patch solves the problem, by adding a WpInline form to the HsWrap
  type. 
  
  

    M ./compiler/deSugar/DsBinds.lhs +2
    M ./compiler/hsSyn/HsBinds.lhs +2
    M ./compiler/typecheck/TcHsSyn.lhs -1 +2
    M ./compiler/typecheck/TcSimplify.lhs -3 +20



More information about the Cvs-ghc mailing list