diff options
author | Simon Peyton Jones <simonpj@microsoft.com> | 2021-04-14 16:45:17 +0100 |
---|---|---|
committer | Marge Bot <ben+marge-bot@smart-cactus.org> | 2021-04-15 12:28:18 -0400 |
commit | 0a8c14bd5a5438b1d042ad279b8ffff1bc867e7e (patch) | |
tree | e4b2afa56c4010704a0da1d4041081c4bfc42881 /testsuite/tests/parser/should_compile/T14189.stderr | |
parent | da92e7288fe9c0e83768b7dd0898bca30b9ff2ce (diff) | |
download | haskell-0a8c14bd5a5438b1d042ad279b8ffff1bc867e7e.tar.gz |
Fix handling ze_meta_tv_env in GHC.Tc.Utils.Zonk
As #19668 showed, there was an /asymptotic/ slow-down in zonking in
GHC 9.0, exposed in test T9198. The bug was actually present in earlier
compilers, but by a fluke didn't actually show up in any of our tests;
but adding Quick Look exposed it.
The bug was that in zonkTyVarOcc we
1. read the meta-tyvar-env variable
2. looked up the variable in the env
3. found a 'miss'
4. looked in the variable, found `Indirect ty`
5. zonked `ty`
6. update the env *gotten from step 1* to map the variable
to its zonked type.
The bug is that we thereby threw away all teh work done in step 4.
In T9198 that made an enormous, indeed asymptotic difference.
The fix is easy: use updTcRef.
I commented in `Note [Sharing when zonking to Type]`
-------------------------
Metric Decrease:
T9198
-------------------------
Diffstat (limited to 'testsuite/tests/parser/should_compile/T14189.stderr')
0 files changed, 0 insertions, 0 deletions