
On Wed, Nov 24, 2021 at 11:14:00PM +0000, Simon Peyton Jones via ghc-devs wrote:
| For two join points to be duplicates they need to not only be alpha | equivalent but to also have the same continuation.
Yes exactly. And it would not be hard to adapt the existing CSE pass to support this. Just needs doing.
A ticket and a repo case would be really helpful.
I'll do my best to construct a standalone reproducer that is not mired in ByteString code. The ByteString example should not be too difficult to mimmic in code that relies only on base. Though I might still have to use Foreign.Storable and Foreign.Ptr and some sort of unsafePerformIO variant in there, so that I get essentially the same basic structure of inlining and join points. I guess I'll try removing excess baggage while the basic structure persists, and ideally end up with something small enough. -- Viktor.