Are join points inlined differently from normal bindings?

Matthew Pickering matthewtpickering at gmail.com
Tue Jan 16 11:15:44 UTC 2018


I have quite a complicated program which relies on the optimiser inlining
very aggressively.

In 8.0.2, it works fine and produces the core I am expecting.

In 8.2.2, one of the bindings is identified as a join point and then
not inlined when doing so would lead to the same code. Bumping the
unfolding-use-threshold to 10 (from 8) causes it to be inlined and
produces the right core.

Here is the core for reference -
https://gist.github.com/mpickering/be30105b97fa7e4149c9fa935d72cd1c

I haven't dug into which exact part of my program introduces this join
point but this seems like a regression from 8.0.2.

However, I make a mailing list post as I unsure how to expect the
inliner to treat join points.

Questions.

1. Does the inliner treat join point bindings differently to normal bindings?
2. How can I stop the compiler introducing this join point which seems
to get in the way of the inliner?

Cheers,

Matt


More information about the ghc-devs mailing list