Skip to content
  • Simon Peyton Jones's avatar
    Inline implication constraints · 85e16365
    Simon Peyton Jones authored
    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. 
    
    85e16365