<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html lang="en">
<head>
<meta content="text/html; charset=US-ASCII" http-equiv="Content-Type">
<title>
GitLab
</title>



<style>img {
max-width: 100%; height: auto;
}
</style>
</head>
<body>
<div class="content">

<h3>
Sebastian Graf pushed to branch wip/nested-cpr-2019
at <a href="https://gitlab.haskell.org/ghc/ghc">Glasgow Haskell Compiler / GHC</a>
</h3>
<h4>
Commits:
</h4>
<ul>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/ede241268171e8eee1e750d88ff356ddbfc357f2">ede24126</a></strong>
<div>
<span>by Takenobu Tani</span>
<i>at 2020-05-27T00:13:55-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">core-spec: Modify file paths according to new module hierarchy

This patch updates file paths according to new module hierarchy [1]:

  * GHC/Core.hs                <= coreSyn/CoreSyn.hs
  * GHC/Core/Coercion.hs       <= types/Coercion.hs
  * GHC/Core/Coercion/Axiom.hs <= types/CoAxiom.hs
  * GHC/Core/Coercion/Opt.hs   <= types/OptCoercion.hs
  * GHC/Core/DataCon.hs        <= basicTypes/DataCon.hs
  * GHC/Core/FamInstEnv.hs     <= types/FamInstEnv.hs
  * GHC/Core/Lint.hs           <= coreSyn/CoreLint.hs
  * GHC/Core/Subst.hs          <= coreSyn/CoreSubst.hs
  * GHC/Core/TyCo/Rep.hs       <= types/TyCoRep.hs
  * GHC/Core/TyCon.hs          <= types/TyCon.hs
  * GHC/Core/Type.hs           <= types/Type.hs
  * GHC/Core/Unify.hs          <= types/Unify.hs
  * GHC/Types/Literal.hs       <= basicTypes/Literal.hs
  * GHC/Types/Var.hs           <= basicTypes/Var.hs

[1]: https://gitlab.haskell.org/ghc/ghc/-/wikis/Make-GHC-codebase-more-modular

[skip ci]
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/04750304deae2128a8350e28224e1f62ae949820">04750304</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-05-27T00:14:33-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">eventlog: Fix racy flushing

Previously no attempt was made to avoid multiple threads writing their
capability-local eventlog buffers to the eventlog writer simultaneously.
This could result in multiple eventlog streams being interleaved. Fix
this by documenting that the EventLogWriter's write() and flush()
functions may be called reentrantly and fix the default writer to
protect its FILE* by a mutex.

Fixes #18210.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/d6203f24cf421749616a247c047a9b44192f963a">d6203f24</a></strong>
<div>
<span>by Joshua Price</span>
<i>at 2020-05-27T00:15:17-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Make `identifier` parse unparenthesized `->` (#18060)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/2eabe61c943bf522b1e425edfef1ffa5a3d6af59">2eabe61c</a></strong>
<div>
<span>by Sebastian Graf</span>
<i>at 2020-05-27T18:29:58+02:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Nested CPR
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/f69d654e48acb0aa7a39ba6b8e7fa0c992ace132">f69d654e</a></strong>
<div>
<span>by Sebastian Graf</span>
<i>at 2020-05-27T18:29:58+02:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Move tests from stranal to cpranal
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/f6f67aa7f939c167b0da72208bfc7b09e09bdca9">f6f67aa7</a></strong>
<div>
<span>by Sebastian Graf</span>
<i>at 2020-05-27T18:29:58+02:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Accept FacState
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/8f37b25c530da7a55e16c77be3a7667c1698fc3d">8f37b25c</a></strong>
<div>
<span>by Sebastian Graf</span>
<i>at 2020-05-27T18:29:58+02:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Factor Cpr and Termination into a joint lattice

As a result, we don't even have to export Termination from Cpr. Neat!

Also I realised there is a simpler and more sound way to generate and
unleash CPR signatures.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/a29e5b3fe7f3ef6e2e45426fb0809dfa25d68f3c">a29e5b3f</a></strong>
<div>
<span>by Sebastian Graf</span>
<i>at 2020-05-27T18:29:58+02:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Consider unboxing effects of WW better and get rid of hack
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/9373a877efd043c5cce4cac47d3ff53a4c6f3967">9373a877</a></strong>
<div>
<span>by Sebastian Graf</span>
<i>at 2020-05-27T18:29:58+02:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">stuff
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/503b3fc0924dafa09774c17543eb0099e1cd26f6">503b3fc0</a></strong>
<div>
<span>by Sebastian Graf</span>
<i>at 2020-05-27T18:29:58+02:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Debug output
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/4b2145d25aeb5618dee5372ff22f0beb49253ae0">4b2145d2</a></strong>
<div>
<span>by Sebastian Graf</span>
<i>at 2020-05-27T18:29:58+02:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">A slew of testsuite changes
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/f9e60261075f055e19066d0235dcfa5e0d71ad20">f9e60261</a></strong>
<div>
<span>by Sebastian Graf</span>
<i>at 2020-05-27T18:29:58+02:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Fix T1600
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/aece58bab28b98ae7e9c8808412f7e1d30077fc0">aece58ba</a></strong>
<div>
<span>by Sebastian Graf</span>
<i>at 2020-05-27T18:29:58+02:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Inline `decodeDoubleInteger` and constant-fold `decodeDouble_Int64#` instead

Currently, `decodeDoubleInteger` is known-key so that it can be
recognised in constant folding. But that is very brittle and doesn't
survive worker/wrapper, which we even do for
`NOINLINE`/`CONSTANT_FOLDED` things since #13143.
Also it is a trade-off: The implementation of `decodeDoubleInteger`
allocates an `Integer` box that never cancels aways if we don't inline
it.

Hence we recognise the `decodeDouble_Int64#` primop instead in constant
folding, so that we can inline `decodeDoubleInteger`.

You may wonder how this affects performance of code using
`integer-simple`; Apparently, according to @hsyl20 this is not a concern
since we will hopefully land !2231 soon.

Fixes #18092.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/772ef520a7004479859197e368fe0f4897e85327">772ef520</a></strong>
<div>
<span>by Sebastian Graf</span>
<i>at 2020-05-27T18:29:58+02:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Fix primop termination
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/7c883ae994207d3742973b62458febc9a9c185c8">7c883ae9</a></strong>
<div>
<span>by Sebastian Graf</span>
<i>at 2020-05-27T18:29:58+02:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Test for DataCon wrapper CPR
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/10f52230600f5f0c96dace5f834fab3fc4a1d4d7">10f52230</a></strong>
<div>
<span>by Sebastian Graf</span>
<i>at 2020-05-27T18:29:58+02:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Fix CPR of bottoming functions/primops
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/d6171905d6c2736756878517d6a30e073bf58033">d6171905</a></strong>
<div>
<span>by Sebastian Graf</span>
<i>at 2020-05-27T18:29:58+02:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Fix DataConWrapperCpr and accept other test outputs
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/aa4568f9f6f019301c56bce9a5d1a7203616db43">aa4568f9</a></strong>
<div>
<span>by Sebastian Graf</span>
<i>at 2020-05-27T18:29:58+02:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Accept two more changed test outputs
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/50f84626728006bcf217944bd85776de503fa9a8">50f84626</a></strong>
<div>
<span>by Sebastian Graf</span>
<i>at 2020-05-27T18:29:58+02:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Update CaseBinderCPR with a new function
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/ea7ec31cb6c54931694e866f09e7a66679cfe379">ea7ec31c</a></strong>
<div>
<span>by Sebastian Graf</span>
<i>at 2020-05-27T18:29:58+02:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Don't give the case binder the CPR property
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/8d214ac7d40c2ced71d14b6fdf72a1f096153121">8d214ac7</a></strong>
<div>
<span>by Sebastian Graf</span>
<i>at 2020-05-27T18:29:58+02:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Prune CPR sigs to constant depth on all bindings
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/fcd805a1b1c9db0939a7c1279488fcf031c266cc">fcd805a1</a></strong>
<div>
<span>by Sebastian Graf</span>
<i>at 2020-05-27T18:29:58+02:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Use variable length coding for ConTags
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/943c365e938cac6172c152721f038d0e343e2e11">943c365e</a></strong>
<div>
<span>by Sebastian Graf</span>
<i>at 2020-05-27T18:29:58+02:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Accept testuite output
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/e2c34b5dba824f6f2b161bad1331c4e5c60b0ff2">e2c34b5d</a></strong>
<div>
<span>by Sebastian Graf</span>
<i>at 2020-05-27T18:29:58+02:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Don't attach CPR sigs to expandable bindings; transform their unfoldings instead
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/4d593ea45f1068f10cc4a5061df9b869da51e0f1">4d593ea4</a></strong>
<div>
<span>by Sebastian Graf</span>
<i>at 2020-05-27T18:29:58+02:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Revert "Don't give the case binder the CPR property"

This reverts commit 910edd76d5fe68b58c74f3805112f9faef4f2788.

It seems we broke too much with this change. We lost our big win in
`fish`.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/4d1b3a93dd821fe07beee7bd64a49efe0cdf5cae">4d1b3a93</a></strong>
<div>
<span>by Sebastian Graf</span>
<i>at 2020-05-27T18:29:58+02:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">A more modular and configurable approach to optimistic case binder CPR
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/101c4954398d55e1f768ff948d68da926e932f0c">101c4954</a></strong>
<div>
<span>by Sebastian Graf</span>
<i>at 2020-05-27T18:29:58+02:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Fix T9291
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/50bb0d161a67e148fe91fe272d238a2b89032169">50bb0d16</a></strong>
<div>
<span>by Sebastian Graf</span>
<i>at 2020-05-27T18:29:58+02:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Document -fcase-binder-cpr-depth in the user's guide
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/2f47a43a95ffccefc77017e7a04521c7f1c21359">2f47a43a</a></strong>
<div>
<span>by Sebastian Graf</span>
<i>at 2020-05-27T18:29:58+02:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Rebase woes
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/ae2fb002b696a11d729b01af45b044eff1a781e0">ae2fb002</a></strong>
<div>
<span>by Sebastian Graf</span>
<i>at 2020-05-27T18:29:58+02:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Testsuite changes
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/06182f53aaf8d65cc7047cc11f393da44f387859">06182f53</a></strong>
<div>
<span>by Sebastian Graf</span>
<i>at 2020-05-27T18:29:58+02:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Refactoring around cprAnalBind
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/d4711127433dc3b74a3ecc76eec10b7c7eee584a">d4711127</a></strong>
<div>
<span>by Sebastian Graf</span>
<i>at 2020-05-27T18:29:58+02:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Fix case binder CPR by not looking into unfoldings of case binders
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/22b553642c0b8aabfa62096fd9851073f38416b2">22b55364</a></strong>
<div>
<span>by Sebastian Graf</span>
<i>at 2020-05-27T18:29:58+02:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Regard all arity 0 bindings (incl. DataCon apps) as thunks
</pre>
</li>
</ul>
<h4>30 changed files:</h4>
<ul>
<li class="file-stats">
<a href="#35cff95f9f44690fc50b44bbe8ac3c554c7d5a5e">
compiler/GHC/Core/Make.hs
</a>
</li>
<li class="file-stats">
<a href="#c3967bb9d3e8f5aae2dd111b5a335b48c21c1999">
compiler/GHC/Core/Opt/Arity.hs
</a>
</li>
<li class="file-stats">
<a href="#aa79261abf782f3dc603af7fbd5c4b08ed3ddb88">
compiler/GHC/Core/Opt/ConstantFold.hs
</a>
</li>
<li class="file-stats">
<a href="#c1bf6b849619bc8d7ef37a97d993dbfaa9966f7b">
compiler/GHC/Core/Opt/CprAnal.hs
</a>
</li>
<li class="file-stats">
<a href="#cc763cdd1967f5d921161a32f64136cfcf0332c5">
compiler/GHC/Core/Opt/SetLevels.hs
</a>
</li>
<li class="file-stats">
<a href="#f168a93cde5e2aec2441d6331dfe500172df4af3">
compiler/GHC/Core/Opt/Simplify.hs
</a>
</li>
<li class="file-stats">
<a href="#5b215b0e109123e4bef5434854f18e2f61c45b88">
compiler/GHC/Core/Opt/WorkWrap.hs
</a>
</li>
<li class="file-stats">
<a href="#f4421b4e35592648510c877ecf55b1af2b96dcee">
compiler/GHC/Core/Opt/WorkWrap/Utils.hs
</a>
</li>
<li class="file-stats">
<a href="#bbf06eb5d4f0db7bc3213b84b9f5822710ff7be8">
compiler/GHC/CoreToIface.hs
</a>
</li>
<li class="file-stats">
<a href="#f4ae6618b39d5ee4af8302b821aa7e38097a84b7">
compiler/GHC/Data/Maybe.hs
</a>
</li>
<li class="file-stats">
<a href="#2e5692f568fd7b67a6b172e2a60469da8392508c">
compiler/GHC/Driver/Flags.hs
</a>
</li>
<li class="file-stats">
<a href="#774d88050336ef660c7a219fb06c480c2fc639bc">
compiler/GHC/Driver/Session.hs
</a>
</li>
<li class="file-stats">
<a href="#079d6b28856775716c78fdd4a4b35bb45a59002c">
compiler/GHC/Iface/Syntax.hs
</a>
</li>
<li class="file-stats">
<a href="#d11203a9321005ba51a16d751c86f609d1f18c71">
compiler/GHC/Iface/Tidy.hs
</a>
</li>
<li class="file-stats">
<a href="#bf951467d4a9aa443cb109cb4c84a2891945649b">
compiler/GHC/Parser.y
</a>
</li>
<li class="file-stats">
<a href="#5a3376ebe9ef8294e13f1fb3761637fa76cd1558">
compiler/GHC/Types/Cpr.hs
</a>
</li>
<li class="file-stats">
<a href="#d09e98aae6ad2eb59d08eac7894b68c0ab820cda">
compiler/GHC/Types/Demand.hs
</a>
</li>
<li class="file-stats">
<a href="#38110817cdbc9a34d2b80a14070cabc7515c808a">
compiler/GHC/Types/Id/Info.hs
</a>
</li>
<li class="file-stats">
<a href="#261c0c5029eb34eb7436b087d77314f377ff8223">
compiler/GHC/Types/Id/Make.hs
</a>
</li>
<li class="file-stats">
<a href="#f740374ad9d1ce333c9d2992b2feda632e24371f">
docs/core-spec/CoreLint.ott
</a>
</li>
<li class="file-stats">
<a href="#560a2a2363bd7c0d01f90fdb07e153565ada8556">
docs/core-spec/CoreSyn.ott
</a>
</li>
<li class="file-stats">
<a href="#a088d80ab8c32a211cb927ba7d489370cd5eb4fe">
docs/core-spec/README
</a>
</li>
<li class="file-stats">
<a href="#7dc5395d86b92c5a2b05aa2e9c13c1635f051da8">
docs/core-spec/core-spec.mng
</a>
</li>
<li class="file-stats">
<a href="#992e7eb1bd13e4d31f52ca068190ea73dba7e829">
docs/core-spec/core-spec.pdf
</a>
</li>
<li class="file-stats">
<a href="#6ae923e173536bf0ddb39552416a7e21767287db">
docs/users_guide/runtime_control.rst
</a>
</li>
<li class="file-stats">
<a href="#2e45f2cd303dd998950a7c8042e796a5b2abd64f">
docs/users_guide/using-optimisation.rst
</a>
</li>
<li class="file-stats">
<a href="#a1d25ba13887eca47ad71301d419574bea4696a0">
includes/rts/EventLogWriter.h
</a>
</li>
<li class="file-stats">
<a href="#cb2fcd7df62c53e64e73858c4413c1e22fd30f24">
libraries/integer-gmp/src/GHC/Integer/Type.hs
</a>
</li>
<li class="file-stats">
<a href="#c3e03f58006993eb453b46fb32b8425e5d10f2f3">
rts/eventlog/EventLogWriter.c
</a>
</li>
<li class="file-stats">
<a href="#2ac98cc8621d6bfdea8f2b4778708fd4cc6b2a43">
testsuite/tests/stranal/sigs/CaseBinderCPR.hs

testsuite/tests/cpranal/sigs/CaseBinderCPR.hs
</a>
</li>
</ul>
<h5>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: #777;">

<br>
<a href="https://gitlab.haskell.org/ghc/ghc/-/compare/a324360bdcc55e8825f04425969fd2d4b1c501df...22b553642c0b8aabfa62096fd9851073f38416b2">View it on GitLab</a>.
<br>
You're receiving this email because of your account on gitlab.haskell.org.
If you'd like to receive fewer emails, you can
adjust your notification settings.



</p>
</div>
</body>
</html>