<!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>
Ben Gamari pushed to branch wip/backports
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/324967891a98f77682fa06f30e32c74200dd6acd">32496789</a></strong>
<div>
<span>by Sylvain Henry</span>
<i>at 2020-08-11T17:43:13+02:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Bignum: add support for negative shifts (fix #18499)

shiftR/shiftL support negative arguments despite Haskell 2010 report
saying otherwise. We explicitly test for negative values which is bad
(it gets in the way of constant folding, etc.). Anyway, for consistency
we fix Bits instancesof Integer/Natural.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/b4cccab3ccba82701e66c9c428206b8c3840e67d">b4cccab3</a></strong>
<div>
<span>by Sylvain Henry</span>
<i>at 2020-08-11T17:48:05+02:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Fix bug in Natural multiplication (fix #18509)

A bug was lingering in Natural multiplication (inverting two limbs)
despite QuickCheck tests used during the development leading to wrong
results (independently of the selected backend).
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/817f94f51abb44caec956f32d7d3b915b9cde2af">817f94f5</a></strong>
<div>
<span>by Sylvain Henry</span>
<i>at 2020-08-11T17:48:22+02:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Bignum: fix powMod for gmp backend (#18515)

Also reenable integerPowMod test which had never been reenabled by
mistake.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/eab2511ed2417946ce131b9b4eeb293821fbf5c4">eab2511e</a></strong>
<div>
<span>by Sylvain Henry</span>
<i>at 2020-08-12T11:43:42+02:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Bignum: add backward compat integer-gmp functions

Also enhance bigNatCheck# and isValidNatural test
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/3745bdb69b19e43da5b6a26597e1a95d17cca929">3745bdb6</a></strong>
<div>
<span>by Sylvain Henry</span>
<i>at 2020-08-12T11:43:42+02:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Bignum: add more BigNat compat functions in integer-gmp
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/7cf007ccc145e4ffefb9c3aca5c3273b993b715c">7cf007cc</a></strong>
<div>
<span>by David Binder</span>
<i>at 2020-08-13T18:22:38-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Fix dead link to haskell prime discussion
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/205f168cba27eaa748c06af866d72f29c42f29fe">205f168c</a></strong>
<div>
<span>by BinderDavid</span>
<i>at 2020-08-13T18:22:38-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Replace broken links to old haskell-prime site by working links to gitlab instance.
[skip ci]
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/29794212fdb9cf2bf29597b8b7ef67021c9d2c5e">29794212</a></strong>
<div>
<span>by Daniel Gröber</span>
<i>at 2020-08-13T18:22:38-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Remove length field from FastString
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/f8804cd8df0d532daaa3b32c6765f38205f4ab90">f8804cd8</a></strong>
<div>
<span>by Daniel Gröber</span>
<i>at 2020-08-13T18:22:38-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Use ShortByteString for FastString

There are multiple reasons we want this:

- Fewer allocations: ByteString has 3 fields, ShortByteString just has one.
- ByteString memory is pinned:
  - This can cause fragmentation issues (see for example #13110) but also
  - makes using FastStrings in compact regions impossible.

Metric Decrease:
    T5837
    T12150
    T12234
    T12425
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/5acdf506db7064c8342c12561703660bb83f7512">5acdf506</a></strong>
<div>
<span>by Daniel Gröber</span>
<i>at 2020-08-13T18:22:38-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Pass specialised utf8DecodeChar# to utf8DecodeLazy# for performance

Currently we're passing a indexWord8OffAddr# type function to
utf8DecodeLazy# which then passes it on to utf8DecodeChar#. By passing one
of utf8DecodeCharAddr# or utf8DecodeCharByteArray# instead we benefit from
the inlining and specialization already done for those.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/a9b46ec3541bdeab491e06096bb2f101d8b70ee1">a9b46ec3</a></strong>
<div>
<span>by Daniel Gröber</span>
<i>at 2020-08-13T18:22:38-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Encoding: Add comment about tricky ForeignPtr lifetime
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/fcb9e94d7db2e3f042be473d0276a4f62c43ec8b">fcb9e94d</a></strong>
<div>
<span>by Daniel Gröber</span>
<i>at 2020-08-13T18:22:38-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Use IO constructor instead of `stToIO . ST`
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/44b28e97ef7e0acff34d09309f6301d89055ffdd">44b28e97</a></strong>
<div>
<span>by Daniel Gröber</span>
<i>at 2020-08-13T18:22:38-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Encoding: Remove redundant use of withForeignPtr
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/f0fe989d8c901617679960c23e7925be356d2897">f0fe989d</a></strong>
<div>
<span>by Daniel Gröber</span>
<i>at 2020-08-13T18:22:38-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Encoding: Reformat utf8EncodeShortByteString to be more consistent
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/59cd5cd426ae1365b35ba05c9504c11217fc6879">59cd5cd4</a></strong>
<div>
<span>by Daniel Gröber</span>
<i>at 2020-08-13T18:22:38-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">FastString: Reintroduce character count cache

Metric Increase:
    ManyConstructors

Metric Decrease:
    T4029
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/0f66e49eea26dd32ba66fd6a616e23101fd4c6f9">0f66e49e</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-08-13T18:22:38-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">get-win32-tarballs: Fix detection of missing tarballs

This fixes the error message given by configure when the user
attempts to configure without first download the win32 tarballs.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/3ecac53c676c858d6ed1bd9f083403b5083ad9f3">3ecac53c</a></strong>
<div>
<span>by Andreas Klebinger</span>
<i>at 2020-08-13T18:22:39-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Enable BangPatterns, ScopedTypeVariables for ghc and hadrian by default.

This is only for their respective codebases.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/dbf77b79d94c80eb9f7bc4bf9567b373744cd136">dbf77b79</a></strong>
<div>
<span>by Sylvain Henry</span>
<i>at 2020-08-13T18:22:39-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Remove unused "ncg" flag

This flag has been removed in 066b369de2c6f7da03c88206288dca29ab061b31
in 2011.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/4e22de2a6fbad08544095cf90e471c7fbf363969">4e22de2a</a></strong>
<div>
<span>by Sylvain Henry</span>
<i>at 2020-08-13T18:22:39-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Don't panic if the NCG isn't built (it is always built)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/e27698ce0baf79280c2968b0935a0691eac91eb6">e27698ce</a></strong>
<div>
<span>by Sylvain Henry</span>
<i>at 2020-08-13T18:22:39-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Remove unused sGhcWithNativeCodeGen
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/666acbd43d425c04fc6f1b4b505d9c238ccc1438">666acbd4</a></strong>
<div>
<span>by Sylvain Henry</span>
<i>at 2020-08-13T18:22:39-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Correctly test active backend

Previously we used a platform settings to detect if the native code
generator was used. This was wrong. We need to use the
`DynFlags.hscTarget` field instead.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/ce5408c062bb900942a8506c5a95c8af5cedc5d7">ce5408c0</a></strong>
<div>
<span>by Sylvain Henry</span>
<i>at 2020-08-13T18:22:39-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Replace ghcWithNativeCodeGen with a proper Backend datatype

* Represent backends with a `Backend` datatype in GHC.Driver.Backend

* Don't detect the default backend to use for the target platform at
  compile time in Hadrian/make but at runtime. It makes "Settings"
  simpler and it is a step toward making GHC multi-target.

* The latter change also fixes hadrian which has not been updated to
  take into account that the NCG now supports AIX and PPC64 (cf
  df26b95559fd467abc0a3a4151127c95cb5011b9 and
  d3c1dda60d0ec07fc7f593bfd83ec9457dfa7984)

* Also we don't treat iOS specifically anymore (cf
  cb4878ffd18a3c70f98bdbb413cd3c4d1f054e1f)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/9751d499b69976db48c5c70f13a2eb5574eb75f6">9751d499</a></strong>
<div>
<span>by Tamar Christina</span>
<i>at 2020-08-13T18:22:39-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">winio: restore console cp on exit

(cherry picked from commit cdd0ff16f20ce920c74f9128a1067cbe1bd378c2)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/5438dcece5f5425e382e18b46dfd7d65e399d043">5438dcec</a></strong>
<div>
<span>by Tamar Christina</span>
<i>at 2020-08-13T18:22:39-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">winio: change memory allocation strategy and fix double free errors.

(cherry picked from commit c1f4f81d3a439cd1a8128e4ab11c7caac7cc0ad8)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/5544d17ade3e11d5817d9f9d83f5fe8dcc226533">5544d17a</a></strong>
<div>
<span>by Stefan Schulze Frielinghaus</span>
<i>at 2020-08-13T18:22:39-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Require SMP support in order to build a threaded stage1

Fixes 18266

(cherry picked from commit fc0f6fbcd95f2dc69a8efabbee2d8a485c34cc47)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/e66e281d910de6b98205b4225719e5677b8600fb">e66e281d</a></strong>
<div>
<span>by Matthias Andreas Benkard</span>
<i>at 2020-08-13T18:22:39-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Document loadFramework changes. (#18446)

Adds commentary on the rationale for the changes made in merge request
!3689.

(cherry picked from commit a7c4439a407ad85b76aab9301fda61e7c10183ff)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/986063cfbecee278d7add43c533821cbc5077f72">986063cf</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-08-13T18:22:39-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">rts/win32: Exit with EXIT_HEAPOVERFLOW if memory commit fails

Since switching to the two-step allocator, the `outofmem` test fails via
`osCommitMemory` failing to commit. However, this was previously exiting
with `EXIT_FAILURE`, rather than `EXIT_HEAPOVERFLOW`. I think the latter
is a more reasonable exit code for this case and matches the behavior on
POSIX platforms.

(cherry picked from commit da7269a4472856ba701d956a247599f721e9915e)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/b2f8c6a75d9d504aa032834781cc44744a4ffc30">b2f8c6a7</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-08-13T18:22:39-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">testsuite: Update win32 output for parseTree

(cherry picked from commit f153a1d0a3351ad4d94cef4cef8e63bab5b47008)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/83a0649cd160990c4e61d0dd1f718e9592c8d8b0">83a0649c</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-08-13T18:22:39-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">testsuite: Normalise WinIO error message differences

Previously the old Windows IO manager threw different errors than WinIO.
We now canonicalise these to the WinIO errors.

(cherry picked from commit e91672f0b7185bbafbe8ed1f2ae2cb775111f950)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/97ac5b2a9b393355cfc8e0a26221193dd5ec2bd7">97ac5b2a</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-08-13T18:22:39-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">gitlab-ci: Kill ssh-agent after pushing test metrics

Otherwise the Windows builds hang forever waiting for the process to
terminate.

(cherry picked from commit 9cbfe0868418a531da0872b0c477a15aa67f8861)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/8f1154d3a1dac4c8a0fea6b13dcc57743d9a9a3c">8f1154d3</a></strong>
<div>
<span>by Tamar Christina</span>
<i>at 2020-08-13T18:22:39-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">winio: remove dead argument to stg_newIOPortzh

(cherry picked from commit 8236925fc8cc2e6e3fed61a0676fa65270a4a538)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/39c6fbae5113fed8110d38f00cb472f714ec6e22">39c6fbae</a></strong>
<div>
<span>by Tamar Christina</span>
<i>at 2020-08-13T18:22:39-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">winio: fix detection of tty terminals

(cherry picked from commit ce0a1d678fbc8efa5fd384fd0227b7b3dc97cadd)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/b784c75aa752eb885241ef4413f85ddc879045ec">b784c75a</a></strong>
<div>
<span>by Tamar Christina</span>
<i>at 2020-08-13T18:22:40-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">winio: update codeowners

(cherry picked from commit 52685cf7c077c51e3719e3c4dd5ca8257a99c4ea)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/8388567ea81e037e710347d94cd4dee00c05fbfc">8388567e</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-08-13T18:22:40-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Drop 32-bit Windows support

As noted in #18487, we have reached the end of this road.

(cherry picked from commit aa054d32a8ff69c334293a0d6c9d11b83a236a96)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/353521aba790828370073369d0b919c2a3d2e6a0">353521ab</a></strong>
<div>
<span>by Simon Peyton Jones</span>
<i>at 2020-08-13T18:22:40-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Eta-expand the Simplifier monad

This patch eta-expands the Simplifier's monad, using the method
explained in GHC.Core.Unify Note [The one-shot state monad trick].
It's part of the exta-expansion programme in #18202.

It's a tiny patch, but is worth a 1-2% reduction in bytes-allocated
by the compiler.  Here's the list, based on the compiler-performance
tests in perf/compiler:

                    Reduction in bytes allocated
   T10858(normal)      -0.7%
   T12425(optasm)      -1.3%
   T13056(optasm)      -1.8%
   T14683(normal)      -1.1%
   T15164(normal)      -1.3%
   T15630(normal)      -1.4%
   T17516(normal)      -2.3%
   T18282(normal)      -1.6%
   T18304(normal)      -0.8%
   T1969(normal)       -0.6%
   T4801(normal)       -0.8%
   T5321FD(normal)     -0.7%
   T5321Fun(normal)    -0.5%
   T5642(normal)       -0.9%
   T6048(optasm)       -1.1%
   T9020(optasm)       -2.7%
   T9233(normal)       -0.7%
   T9675(optasm)       -0.5%
   T9961(normal)       -2.9%
   WWRec(normal)       -1.2%

Metric Decrease:
    T12425
    T9020
    T9961

(cherry picked from commit 3d345c9680ab3d766ef43dd8389ccc1eaeca066c)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/c0a3283a6ce9617fcb27b3d79c5467bc10ab80f2">c0a3283a</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-08-13T18:22:40-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">gitlab-ci: Ensure that Hadrian jobs don't download artifacts

Previously the Hadrian jobs had the default dependencies, meaning that
they would download artifacts from all jobs of earlier stages. This is
unneccessary.

(cherry picked from commit 57aca6bba1c000f8542ce94e8b724b0334ff96d4)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/e14ee26b74295e036891a51750300b70021821ce">e14ee26b</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-08-13T18:22:40-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">gitlab-ci: Bump bootstrap compiler to 8.8.4

Hopefully this will make the Windows jobs a bit more reliable.

(cherry picked from commit 0a815cea9fa11ce6ef22aec3525dd7a0df541daf)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/cf9a6c17754ca5ea2e47d68b524a992ac87dc10f">cf9a6c17</a></strong>
<div>
<span>by Simon Peyton Jones</span>
<i>at 2020-08-13T18:22:40-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">This patch addresses the exponential blow-up in the simplifier.

Specifically:
  #13253 exponential inlining
  #10421 ditto
  #18140 strict constructors
  #18282 another nested-function call case

This patch makes one really significant changes: change the way that
mkDupableCont handles StrictArg.  The details are explained in
GHC.Core.Opt.Simplify Note [Duplicating StrictArg].

Specific changes

* In mkDupableCont, when making auxiliary bindings for the other arguments
  of a call, add extra plumbing so that we don't forget the demand on them.
  Otherwise we haev to wait for another round of strictness analysis. But
  actually all the info is to hand.  This change affects:
  - Make the strictness list in ArgInfo be [Demand] instead of [Bool],
    and rename it to ai_dmds.
  - Add as_dmd to ValArg
  - Simplify.makeTrivial takes a Demand
  - mkDupableContWithDmds takes a [Demand]

There are a number of other small changes

1. For Ids that are used at most once in each branch of a case, make
   the occurrence analyser record the total number of syntactic
   occurrences.  Previously we recorded just OneBranch or
   MultipleBranches.

   I thought this was going to be useful, but I ended up barely
   using it; see Note [Note [Suppress exponential blowup] in
   GHC.Core.Opt.Simplify.Utils

   Actual changes:
     * See the occ_n_br field of OneOcc.
     * postInlineUnconditionally

2. I found a small perf buglet in SetLevels; see the new
   function GHC.Core.Opt.SetLevels.hasFreeJoin

3. Remove the sc_cci field of StrictArg.  I found I could get
   its information from the sc_fun field instead.  Less to get
   wrong!

4. In ArgInfo, arrange that ai_dmds and ai_discs have a simpler
   invariant: they line up with the value arguments beyond ai_args
   This allowed a bit of nice refactoring; see isStrictArgInfo,
   lazyArgcontext, strictArgContext

There is virtually no difference in nofib. (The runtime numbers
are bogus -- I tried a few manually.)

        Program           Size    Allocs   Runtime   Elapsed  TotalMem
--------------------------------------------------------------------------------
            fft          +0.0%     -2.0%    -48.3%    -49.4%      0.0%
     multiplier          +0.0%     -2.2%    -50.3%    -50.9%      0.0%
--------------------------------------------------------------------------------
            Min          -0.4%     -2.2%    -59.2%    -60.4%      0.0%
            Max          +0.0%     +0.1%     +3.3%     +4.9%      0.0%
 Geometric Mean          +0.0%     -0.0%    -33.2%    -34.3%     -0.0%

Test T18282 is an existing example of these deeply-nested strict calls.
We get a big decrease in compile time (-85%) because so much less
inlining takes place.

Metric Decrease:
    T18282

(cherry picked from commit 0bd60059b0edfee9e8f66c6817257bbb946656cd)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/6ba13945c91b73fdc6ba275fc0fd1b0f4850ed78">6ba13945</a></strong>
<div>
<span>by Sergei Trofimovich</span>
<i>at 2020-08-13T18:22:40-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">ghc/mk: don't build gmp packages for BIGNUM_BACKEND=native

Before this change make-based `BIGNUM_BACKEND=native` build was failing as:

```
x86_64-pc-linux-gnu-gcc: error: libraries/ghc-bignum/gmp/objs/*.o: No such file or directory
```

This happens because ghc.mk was pulling in gmp-dependent
ghc-bignum library unconditionally. The change avoid building
ghc-bignum.

Bug: https://gitlab.haskell.org/ghc/ghc/-/issues/18437
Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
(cherry picked from commit 39c89862161bf488a6aca9372cbb67690f436ce7)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/59226e202df0e6486a3d194918c7b51f0c3fec91">59226e20</a></strong>
<div>
<span>by Felix Wiemuth</span>
<i>at 2020-08-13T18:22:40-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Fix typo

(cherry picked from commit b9a880fce484d0a87bb794b9d2d8a73e54819011)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/9166d4d6b299f6fdf58fac9a7d4370b60782c6fe">9166d4d6</a></strong>
<div>
<span>by Simon Peyton Jones</span>
<i>at 2020-08-13T18:22:40-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Kill off sc_mult and as_mult fields

They are readily derivable from other fields, so this is more
efficient, and less error prone.

Fixes #18494

(cherry picked from commit bbc5191640761ca9773abc898c077363b7beb4e7)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/505a9d680d566d8c4e95910512a0b396df66f045">505a9d68</a></strong>
<div>
<span>by John Ericson</span>
<i>at 2020-08-13T18:22:40-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">For `-fkeep-going` do not duplicate dependency edge code

We now compute the deps for `-fkeep-going` the same way that the
original graph calculates them, so the edges are correct. Upsweep really
ought to take the graph rather than a topological sort so we are never
recalculating anything, but at least things are recaluclated
consistently now.

(cherry picked from commit 6c68a84254d70280e2dc73485f361787a3503850)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/bd365c1dd37a065aad922d22537af63aaa78b99a">bd365c1d</a></strong>
<div>
<span>by Simon Peyton Jones</span>
<i>at 2020-08-13T18:22:40-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Add two bangs to improve perf of flattening

This tiny patch improves the compile time of flatten-heavy
programs by 1-2%, by adding two bangs.

Addresses (somewhat) #18502

This reduces allocation by
   T9872b   -1.1%
   T9872d   -3.3%

   T5321Fun -0.2%
   T5631    -0.2%
   T5837    +0.1%
   T6048    +0.1%

Metric Decrease:
    T9872b
    T9872d

(cherry picked from commit 9f71f69714255165d0fdc2790a588487ff9439dc)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/6653e139dba910783012aac37a304e29fb701dac">6653e139</a></strong>
<div>
<span>by Sylvain Henry</span>
<i>at 2020-08-13T18:22:40-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Fix minimal imports dump for boot files (fix #18497)

(cherry picked from commit 7c274cd530cc42a26028050b75d56b3437e06ec1)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/2c86713b285bed6c0e3a94efe66257830bfabb43">2c86713b</a></strong>
<div>
<span>by Leon Schoorl</span>
<i>at 2020-08-13T18:22:41-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Fix GHC_STAGE definition generated by make

Fixes #18070

GHC_STAGE is the stage of the compiler we're building, it should be 1,2(,3?).
But make was generating 0 and 1.

Hadrian does this correctly using a similar `+ 1`:
https://gitlab.haskell.org/ghc/ghc/-/blob/eb8115a8c4cbc842b66798480fefc7ab64d31931/hadrian/src/Rules/Generate.hs#L245

(cherry picked from commit f2d1accf67cb6e1dab6b2c78fef4b64526c31a4a)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/36d8cd6f573559344f2d2362a6db311a2e2c640e">36d8cd6f</a></strong>
<div>
<span>by Niklas Hambüchen</span>
<i>at 2020-08-13T18:22:41-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">hadrian: Fix running stage0/bin/ghc with wrong package DB. Fixes #17468.

In the invocation of `cabal configure`, `--ghc-pkg-option=--global-package-db`
was already given correctly to tell `stage0/bin/ghc-pkg` that it should use
the package DB in `stage1/`.

However, `ghc` needs to be given this information as well, not only `ghc-pkg`!
Until now that was not the case; the package DB in `stage0` was given to
`ghc` instead.
This was wrong, because there is no binary compatibility guarantee that says
that the `stage0` DB's `package.cache` (which is written by the
stage0 == system-provided ghc-pkg) can be deserialised by the `ghc-pkg`
from the source code tree.

As a result, when trying to add fields to `InstalledPackageInfo` that get
serialised into / deserialised from the `package.cache`, errors like

    _build/stage0/lib/package.conf.d/package.cache: GHC.PackageDb.readPackageDb: inappropriate type (Not a valid Unicode code point!)

would appear. This was because the `stage0/bin/ghc would try to
deserialise the newly added fields from
`_build/stage0/lib/package.conf.d/package.cache`, but they were not in there
because the system `ghc-pkg` doesn't know about them and thus didn't write them
there.
It would try to do that because any GHC by default tries to read the global
package db in `../lib/package.conf.d/package.cache`.
For `stage0/bin/ghc` that *can never work* as explained above, so we
must disable this default via `-no-global-package-db` and give it the
correct package DB explicitly.

This is the same problem as #16534, and the same fix as in MR !780
(but in another context; that one was for developers trying out the
`stage0/bin/ghc` == `_build/ghc-stage1` interactively, while this fix
is for a `cabal configure` invocation).

I also noticed that the fix for #16534 forgot to pass `-no-global-package-db`,
and have fixed that in this commit as well.
It only worked until now because nobody tried to add a new ghc-pkg `.conf`
field since the introduction of Hadrian.

(cherry picked from commit 947206f478d4eef641dfc58cb4c13471a23260c3)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/01534bf9d6f049cd37728bb2bbf36ebe257207eb">01534bf9</a></strong>
<div>
<span>by Krzysztof Gogolewski</span>
<i>at 2020-08-13T18:22:48-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Rename Core.Opt.Driver -> Core.Opt.Pipeline

Closes #18504.

(cherry picked from commit 5e12cd1733b581f48a5873b12971b6974778eabb)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/20a45d0c4903d214cc2a85349d0f3fb81d3f6395">20a45d0c</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-08-13T18:22:48-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Revert "iserv: Don't pass --export-dynamic on FreeBSD"

This reverts commit 2290eb02cf95e9cfffcb15fc9c593d5ef79c75d9.

(cherry picked from commit 2bff2f87e43985e02bdde8c6fa39279df86cb617)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/2911d64027200dac576b0a0d6da06afdba0e6722">2911d640</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-08-13T18:22:48-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Refactor handling of object merging

Previously to merge a set of object files we would invoke the linker as
usual, adding -r to the command-line. However, this can result in
non-sensical command-lines which causes lld to balk (#17962).

To avoid this we introduce a new tool setting into GHC, -pgmlm, which is
the linker which we use to merge object files.

(cherry picked from commit 53ce0db5a06598c88c6b8cb32043b878e7083dd4)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/cb3e202a127bc9a53c123a5c1772063bdd1ff089">cb3e202a</a></strong>
<div>
<span>by Ryan Scott</span>
<i>at 2020-08-13T18:22:48-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Make CodeQ and TExpQ levity polymorphic

The patch is quite straightforward. The only tricky part is that
`Language.Haskell.TH.Lib.Internal` now must be `Trustworthy` instead
of `Safe` due to the `GHC.Exts` import (in order to import `TYPE`).

Since `CodeQ` has yet to appear in any released version of
`template-haskell`, I didn't bother mentioning the change to `CodeQ`
in the `template-haskell` release notes.

Fixes #18521.

(cherry picked from commit fbcb886d503dd7aaebc4c40e59615068b3fd0bd7)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/bd506bd6c62ed52164277812865325c0cfc4060c">bd506bd6</a></strong>
<div>
<span>by Vladislav Zavialov</span>
<i>at 2020-08-13T18:22:48-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Improve NegativeLiterals (#18022, GHC Proposal #344)

Before this patch, NegativeLiterals used to parse x-1 as x (-1).

This may not be what the user expects, and now it is fixed:
x-1 is parsed as (-) x 1.

We achieve this by the following requirement:

  * When lexing a negative literal,
    it must not be preceded by a 'closing token'.

This also applies to unboxed literals, e.g. -1#.

See GHC Proposal #229 for the definition of a closing token.

A nice consequence of this change is that -XNegativeLiterals becomes a
subset of -XLexicalNegation. In other words, enabling both of those
extensions has the same effect as enabling -XLexicalNegation alone.

(cherry picked from commit aee45d9ea8c6cf4ebad4d5c732748923c7865cbe)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/bc186461cca918c8ceb7635d4e47ba72fee7e185">bc186461</a></strong>
<div>
<span>by Takenobu Tani</span>
<i>at 2020-08-13T18:22:48-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">users-guide: Rename 8.12 to 9.0

GHC 8.12.1 has been renamed to GHC 9.0.1.

See also:
  https://mail.haskell.org/pipermail/ghc-devs/2020-July/019083.html

[skip ci]

(cherry picked from commit 9570c21295a2b4a1d1e40939869124f0b9b9bf91)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/77653d5cf2bd4ed8d5a0f7f6ce71462556916094">77653d5c</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-08-13T18:22:48-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">cmm: Clean up Notes a bit

(cherry picked from commit 5f03606319f745b10e9918c76a47426b293f0bf9)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/47de152fe0f7e134f9714d0dcd4c6535876c6884">47de152f</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-08-13T18:22:48-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">CmmLint: Check foreign call argument register invariant

As mentioned in Note [Register parameter passing] the arguments of
foreign calls cannot refer to caller-saved registers.

(cherry picked from commit 6402c1240d5bd768b8fe8b4368413932bedbe107)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/e64ac078556d1326d34ffd0e0b91bb070c6f31ac">e64ac078</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-08-13T18:22:48-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">nativeGen: One approach to fix #18527

Previously the code generator could produce corrupt C call sequences due
to register overlap between MachOp lowerings and the platform's calling
convention. We fix this using a hack described in Note [Evaluate C-call
arguments before placing in destination registers].

(cherry picked from commit 15b36de030ecdd60897bc7a6a02bdeabd0825be4)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/24c230cef7a301d1905677cc106843cc4d171959">24c230ce</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-08-13T18:22:48-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">testsuite: Add test for #18527

(cherry picked from commit 3847ae0ccf67bddf73304a39f5320c3ba285aa48)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/ee2ed8768e0e1a97158f7a2867a2773f3f441655">ee2ed876</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-08-13T18:22:48-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">testsuite: Fix prog001

Previously it failed as the `ghc` package was not visible.

(cherry picked from commit dd51d53be42114c105b5ab15fcbdb387526b1c17)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/b4c332507f684864d9e52da548a7e61c706d722b">b4c33250</a></strong>
<div>
<span>by Alan Zimmerman</span>
<i>at 2020-08-13T18:22:48-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">ApiAnnotations; tweaks for ghc-exactprint update

Remove unused ApiAnns, add one for linear arrow.

Include API Annotations for trailing comma in export list.

(cherry picked from commit e4f1b73ad9f292a6bbeb21fee44b0ba1a7f3c33b)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/cb39cfdcf2f51bf611d9d319e9da7d75e1af50f6">cb39cfdc</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-08-13T18:22:48-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">configure: Fix double-negation in ld merge-objects check

We want to only run the check if ld is gold.

Fixes the fix to #17962.

(cherry picked from commit 8a665db6174eaedbbae925c0ccb4c22b3f29bcaf)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/b221b57140eea88808b16d339103256099ed50b1">b221b571</a></strong>
<div>
<span>by Alex Biehl</span>
<i>at 2020-08-13T18:22:48-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Hardcode RTS includes to cope with unregistered builds

(cherry picked from commit ef2ae81a394df573510b12b7e11bba0c931249d8)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/c15fb71bed0924e5eec0ee877684f183f10265af">c15fb71b</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-08-13T18:22:48-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">testsuite: Specify metrics collected by T17516

Previously it collected everything, including "max bytes used". This is
problematic since the test makes no attempt to control for deviations in
GC timing, resulting in high variability. Fix this by only collecting
"bytes allocated".

(cherry picked from commit f1088b3f31ceddf918a319c97557fb1f08a9a387)
</pre>
</li>
</ul>
<h4>30 changed files:</h4>
<ul>
<li class="file-stats">
<a href="#587d266bb27a4dc3022bbed44dfa19849df3044c">
.gitlab-ci.yml
</a>
</li>
<li class="file-stats">
<a href="#f656107cc03a27946448887125380c358788500e">
.gitlab/test-metrics.sh
</a>
</li>
<li class="file-stats">
<a href="#abe895765c4ce08c5dfbc95e5e3c5db67ff92ded">
CODEOWNERS
</a>
</li>
<li class="file-stats">
<a href="#9ab3868b23ed5d5a6e12ef902049902556fa4009">
aclocal.m4
</a>
</li>
<li class="file-stats">
<a href="#d0d96a6d03668aeab20ebe05e2c4ccb798c7e64c">
compiler/GHC.hs
</a>
</li>
<li class="file-stats">
<a href="#db697f6aea9f93f1583f1d5c62d25570a1e07f73">
compiler/GHC/Cmm/CLabel.hs
</a>
</li>
<li class="file-stats">
<a href="#cf82b82d6e47b3c81686a3340668a31ce028e2a1">
compiler/GHC/Cmm/Lint.hs
</a>
</li>
<li class="file-stats">
<a href="#c898e00d01234ab22d3b485be68db3645f52f220">
compiler/GHC/Cmm/MachOp.hs
</a>
</li>
<li class="file-stats">
<a href="#90378e83c3a00a78bc0b3c01da111e0a787de451">
compiler/GHC/Cmm/Node.hs
</a>
</li>
<li class="file-stats">
<a href="#b1390f6749e1a2dddcae35f88d55623ea6269f56">
compiler/GHC/Cmm/Sink.hs
</a>
</li>
<li class="file-stats">
<a href="#2bae5947e9412f6deebf4db7dcb89d780913130f">
compiler/GHC/CmmToAsm/X86/CodeGen.hs
</a>
</li>
<li class="file-stats">
<a href="#783e5dae6e86931f06700fc088fb7d48c8a07386">
compiler/GHC/Core/Coercion.hs
</a>
</li>
<li class="file-stats">
<a href="#6fcf64907fb5bdd93082d2d1eb94e4566e735865">
compiler/GHC/Core/DataCon.hs
</a>
</li>
<li class="file-stats">
<a href="#bac3d5159a5688007de3aa3f5c4e50569677b347">
compiler/GHC/Core/Opt/OccurAnal.hs
</a>
</li>
<li class="file-stats">
<a href="#bd153f89bc48f3fd5079b51fb799808aacbd750c">
compiler/GHC/Core/Opt/Driver.hs

compiler/GHC/Core/Opt/Pipeline.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="#37879a759bc2ca5cc8f1f35235fe96e3e55b57c9">
compiler/GHC/Core/Opt/Simplify/Monad.hs
</a>
</li>
<li class="file-stats">
<a href="#48fbb5cdea308650de5756521feb28ec68819b9b">
compiler/GHC/Core/Opt/Simplify/Utils.hs
</a>
</li>
<li class="file-stats">
<a href="#11ffe98a94d798427bc600e4fcfe899407536346">
compiler/GHC/Core/SimpleOpt.hs
</a>
</li>
<li class="file-stats">
<a href="#d51029aec6ce58e66d4b48865c1dd0d2038fda29">
compiler/GHC/Data/FastString.hs
</a>
</li>
<li class="file-stats">
<a href="#1a8e557860a337556f570aff25f52ee93b397055">
compiler/GHC/Data/StringBuffer.hs
</a>
</li>
<li class="file-stats">
<a href="#8d6aef03ed289b00e929572be84eabee2ca66e52">
<span class="new-file">
+
compiler/GHC/Driver/Backend.hs
</span>
</a>
</li>
<li class="file-stats">
<a href="#9df7e695170800345fb44916a8e8f4b8f3c55be0">
compiler/GHC/Driver/CodeOutput.hs
</a>
</li>
<li class="file-stats">
<a href="#9a679a2680ef6061397f1987091ea9f96ffe095d">
compiler/GHC/Driver/Main.hs
</a>
</li>
<li class="file-stats">
<a href="#1dab250036d04cfcf3530f6ff27889f723cc2dda">
compiler/GHC/Driver/Make.hs
</a>
</li>
<li class="file-stats">
<a href="#b8e6af642e56019828828dc679683c04afb81867">
compiler/GHC/Driver/Pipeline.hs
</a>
</li>
<li class="file-stats">
<a href="#774d88050336ef660c7a219fb06c480c2fc639bc">
compiler/GHC/Driver/Session.hs
</a>
</li>
<li class="file-stats">
<a href="#bf951467d4a9aa443cb109cb4c84a2891945649b">
compiler/GHC/Parser.y
</a>
</li>
<li class="file-stats">
<a href="#b1092d2df4ded3655524830252278016d6aa5afd">
compiler/GHC/Parser/Annotation.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/58f2b5d13bd1d1744c3615f806bac2f6af0f45d6...c15fb71bed0924e5eec0ee877684f183f10265af">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>