<!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=utf-8" http-equiv="Content-Type">
<title>
GitLab
</title>



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

<h3>
John Ericson pushed to branch wip/D5082
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/6c0dd085c16bad20f6604ce608df6db275d6bca9">6c0dd085</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2019-04-04T12:12:24Z</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">testsuite: Add testcase for #16111
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/commit/cbb8886560e63b662f50965cc96efafa8dd6875a">cbb88865</a></strong>
<div>
<span>by klebinger.andreas@gmx.at</span>
<i>at 2019-04-04T12:12:25Z</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Restore Xmm registers properly in StgCRun.c

This fixes #16514: Xmm6-15 was restored based off rax instead of rsp.
The code was introduced in the fix for #14619.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/commit/33b0a291898b6a35d822fde59864c5c94a53d039">33b0a291</a></strong>
<div>
<span>by Ryan Scott</span>
<i>at 2019-04-04T12:12:28Z</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Tweak error messages for narrowly-kinded assoc default decls

This program, from #13971, currently has a rather confusing error
message:

```hs
class C a where
  type T a :: k
  type T a = Int
```
```
    • Kind mis-match on LHS of default declaration for ‘T’
    • In the default type instance declaration for ‘T’
      In the class declaration for ‘C’
```

It's not at all obvious why GHC is complaining about the LHS until
you realize that the default, when printed with
`-fprint-explicit-kinds`, is actually `type T @{k} @* a = Int`.
That is to say, the kind of `a` is being instantiated to `Type`,
whereas it ought to be a kind variable. The primary thrust of this
patch is to weak the error message to make this connection
more obvious:

```
    • Illegal argument ‘*’ in:
        ‘type T @{k} @* a = Int’
        The arguments to ‘T’ must all be type variables
    • In the default type instance declaration for ‘T’
      In the class declaration for ‘C’
```

Along the way, I performed some code cleanup suggested by @rae in
https://gitlab.haskell.org/ghc/ghc/issues/13971#note_191287. Before,
we were creating a substitution from the default declaration's type
variables to the type family tycon's type variables by way of
`tcMatchTys`. But this is overkill, since we already know (from the
aforementioned validity checking) that all the arguments in a default
declaration must be type variables anyway. Therefore, creating the
substitution is as simple as using `zipTvSubst`. I took the
opportunity to perform this refactoring while I was in town.

Fixes #13971.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/commit/3a38ea4487173f0f8e3693a75d1c5c7d33f12f05">3a38ea44</a></strong>
<div>
<span>by Eric Crockett</span>
<i>at 2019-04-07T19:21:59Z</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Fix #16282.

Previously, -W(all-)missed-specs was created with 'NoReason',
so no information about the flag was printed along with the warning.
Now, -Wall-missed-specs is listed as the Reason if it was set,
otherwise -Wmissed-specs is listed as the reason.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/commit/63b7d5fb9d695dafc243cbf6f9f70b06030c0dea">63b7d5fb</a></strong>
<div>
<span>by Michal Terepeta</span>
<i>at 2019-04-08T18:29:34Z</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Generate straightline code for inline array allocation

GHC has an optimization for allocating arrays when the size is
statically known -- it'll generate the code allocating and initializing
the array inline (instead of a call to a procedure from
`rts/PrimOps.cmm`).

However, the generated code uses a loop to do the initialization. Since
we already check that the requested size is small (we check against
`maxInlineAllocSize`), we can generate faster straightline code instead.
This brings about 15% improvement for `newSmallArray#` in my testing and
slightly simplifies the code in GHC.

Signed-off-by: Michal Terepeta <michal.terepeta@gmail.com>
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/commit/2b3f4718502465e2b4dfa4a7868ed7a3ad5e4ff1">2b3f4718</a></strong>
<div>
<span>by Phuong Trinh</span>
<i>at 2019-04-08T18:35:43Z</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Fix #16500: look for interface files in -hidir flag in OneShot mode

We are currently ignoring options set in the hiDir field of hsc_dflags
when looking for interface files while compiling in OneShot mode. This
is inconsistent with the behaviour of other directory redirecting fields
(such as objectDir or hieDir). It is also inconsistent with the
behaviour of compilation in CompManager mode (a.k.a `ghc --make`) which
looks for interface files in the directory set in hidir flag. This
changes Finder.hs so that we use the value of hiDir while looking for
interface in OneShot mode.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/commit/97502be8bda9199ac058b9677b4b6ba028022936">97502be8</a></strong>
<div>
<span>by Yuriy Syrovetskiy</span>
<i>at 2019-04-08T18:41:51Z</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Add `-optcxx` option (#16477)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/commit/97d3d546e6f03977a9cbe7d5499bb66510411468">97d3d546</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2019-04-08T18:47:54Z</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">testsuite: Unmark T16190 as broken

Was broken via #16389 yet strangely it has started passing despite the
fact that the suggested root cause has not changed.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/commit/a42d206a76e03b4cd831aa7bc72c6d4a0f124bd1">a42d206a</a></strong>
<div>
<span>by Yuriy Syrovetskiy</span>
<i>at 2019-04-08T18:54:02Z</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Fix whitespace style
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/commit/4dda2270d26017eadddd99ed567aacf41c2913b9">4dda2270</a></strong>
<div>
<span>by Matthew Pickering</span>
<i>at 2019-04-08T19:00:08Z</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Use ./hadrian/ghci.sh in .ghcid
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/commit/d236d9d0f4f3be0641933b959dde14a065acd37f">d236d9d0</a></strong>
<div>
<span>by Sebastian Graf</span>
<i>at 2019-04-08T19:06:15Z</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Make `singleConstructor` cope with pattern synonyms

Previously, `singleConstructor` didn't handle singleton `COMPLETE` sets
of a single pattern synonym, resulting in incomplete pattern warnings
in #15753.

This is fixed by making `singleConstructor` (now named
`singleMatchConstructor`) query `allCompleteMatches`, necessarily making
it effectful. As a result, most of this patch is concerned with
threading the side-effect through to `singleMatchConstructor`.

Unfortunately, this is not enough to completely fix the original
reproduction from #15753 and #15884, which are related to function
applications in pattern guards being translated too conservatively.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/commit/1085090e83bbf2a7dbb1b9a2e9023f3500538930">1085090e</a></strong>
<div>
<span>by Ömer Sinan Ağacan</span>
<i>at 2019-04-08T19:12:22Z</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Skip test ArithInt16 and ArithWord16 in GHCi way

These tests use unboxed tuples, which GHCi doesn't support
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/commit/7287bb9ea51251441bc8caca2894549ab34fbcb3">7287bb9e</a></strong>
<div>
<span>by Ömer Sinan Ağacan</span>
<i>at 2019-04-08T19:18:33Z</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">testsuite: Show exit code of GHCi tests on failure
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/commit/f5604d3709d015f4085843a92298af3e53c08d36">f5604d37</a></strong>
<div>
<span>by John Ericson</span>
<i>at 2019-04-08T19:24:43Z</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">settings.in: Reformat

We're might be about to switch to generating it in Hadrian/Make. This
reformat makes it easier to programmingmatically generate and end up
with the exact same thing, which is good for diffing to ensure no
regressions.

I had this as part of !712, but given the difficulty of satisfying CI, I
figured I should break things up even further.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/commit/cf9e1837adc647c90cfa176669d14e0d413c043d">cf9e1837</a></strong>
<div>
<span>by Ryan Scott</span>
<i>at 2019-04-08T19:30:51Z</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Bump hpc submodule

Currently, the `hpc` submodule is pinned against the `wip/final-mfp`
branch, not against `master`. This pins it back against `master`.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/commit/36d380475d9056fdf93305985be3def00aaf6cf7">36d38047</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2019-04-09T14:23:47Z</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">users-guide: Document how to disable package environments

As noted in #16309 this somehow went undocumented.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/commit/af4cea7f1411e5b99e2417d7c2d3d0e697093103">af4cea7f</a></strong>
<div>
<span>by Artem Pyanykh</span>
<i>at 2019-04-09T14:30:13Z</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">codegen: fix memset unroll for small bytearrays, add 64-bit sets

Fixes #16052

When the offset in `setByteArray#` is statically known, we can provide
better alignment guarantees then just 1 byte.

Also, memset can now do 64-bit wide sets.

The current memset intrinsic is not optimal however and can be
improved for the case when we know that we deal with

(baseAddress at known alignment) + offset

For instance, on 64-bit

`setByteArray# s 1# 23# 0#`

given that bytearray is 8 bytes aligned could be unrolled into
`movb, movw, movl, movq, movq`; but currently it is
`movb x23` since alignment of 1 is all we can embed into MO_Memset op.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/commit/bd2de4f06169e15506bb357cf7c2c8b1dad37d67">bd2de4f0</a></strong>
<div>
<span>by Artem Pyanykh</span>
<i>at 2019-04-09T14:30:13Z</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">codegen: use newtype for Alignment in BasicTypes
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/commit/14a7870770fb2dd2e096bc13e8c927d49c868911">14a78707</a></strong>
<div>
<span>by Artem Pyanykh</span>
<i>at 2019-04-09T14:30:13Z</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">docs: add a note about changes in memset unrolling to 8.10.1-notes
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/commit/fe40ddd9f960d89fbb430962f642ee9b053a0492">fe40ddd9</a></strong>
<div>
<span>by Sylvain Henry</span>
<i>at 2019-04-09T16:50:15Z</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Hadrian: fix library install paths in bindist Makefile (#16498)

GHC now works out-of-the-box (i.e. without any wrapper script) by
assuming that @bin@ and @lib@ directories sit next to each other. In
particular, its RUNPATH uses $ORIGIN-based relative path to find the
libraries.

However, to be good citizens we want to support the case where @bin@ and
@lib@ directories (respectively BINDIR and LIBDIR) don't sit next to
each other or are renamed. To do that the install script simply creates
GHC specific @bin@ and @lib@ siblings directories into:

   LIBDIR/ghc-VERSION/{bin,lib}

Then it installs wrapper scripts into BINDIR that call the appropriate
programs into LIBDIR/ghc-VERSION/bin/.

The issue fixed by this patch is that libraries were not installed into
LIBDIR/ghc-VERSION/lib but directly into LIBDIR.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/commit/9acdc4c0ea14f890045e973dabcb5ad3bb029505">9acdc4c0</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2019-04-09T16:56:38Z</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">gitlab: Bump cabal-install version used by Windows builds to 2.4

Hopefully fixes Windows Hadrian build.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/commit/fc3f421bd63cbf550cd0c8771aaf11e9c362f4d1">fc3f421b</a></strong>
<div>
<span>by Joachim Breitner</span>
<i>at 2019-04-10T03:17:37Z</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">GHC no longer ever defines TABLES_NEXT_TO_CODE on its own

It should be entirely the responsibility of make/Hadrian to ensure that
everything that needs this flag gets it. GHC shouldn't be hardcoded to
assist with bootstrapping since it builds other things besides itself.

Reviewers:

Subscribers: TerrorJack, rwbarton, carter

GHC Trac Issues: #15548 -- progress towards but not fix

Differential Revision: https://phabricator.haskell.org/D5082 -- extract
from that
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/commit/be0dde8e3c27ca56477d1d1801bb77621f3618e1">be0dde8e</a></strong>
<div>
<span>by Ryan Scott</span>
<i>at 2019-04-10T03:23:50Z</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Use ghc-prim < 0.7, not <= 0.6.1, as upper version bounds

Using `ghc-prim <= 0.6.1` is somewhat dodgy from a PVP point of view,
as it makes it awkward to support new minor releases of `ghc-prim`.
Let's instead use `< 0.7`, which is the idiomatic way of expressing
PVP-compliant upper version bounds.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/commit/ca4751366b074e52ff8d06298593f9193d9f7080">ca475136</a></strong>
<div>
<span>by Joachim Breitner</span>
<i>at 2019-04-10T03:42:48Z</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Make tablesNextToCode a proper dynamic flag (#15548)

Summary:
There is no more use of the TABLES_NEXT_TO_CODE CPP macro in
`compiler/`. GHCI_TABLES_NEXT_TO_CODE is also removed entirely. The
default value of `tablesNextToCode` is calculated as before, but now
users of the GHCI API can modify this flag.

That said, GHC still is hardcoded to define TABLES_NEXT_TO_CODE based on
that default value. This is bad, but neccessary until the remaining uses
of TABLES_NEXT_TO_CODE get it from make/Hadrian.

Reviewers:

Subscribers: TerrorJack, rwbarton, carter

GHC Trac Issues: #15548

Differential Revision: https://phabricator.haskell.org/D5082
</pre>
</li>
</ul>
<h4>30 changed files:</h4>
<ul>
<li class="file-stats">
<a href="#03615ac1622815b67e9829de1c43ac90fa6d8068">
.ghcid
</a>
</li>
<li class="file-stats">
<a href="#587d266bb27a4dc3022bbed44dfa19849df3044c">
.gitlab-ci.yml
</a>
</li>
<li class="file-stats">
<a href="#0641ef536c197a46fddf169b39613b0ff5ad92b3">
.gitlab/win32-init.sh
</a>
</li>
<li class="file-stats">
<a href="#f33abed7f65cbef82d6577e3591644918f0781c0">
compiler/basicTypes/BasicTypes.hs
</a>
</li>
<li class="file-stats">
<a href="#731b07c16b2f4bb31dd7defa4ceef54e74473cc7">
compiler/codeGen/StgCmmPrim.hs
</a>
</li>
<li class="file-stats">
<a href="#bd37d71fa68b0980d832d992b427fd6a6bdb891d">
compiler/deSugar/Check.hs
</a>
</li>
<li class="file-stats">
<a href="#6846a4633a1df62b15f368e7e22420844e3c6352">
compiler/ghc.mk
</a>
</li>
<li class="file-stats">
<a href="#d2c10a03288a6319dda11c70ec3768758d07b64f">
compiler/ghci/ByteCodeItbls.hs
</a>
</li>
<li class="file-stats">
<a href="#0b786457b007c51108f80d6a03e3850281d3fa52">
compiler/main/DriverPhases.hs
</a>
</li>
<li class="file-stats">
<a href="#72690aad4036dea6e6e116c30e4d7582f5077db7">
compiler/main/DriverPipeline.hs
</a>
</li>
<li class="file-stats">
<a href="#11e9bfd841c4163c1919b5e07efc84740e02010f">
compiler/main/DynFlags.hs
</a>
</li>
<li class="file-stats">
<a href="#b0bba1596a6b3a24eddc0a21c5ccb2ea48a655e5">
compiler/main/Finder.hs
</a>
</li>
<li class="file-stats">
<a href="#a7d05a7194ce9665362b8cb2a6e3cb5bd39f2965">
compiler/main/HscTypes.hs
</a>
</li>
<li class="file-stats">
<a href="#63c9d6e17d26bbb7f2d71094f5ffa2c67769ada0">
compiler/main/SysTools.hs
</a>
</li>
<li class="file-stats">
<a href="#23fd164407d5a67f4b133b7d27b39c378929f165">
compiler/main/SysTools/ExtraObj.hs
</a>
</li>
<li class="file-stats">
<a href="#4039dc9c5a155ac264cf84037271eb8259a3f0a7">
compiler/main/SysTools/Tasks.hs
</a>
</li>
<li class="file-stats">
<a href="#e08a7f13d9b4dd9216080725eb81bf254597216d">
compiler/nativeGen/X86/CodeGen.hs
</a>
</li>
<li class="file-stats">
<a href="#c32cb02af3d68609de00fed7ce75ae668e4c5688">
compiler/nativeGen/X86/Ppr.hs
</a>
</li>
<li class="file-stats">
<a href="#50402e2a64c9aa60a1a76e237271322d2f6325dc">
compiler/simplCore/CoreMonad.hs
</a>
</li>
<li class="file-stats">
<a href="#8e5716cfebabf9b3b1774b148dca4e897301a054">
compiler/specialise/Specialise.hs
</a>
</li>
<li class="file-stats">
<a href="#bdfa0cc139f61d1236abc1598c5d684b43c357f9">
compiler/typecheck/TcTyClsDecls.hs
</a>
</li>
<li class="file-stats">
<a href="#7dc313da4c00f2541cb5e519a5e4a0eac7751a2a">
compiler/utils/Util.hs
</a>
</li>
<li class="file-stats">
<a href="#d6904e295957d55c64f4949aa3b54695dd57dd76">
docs/users_guide/8.10.1-notes.rst
</a>
</li>
<li class="file-stats">
<a href="#6c41cb96bda32ca92759d69ad995b56ee7737db4">
docs/users_guide/packages.rst
</a>
</li>
<li class="file-stats">
<a href="#12f1226bde7e9f48203d34d8d857513f2f1f4d75">
docs/users_guide/phases.rst
</a>
</li>
<li class="file-stats">
<a href="#593826b927fccedf47c9d06b81f8ce8e2195ad81">
docs/users_guide/separate_compilation.rst
</a>
</li>
<li class="file-stats">
<a href="#51d77a90635e9ec3ddfb3918005aecda9cc567c0">
ghc/ghc-bin.cabal.in
</a>
</li>
<li class="file-stats">
<a href="#d54febd1e7f96d85cda6ae682efa3ddb77fddedc">
hadrian/src/Rules/BinaryDist.hs
</a>
</li>
<li class="file-stats">
<a href="#d92ed897486e6597b1000abb84a65ad03542615b">
hadrian/src/Settings/Packages.hs
</a>
</li>
<li class="file-stats">
<a href="#b7cfb47853ef95330e499ca0c5b90964744d101f">
libraries/base/base.cabal
</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/4a4467c3ffcbc931731044453df6a9f2db53406f...ca4751366b074e52ff8d06298593f9193d9f7080">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>