summaryrefslogtreecommitdiff
path: root/rts/Updates.h
diff options
context:
space:
mode:
authorAndreas Klebinger <klebinger.andreas@gmx.at>2022-04-16 00:41:40 +0200
committerAndreas Klebinger <klebinger.andreas@gmx.at>2022-04-18 16:53:48 +0200
commit77b51d1ed4555359759c81b7b60c19ff8bc2c5e2 (patch)
tree99684f1b9f0765cd670b368022c5c0b693b773ee /rts/Updates.h
parentd8392f6a714b5646d43ed54eee0d028f714da717 (diff)
downloadhaskell-wip/andreask/fix_unarise.tar.gz
Fix a shadowing issue in StgUnarise.wip/andreask/fix_unarise
For I assume performance reasons we don't record no-op replacements during unarise. This lead to problems with code like this: f = \(Eta_B0 :: VoidType) x1 x2 -> ... let foo = \(Eta_B0 :: LiftedType) -> g x y Eta_B0 in ... Here we would record the outer Eta_B0 as void rep, but would not shadow Eta_B0 inside `foo` because this arg is single-rep and so doesn't need to replaced. But this means when looking at occurence sites we would check the env and assume it's void rep based on the entry we made for the (no longer in scope) outer `Eta_B0`. Fixes #21396 and the ticket has a few more details.
Diffstat (limited to 'rts/Updates.h')
0 files changed, 0 insertions, 0 deletions