[MLton] A little bug
Stephen Weeks
MLton@mlton.org
Thu, 10 Nov 2005 15:45:07 -0800
> Indeed, also a bug. While the pass that manifests the bug is
> refFlatten, it turns out that the actual bug is in the SSA2
> shrinker.
Thanks for finding the bug. I am thankful it wasn't in refFlatten,
which has been a never ending source of problems.
> The problem is that the tuple (re)construction optimization in the
> SSA2 shrinker should not occur when either the newly constructed
> tuple or the original tuple contains mutable fields.
...
> It's probably all of a 2 or 3 line fix to the shrinker.
The test was already there to turn off tuple reconstruction if the
original tuple is mutable. I added the test to turn it off if the
reconstructed tuple is mutable.
BTW, in looking at the code, I noticed that we only do tuple
reconstruction for anonymous tuples (i.e. those with no constructor).
There's no reason we shouldn't do it for tuples with a specific
constructor too. If anyone is interested in learning about the SSA
shrinker and making a simple improvement, that would be a good one to
do. We'd be happy to answer any questions.