summaryrefslogtreecommitdiff
path: root/compiler/profiling
diff options
context:
space:
mode:
authorSimon Peyton Jones <simonpj@microsoft.com>2018-12-07 12:56:08 +0000
committerSimon Peyton Jones <simonpj@microsoft.com>2018-12-07 14:58:51 +0000
commitf334d20e00e3f4bd217e49216b7e9d9c8779db10 (patch)
treeb2f8d059c0d1d6a7e294716a1ca31d788f922a63 /compiler/profiling
parent5b7ca03995c1d5fbd29ba0e327bb2a1f344c9419 (diff)
downloadhaskell-f334d20e00e3f4bd217e49216b7e9d9c8779db10.tar.gz
Careful tweaking to exprOkForSpeculation
This patch does several things: * Make exprOkForSpeculation ignore evaluatedness of variables See the Note [exprOkForSpeculation and evaluated variables] This means that the binder-swap transformation no longer invaliates the let/app invariant. * Make exprOkForSpeculation return False for DataToTagOp and SeqOp. See Note [exprOkForSpeculation and SeqOp/DataToTagOp] * Remove the 'can_fail' property from dataToTag#; it was always a hack (described in the old Note [dataToTag#] in primops.txt.pp), and now its not necessary because of the fixes above. * Make SetLevels use exprIsHNF, /not/ exprOkForSpeculation, when floating single-alternative cases. See SetLevels Note [Floating single-alternative cases] * Fix a buglet in FloatIn; probably never bites in practice See Note [Dead bindings] Collectively, these changes finally fix Trac #15696.
Diffstat (limited to 'compiler/profiling')
0 files changed, 0 insertions, 0 deletions