Are join points inlined differently from normal bindings?

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Are join points inlined differently from normal bindings?

Matthew Pickering
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
_______________________________________________
ghc-devs mailing list
[hidden email]
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
Reply | Threaded
Open this post in threaded view
|

RE: Are join points inlined differently from normal bindings?

GHC - devs mailing list
| 1. Does the inliner treat join point bindings differently to normal
| bindings?

I don't think so.  Use -dverbose-core2core -ddump-inlinings -ddump-occur-anal to see exactly what is getting inlined and why.

| 2. How can I stop the compiler introducing this join point which seems to
| get in the way of the inliner?

I don't think you can.  I don't see why they should get in the way ... quite the reverse actually.

Simon

| -----Original Message-----
| From: ghc-devs [mailto:[hidden email]] On Behalf Of Matthew
| Pickering
| Sent: 16 January 2018 11:16
| To: GHC developers <[hidden email]>
| Subject: Are join points inlined differently from normal bindings?
|
| 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://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgist.git
| hub.com%2Fmpickering%2Fbe30105b97fa7e4149c9fa935d72cd1c&data=02%7C01%7Csi
| monpj%40microsoft.com%7C4bdf68e2ca8e480b1ba808d55cd2a9db%7C72f988bf86f141
| af91ab2d7cd011db47%7C1%7C0%7C636516982263961282&sdata=W59V18L00glmNB7XCKB
| B90hTEU3QrgiT9rhGgO2ezec%3D&reserved=0
|
| 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
| _______________________________________________
| ghc-devs mailing list
| [hidden email]
| https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fmail.hask
| ell.org%2Fcgi-bin%2Fmailman%2Flistinfo%2Fghc-
| devs&data=02%7C01%7Csimonpj%40microsoft.com%7C4bdf68e2ca8e480b1ba808d55cd
| 2a9db%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636516982263961282&sda
| ta=iNkZMaLfXCcP2ulWv2AlfVTvVq3LvsSadB6BytF6NUg%3D&reserved=0
_______________________________________________
ghc-devs mailing list
[hidden email]
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs