Remove the `isInlinePragma prag` test
This is a spin off of ticket:11781#comment:118828, where simonpj writes:
What is more mysterious to me is why the unfolding for
$fApplicativeIO_$c*>
doesn't havebindIO
, and thenbindIO
inlined into it, which would allow a cascade of further improvements, which would, I think, produce essentially the same code asthenIO
.The offending corner is this
active_unfolding_gentle id = isInlinePragma prag -- WHY?? && isEarlyActive (inlinePragmaActivation prag)
So I tried removing the
isInlinePragma prag
test, and indeed the code becomes identical.Conclusion:
- I'd love to make the above change to
active_unfolding_gentle
and see if any other performance numbers budge. I doubt that anything will change a lot -- it really only affects whether optimisation happens before or after inlining -- but it should improve compiler performance a bit for that very reason. This could be a separate ticketIncidentally, see #5928 which is somewhat related.
This ticket tracks that idea.