<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html lang="en" style='--code-editor-font: var(--default-mono-font, "GitLab Mono"), JetBrains Mono, Menlo, DejaVu Sans Mono, Liberation Mono, Consolas, Ubuntu Mono, Courier New, andale mono, lucida console, monospace;'>
<head>
<meta content="text/html; charset=US-ASCII" http-equiv="Content-Type">
<title>
GitLab
</title>
<style data-premailer="ignore" type="text/css">
a { color: #1068bf; }
</style>
<style>img {
max-width: 100%; height: auto;
}
body {
font-size: 0.875rem;
}
body {
-webkit-text-shadow: rgba(255,255,255,0.01) 0 0 1px;
}
body {
font-family: var(--default-regular-font, "GitLab Sans"),-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Noto Sans",Ubuntu,Cantarell,"Helvetica Neue",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"; font-size: inherit;
}
</style>
</head>
<body style='font-size: inherit; -webkit-text-shadow: rgba(255,255,255,0.01) 0 0 1px; font-family: var(--default-regular-font, "GitLab Sans"),-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Noto Sans",Ubuntu,Cantarell,"Helvetica Neue",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";'>
<div class="content">
<h3 style="margin-top: 20px; margin-bottom: 10px;">
Sebastian Graf pushed to branch wip/strictness-barrier at <a href="https://gitlab.haskell.org/ghc/ghc">Glasgow Haskell Compiler / GHC</a>
</h3>
<h4 style="margin-top: 10px; margin-bottom: 10px;">
Commits:
</h4>
<ul>
<li>
<strong style="font-weight: bold;"><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/fb6937192107c6f0f938d99503599bb90aef60fc">fb693719</a></strong>
<div>
<span> by Sebastian Graf </span> <i> at 2024-02-11T19:23:24+01:00 </i>
</div>
<pre class="commit-message" style='white-space: pre-wrap; display: block; font-size: 14px; color: #333238; position: relative; font-family: var(--default-mono-font, "GitLab Mono"),"JetBrains Mono","Menlo","DejaVu Sans Mono","Liberation Mono","Consolas","Ubuntu Mono","Courier New","andale mono","lucida console",monospace; word-break: break-all; word-wrap: break-word; background-color: #fbfafd; border-radius: 2px; margin: 0; padding: 8px 12px; border: 1px solid #dcdcde;'>Introduce `strictnessBarrier#` magic
This commit introduces a new `strictnessBarrier#` magic Id;
see `Note [strictnessBarrier# magic]`.
This is a very useful and versatile primop, as it allows us to
* Demote the out-of-line primop `raiseIO#` into an ordinary function,
demystifying our notion of precise exception (`raiseIO#` is just
`strictnessBarrier#` + `raise#`).
* Define `Control.Exception.evaluate2`, which is `Control.Exception.evaluate`
done right, as discussed in #22935.
* Demote that `seq#` primop into a magic Id which is inlined in CorePrep,
See `Note [seq# magic]`. This fixes #24124.
In particular, doing so gets rid of much code and explanation in Tag
Inference and StgToCmm.
I improved CorePrep a bit to better cope with the code left behind by inlining
`seq#`:
* I implemented a new `Note [Flatten case-bind]` to get better code for
otherwise nested case scrutinees.
* I renamed the contructors of `ArgInfo` to use an `AI` prefix in order to
resolve the clash between `type CpeApp = CoreExpr` and the data constructor
of `ArgInfo`, as well as fixed typos in `Note [CorePrep invariants]`.
Fixes #24252.
* I documented that evaluation order is fixed after CorePrep in
`Note [CorePrep invariants]`.
Fixes #24252 and #24124.
</pre>
</li>
</ul>
<h4 style="margin-top: 10px; margin-bottom: 10px;">
30 changed files:
</h4>
<ul>
<li class="file-stats">
<a href="#0887cf39c5cdf9cf8d6758f410d7dab3023c0d77">
compiler/GHC/Builtin/Names.hs
</a>
</li>
<li class="file-stats">
<a href="#a1519b7fe8a0d4b42e4aaa927fb6ab5b5da0fcdd">
compiler/GHC/Builtin/PrimOps.hs
</a>
</li>
<li class="file-stats">
<a href="#451725cc4e5d443a3b7c2adcdf224840f953b7e2">
compiler/GHC/Builtin/primops.txt.pp
</a>
</li>
<li class="file-stats">
<a href="#aa79261abf782f3dc603af7fbd5c4b08ed3ddb88">
compiler/GHC/Core/Opt/ConstantFold.hs
</a>
</li>
<li class="file-stats">
<a href="#8104fa1b71db6cfc4eb90cd769463d9eb9004619">
compiler/GHC/Core/Opt/DmdAnal.hs
</a>
</li>
<li class="file-stats">
<a href="#09072575aca2480de8c1966011972c529575ba5d">
compiler/GHC/Core/Opt/FloatIn.hs
</a>
</li>
<li class="file-stats">
<a href="#ae6d91a5d028418bbf1431347d659e744e0a3128">
compiler/GHC/Core/Opt/Simplify/Iteration.hs
</a>
</li>
<li class="file-stats">
<a href="#a5d27de4e3111a69f69902c65ecf7b3379f7c49a">
compiler/GHC/CoreToStg/Prep.hs
</a>
</li>
<li class="file-stats">
<a href="#7d90a9320eb9eef000085725b34bb266a8356953">
compiler/GHC/Stg/InferTags.hs
</a>
</li>
<li class="file-stats">
<a href="#7416d04ebab1a8a3348914fe007cd7fe72b925d1">
compiler/GHC/Stg/InferTags/Rewrite.hs
</a>
</li>
<li class="file-stats">
<a href="#77c485508ade5a11428d9fce17204d33c5825722">
compiler/GHC/StgToCmm/Expr.hs
</a>
</li>
<li class="file-stats">
<a href="#d12a108e34fe83acc9c99357ae841e22a0af0a23">
compiler/GHC/StgToCmm/Prim.hs
</a>
</li>
<li class="file-stats">
<a href="#e09f1e9480e87656c84c1bbb39c1441b7884819d">
compiler/GHC/StgToJS/Prim.hs
</a>
</li>
<li class="file-stats">
<a href="#2822d6defa206d9f39e5b5c6318c7b011dfc5b5a">
compiler/GHC/StgToJS/Utils.hs
</a>
</li>
<li class="file-stats">
<a href="#d09e98aae6ad2eb59d08eac7894b68c0ab820cda">
compiler/GHC/Types/Demand.hs
</a>
</li>
<li class="file-stats">
<a href="#261c0c5029eb34eb7436b087d77314f377ff8223">
compiler/GHC/Types/Id/Make.hs
</a>
</li>
<li class="file-stats">
<a href="#e9c0288fd972110bfcc0ee588a5e2471f463900b">
libraries/ghc-internal/src/Control/Exception.hs
</a>
</li>
<li class="file-stats">
<a href="#e7c44090dc85e2fd3c9a64a96c0e9357577e03bf">
libraries/ghc-internal/src/Control/Exception/Base.hs
</a>
</li>
<li class="file-stats">
<a href="#f2ab2b0b6dfed1d62a904a0e52bf844d86b53613">
libraries/ghc-internal/src/GHC/Base.hs
</a>
</li>
<li class="file-stats">
<a href="#90b8a44c6fd8661b3208a605fe4bdeb37b3c716d">
libraries/ghc-internal/src/GHC/Exts.hs
</a>
</li>
<li class="file-stats">
<a href="#50ba83eabe5995f8d9b6e93da67ae6a646f8f1f8">
libraries/ghc-internal/src/GHC/IO.hs
</a>
</li>
<li class="file-stats">
<a href="#f648a145b1e5b58263f7611c82751b8686c77085">
libraries/ghc-internal/src/GHC/IO.hs-boot
</a>
</li>
<li class="file-stats">
<a href="#b13e00d3c0d016e99b9b9688ccb0fb02c8c0e60a">
libraries/ghc-prim/GHC/Magic.hs
</a>
</li>
<li class="file-stats">
<a href="#deed6a3bec2843fc56bafbd3ae930f535197b3a6">
rts/Exception.cmm
</a>
</li>
<li class="file-stats">
<a href="#6db965f97cbab901f493506a385bcf1283009921">
rts/PrimOps.cmm
</a>
</li>
<li class="file-stats">
<a href="#16c842a51a135c8ef2c7c7f94336544868348a3c">
rts/RtsSymbols.c
</a>
</li>
<li class="file-stats">
<a href="#4f5d8a62e14906b85d22aa560fdb6d7c1bc2cb8e">
rts/include/stg/MiscClosures.h
</a>
</li>
<li class="file-stats">
<a href="#01f469b80ac4b144b4d86bfb6925d830f0fdad63">
<span class="new-file">
+
testsuite/tests/core-to-stg/T24124.hs
</span>
</a>
</li>
<li class="file-stats">
<a href="#bcfb349b3f1b30798c71a2efcedda56bb00a603a">
<span class="new-file">
+
testsuite/tests/core-to-stg/T24124.stderr
</span>
</a>
</li>
<li class="file-stats">
<a href="#db5fa9ceaecf9949d2272ce2adeacddb61492974">
testsuite/tests/core-to-stg/all.T
</a>
</li>
</ul>
<h5 style="margin-top: 10px; margin-bottom: 10px; font-size: 0.875rem;">
The diff was not included because it is too large.
</h5>
</div>
<div class="footer" style="margin-top: 10px;">
<p style="font-size: small; color: #737278;">
—
<br>
<a href="https://gitlab.haskell.org/ghc/ghc/-/commit/fb6937192107c6f0f938d99503599bb90aef60fc">View it on GitLab</a>.
<br>
You're receiving this email because of your account on <a target="_blank" rel="noopener noreferrer" href="https://gitlab.haskell.org">gitlab.haskell.org</a>. <a href="https://gitlab.haskell.org/-/profile/notifications" target="_blank" rel="noopener noreferrer" class="mng-notif-link">Manage all notifications</a> · <a href="https://gitlab.haskell.org/help" target="_blank" rel="noopener noreferrer" class="help-link">Help</a>
<script type="application/ld+json">{"@context":"http://schema.org","@type":"EmailMessage","action":{"@type":"ViewAction","name":"View Commit","url":"https://gitlab.haskell.org/ghc/ghc/-/commit/fb6937192107c6f0f938d99503599bb90aef60fc"}}</script>
</p>
</div>
</body>
</html>