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.
Showing with 26 additions and 4 deletions