ghc.git
6 months agogitlab-ci: Disable integer-simple tests wip/ghc-8.6-ci
Ben Gamari [Thu, 27 Dec 2018 21:17:07 +0000 (16:17 -0500)] 
gitlab-ci: Disable integer-simple tests

6 months agogitlab-ci: Skip performance tests
Ben Gamari [Thu, 27 Dec 2018 15:26:43 +0000 (10:26 -0500)] 
gitlab-ci: Skip performance tests

These are just too fragile on ghc-8.6 which lacks #12758.

6 months agoGrab CI configuration from master
Ben Gamari [Wed, 26 Dec 2018 17:01:10 +0000 (12:01 -0500)] 
Grab CI configuration from master

This is awfully ugly but is nevertheless significantly less error-prone
than cherry-picking all of the relevant commits manually.

6 months agoRevert "Windows: Use the "big" PE object format on amd64"
Ben Gamari [Mon, 24 Dec 2018 01:09:30 +0000 (20:09 -0500)] 
Revert "Windows: Use the "big" PE object format on amd64"

This ended up breaking GHCi due to alignment issues. See #16071.

This reverts commit ed86e3b531322f74d2c2d00d7ff8662b08fabde6.

7 months agoutils/gen-dll: Bump containers upper bound
Ben Gamari [Sun, 9 Dec 2018 20:28:52 +0000 (15:28 -0500)] 
utils/gen-dll: Bump containers upper bound

Fixes #16023.

(cherry picked from commit e709c8f8d45c699840f5bab7c9ff71373a53b8b0)

7 months agoRelease 8.6.3 ghc-8.6.3-release
Ben Gamari [Thu, 6 Dec 2018 21:58:34 +0000 (16:58 -0500)] 
Release 8.6.3

7 months agousers guide: Add release notes for 8.6.3
Ben Gamari [Thu, 6 Dec 2018 21:57:16 +0000 (16:57 -0500)] 
users guide: Add release notes for 8.6.3

7 months agoWindows: Use the "big" PE object format on amd64
Ben Gamari [Thu, 6 Dec 2018 20:28:47 +0000 (15:28 -0500)] 
Windows: Use the "big" PE object format on amd64

Test Plan: Do full build on Windows.

Reviewers: AndreasK, Phyx

Reviewed By: AndreasK

Subscribers: rwbarton, erikd, carter

GHC Trac Issues: #15934

Differential Revision: https://phabricator.haskell.org/D5383

(cherry picked from commit 1ef90f990da90036d481c830d8832e21b8f1571b)

7 months agolinker: store entire link map and use it.
Tamar Christina [Tue, 4 Dec 2018 00:29:08 +0000 (00:29 +0000)] 
linker: store entire link map and use it.

Summary:
This fixes a corner case in which we have seen the symbol multiple times in
different static libraries, but due to a depencency we end up loading the
symbol from a library other than the first one.

Previously the runtime linker would only track symbols from the first
library and did not store the full link map.  In this case it was unable
to find the address for the symbols in the second library during delay
loading.

This change stores the address of all symbols seen so a full link map
is generated, such that when we make a different decision later than what
was expected we're able to still correctly load the library.

Test Plan: ./validate, new testcase T15894

Reviewers: angerman, bgamari, erikd, simonmar

Reviewed By: bgamari

Subscribers: rwbarton, carter

GHC Trac Issues: #15894

Differential Revision: https://phabricator.haskell.org/D5353

(cherry picked from commit a8b7cef4d45a5003bf7584e06912f0f632116c71)

7 months agoBump iserv versions
Ben Gamari [Thu, 6 Dec 2018 17:43:28 +0000 (12:43 -0500)] 
Bump iserv versions

This fixes #15866, the original fix for which didn't merge cleanly to
the stable branch.

7 months agoRemove explicit recursion in retainer profiling (fixes #14758)
Alexander Vershilov [Wed, 5 Dec 2018 16:47:32 +0000 (19:47 +0300)] 
Remove explicit recursion in retainer profiling (fixes #14758)

Retainer profiling contained a recursion that under
certain circumstances could lead to the stack overflow
in C code.

The idea of the improvement is to keep an explicit stack for the
object, more precise to reuse existing stack, but allow new type of
objects to be stored there.

There is no reliable reproducer that is not a big program
but in some cases foldr (+) 0 [1..10000000] can work.

Reviewers: bgamari, simonmar, erikd, osa1

Reviewed By: bgamari, osa1

Subscribers: osa1, rwbarton, carter

GHC Trac Issues: #14758

Differential Revision: https://phabricator.haskell.org/D5351

(cherry picked from commit 5f1d949ab9e09b8d95319633854b7959df06eb58)

7 months agoFix #15859 by checking, not assuming, an ArgFlag
Richard Eisenberg [Mon, 5 Nov 2018 16:01:47 +0000 (11:01 -0500)] 
Fix #15859 by checking, not assuming, an ArgFlag

We thought that visible dependent quantification was impossible
in terms, but Iceland Jack discovered otherwise in #15859. This fixes an
ASSERT failure that arose.

test case: dependent/should_fail/T15859

(cherry picked from commit 72b82343b79365dc74ffafb345dd33499a7fd394)

(cherry picked from commit 5693ddd071033516a1804420a903cb7e3677682b)

7 months agobase: Mention openFile throwing does-not-exist-errors on FIFOs
Ben Gamari [Thu, 22 Nov 2018 16:33:39 +0000 (11:33 -0500)] 
base: Mention openFile throwing does-not-exist-errors on FIFOs

As discussed in #15715, the POSIX specification specifies that
attempting to open a FIFO in write-only mode when the FIFO has no
readers will fail with -ENOENT.

[skip ci]

Test Plan: Read it

Reviewers: hvr

Subscribers: rwbarton, carter

GHC Trac Issues: #15715

Differential Revision: https://phabricator.haskell.org/D5295

(cherry picked from commit 4ba3fa31ddfa12b428bd67216a2d4118dc9e8311)

7 months agoRevert "libiserv: Generate cabal file with autoconf"
Ben Gamari [Thu, 22 Nov 2018 21:59:14 +0000 (16:59 -0500)] 
Revert "libiserv: Generate cabal file with autoconf"

This reverts commit cbde2726f10b8f4c19483bbb755ad42356098c51.

7 months agorts/MachO: Iterate through N (all) symbols, not M external symbols
Dario Bertini [Fri, 16 Nov 2018 14:49:37 +0000 (15:49 +0100)] 
rts/MachO: Iterate through N (all) symbols, not M external symbols

Fixes #15105

(cherry picked from commit 254890855ee04762cc0392da19e0c42fc039a718)

7 months agorts/MachO: A bit of refactoring in ocGetNames
Dario Bertini [Fri, 16 Nov 2018 14:48:36 +0000 (15:48 +0100)] 
rts/MachO: A bit of refactoring in ocGetNames

Eliminates a bit of repetition.

(cherry picked from commit b2f6f896a0bae0e68ec629bd6817a2cb2533a12c)

7 months agorts/MachO: Add a bit more debugging output to getNames
Dario Bertini [Fri, 16 Nov 2018 14:46:54 +0000 (15:46 +0100)] 
rts/MachO: Add a bit more debugging output to getNames

(cherry picked from commit 9e0a23b95c285c4019fd2d36102374ee582f1dcb)

7 months agocircleci: Actually build with in-tree GMP on Darwin
Dario Bertini [Fri, 16 Nov 2018 09:25:32 +0000 (10:25 +0100)] 
circleci: Actually build with in-tree GMP on Darwin

Fixes #15404.

(cherry picked from commit 3584bd4255eb59be043252c9b4ef16bcbd835c9b)

7 months agoFix a bug in SRT generation (#15892)
Simon Marlow [Thu, 15 Nov 2018 03:31:35 +0000 (06:31 +0300)] 
Fix a bug in SRT generation (#15892)

Summary:
The logic in `Note [recursive SRTs]` was correct. However, my
implementation of it wasn't: I got the associativity of
`Set.difference` wrong, which led to an extremely subtle and difficult
to find bug.

Fortunately now we have a test case. I was able to cut down the code
to something manageable, and I've added it to the test suite.

Test Plan:
Before (using my stage 1 compiler without the fix):

```
====> T15892(normal) 1 of 1 [0, 0, 0]
cd "T15892.run" &&  "/home/smarlow/ghc/inplace/bin/ghc-stage1" -o T15892
T15892.hs -dcore-lint -dcmm-lint -no-user-package-db -rtsopts
-fno-warn-missed-specialisations -fshow-warning-groups
-fdiagnostics-color=never -fno-diagnostics-show-caret -Werror=compat
-dno-debug-output  -O
cd "T15892.run" && ./T15892  +RTS -G1 -A32k -RTS
Wrong exit code for T15892(normal)(expected 0 , actual 134 )
Stderr ( T15892 ):
T15892: internal error: evacuate: strange closure type 0
    (GHC version 8.7.20181113 for x86_64_unknown_linux)
    Please report this as a GHC bug:  http://www.haskell.org/ghc/reportabug
Aborted (core dumped)
*** unexpected failure for T15892(normal)
=====> T15892(g1) 1 of 1 [0, 1, 0]
cd "T15892.run" &&  "/home/smarlow/ghc/inplace/bin/ghc-stage1" -o T15892
T15892.hs -dcore-lint -dcmm-lint -no-user-package-db -rtsopts
-fno-warn-missed-specialisations -fshow-warning-groups
-fdiagnostics-color=never -fno-diagnostics-show-caret -Werror=compat
-dno-debug-output  -O
cd "T15892.run" && ./T15892 +RTS -G1 -RTS +RTS -G1 -A32k -RTS
Wrong exit code for T15892(g1)(expected 0 , actual 134 )
Stderr ( T15892 ):
T15892: internal error: evacuate: strange closure type 0
    (GHC version 8.7.20181113 for x86_64_unknown_linux)
    Please report this as a GHC bug:  http://www.haskell.org/ghc/reportabug
Aborted (core dumped)
```

After (using my stage 2 compiler with the fix):

```
=====> T15892(normal) 1 of 1 [0, 0, 0]
cd "T15892.run" &&  "/home/smarlow/ghc/inplace/test   spaces/ghc-stage2"
-o T15892 T15892.hs -dcore-lint -dcmm-lint -no-user-package-db -rtsopts
-fno-warn-missed-specialisations -fshow-warning-groups
-fdiagnostics-color=never -fno-diagnostics-show-caret -Werror=compat
-dno-debug-output
cd "T15892.run" && ./T15892  +RTS -G1 -A32k -RTS
=====> T15892(g1) 1 of 1 [0, 0, 0]
cd "T15892.run" &&  "/home/smarlow/ghc/inplace/test   spaces/ghc-stage2"
-o T15892 T15892.hs -dcore-lint -dcmm-lint -no-user-package-db -rtsopts
-fno-warn-missed-specialisations -fshow-warning-groups
-fdiagnostics-color=never -fno-diagnostics-show-caret -Werror=compat
-dno-debug-output
cd "T15892.run" && ./T15892 +RTS -G1 -RTS +RTS -G1 -A32k -RTS
```

Reviewers: bgamari, osa1, erikd

Reviewed By: osa1

Subscribers: rwbarton, carter

GHC Trac Issues: #15892

Differential Revision: https://phabricator.haskell.org/D5334

7 months agoLoad plugins in interactive session
Christiaan Baaij [Thu, 22 Nov 2018 16:50:51 +0000 (11:50 -0500)] 
Load plugins in interactive session

Reviewers: bgamari, tdammers

Reviewed By: tdammers

Subscribers: monoidal, rwbarton, carter

GHC Trac Issues: #15633

Differential Revision: https://phabricator.haskell.org/D5348

(cherry picked from commit 599eaada382d04722219bfc319bde94591be3fb1)

7 months agorts/M32Alloc: Abort if m32 linker mmap fails
Ben Gamari [Sat, 10 Nov 2018 20:35:37 +0000 (15:35 -0500)] 
rts/M32Alloc: Abort if m32 linker mmap fails

Previously we should just blinding dereference a NULL pointer.

(cherry picked from commit 86f6890e3689f2f75ecca8172eda0338fe3e9769)

7 months agousers guide: We no longer build libraries with -split-objs
Ben Gamari [Thu, 22 Nov 2018 00:17:41 +0000 (19:17 -0500)] 
users guide: We no longer build libraries with -split-objs

We now generally use split-sections instead.

(cherry picked from commit f5fbecc85967218fd8ba6512f10eea2daf2812ac)

7 months agoFix heap corruption during stable name allocation
Ömer Sinan Ağacan [Wed, 21 Nov 2018 17:03:38 +0000 (20:03 +0300)] 
Fix heap corruption during stable name allocation

See #15906 for the problem. To fix we simply call `allocate()` instead of
`ALLOC_PRIM()`. `allocate()` does not trigger GC when the nursery is full,
instead it extends it.

Test Plan:
This validates. memo001 now passes with `-debug` compile parameter. I'll add
another test that runs memo001 with `-debug` once I figure out how to use
stdout files for multiple tests.

Reviewers: simonmar, bgamari, erikd

Reviewed By: simonmar

Subscribers: rwbarton, carter

GHC Trac Issues: #15906

Differential Revision: https://phabricator.haskell.org/D5342

(cherry picked from commit 691aa715cf43bf9d88ee32bca37e471bae35adfb)

8 months agodistrib/configure: Set RanlibCmd
Ben Gamari [Thu, 8 Nov 2018 02:02:19 +0000 (21:02 -0500)] 
distrib/configure: Set RanlibCmd

This fixes #15875.

8 months agolibiserv: Generate cabal file with autoconf
Ben Gamari [Tue, 6 Nov 2018 15:33:01 +0000 (10:33 -0500)] 
libiserv: Generate cabal file with autoconf

Previously the version number was set by hand. This seems like
unnecessary busywork for what is mostly an internal library.

8 months agoSet RELEASE=NO
Ben Gamari [Mon, 5 Nov 2018 16:47:11 +0000 (11:47 -0500)] 
Set RELEASE=NO

8 months agointeger-gmp: Fix TBA in changelog
Ben Gamari [Fri, 2 Nov 2018 15:48:05 +0000 (11:48 -0400)] 
integer-gmp: Fix TBA in changelog

8 months agoDon't lint erroneous programs. ghc-8.6.2-release
Richard Eisenberg [Thu, 1 Nov 2018 22:03:21 +0000 (18:03 -0400)] 
Don't lint erroneous programs.

newFamInst lints its types. This is good. But it's not so good
when there have been errors and thus recovery tycons are about.
So we now don't.

Fixes #15796.

Test case: typecheck/should_fail/T15796

(cherry picked from commit 1f72a1c81368e34387aac38c0b1c59521cec58ec)

8 months agoFix #15787 by squashing a coercion hole.
Richard Eisenberg [Sun, 28 Oct 2018 20:06:17 +0000 (16:06 -0400)] 
Fix #15787 by squashing a coercion hole.

In type-incorrect code, we can sometimes let a coercion
hole make it through the zonker. If this coercion hole then
ends up in the environment (e.g., in the type of a data
constructor), then it causes trouble later.

This patch avoids trouble by substituting the coercion hole
for its representative CoVar. Really, any coercion would do,
but the CoVar was very handy.

test case: polykinds/T15787

(cherry picked from commit 4427315a65b25db22e1754d41b43dd4b782b022f)

8 months agousers-guide: Fix version number
Ben Gamari [Wed, 31 Oct 2018 16:23:39 +0000 (12:23 -0400)] 
users-guide: Fix version number

8 months agousers-guide: Note existence of #14251
Ben Gamari [Tue, 30 Oct 2018 18:13:22 +0000 (14:13 -0400)] 
users-guide: Note existence of #14251

8 months agoFix #15815 by parenthesizing the arguments to infix ~
Ryan Scott [Sun, 28 Oct 2018 20:08:11 +0000 (16:08 -0400)] 
Fix #15815 by parenthesizing the arguments to infix ~

An unfortunate consequence of commit
b9483981d128f55d8dae3f434f49fa6b5b30c779 (`Remove HsEqTy and XEqTy`)
is infix uses of `~` in TH quotes now desugar differently than
before. In particular, we have that:

```haskell
a ~ (Int -> Int)
```

Now desugars to:

```haskell
HsOpTy a (~) (HsOpTy Int (->) Int)
```

Which GHC interprets as being:

```haskell
a ~ Int -> Int
```

Or, equivalently:

```haskell
(a ~ Int) -> Int
```

Which is different than what was intended! This is the cause
of #15815.

All of this has revealed that we likely need to renovate the way we
desugar infix type operators to be more consistent with the treatment
for infix expressions (see
https://ghc.haskell.org/trac/ghc/ticket/15815#comment:5 for more on
this.) Doing so would constitute a breaking change, however, so we
will likely want to wait until another major GHC release to do this.

In the meantime, this patch offers a non-invasive change to the way
that infix uses of `~` are desugared. This makes the program
in #15815 compile again by inserting extra `HsParTy`s around the
arguments to `~` if they are lacking them.

Test Plan: make test TEST=T15815

Reviewers: int-index, goldfire, bgamari

Reviewed By: int-index

Subscribers: int-e, rwbarton, carter

GHC Trac Issues: #15815

Differential Revision: https://phabricator.haskell.org/D5274

(cherry picked from commit b8a797ecc34a309bd78f5a290e3554642a3a478a)

8 months agoRevert "Multiple fixes / improvements for LLVM backend"
Ben Gamari [Tue, 30 Oct 2018 15:12:46 +0000 (11:12 -0400)] 
Revert "Multiple fixes / improvements for LLVM backend"

This reverts commit 73273be476a8cc6c13368660b042b3b0614fd928.

Unfortunately we were unable to come to a fix that didn't sacrifice the
ability to bootstrap GHC using the LLVM backend. Reverting for 8.6.2.

8 months agoRevert "Fix for T14251 on ARM"
Ben Gamari [Tue, 30 Oct 2018 15:12:12 +0000 (11:12 -0400)] 
Revert "Fix for T14251 on ARM"

This reverts commit 2e23e1c7de01c92b038e55ce53d11bf9db993dd4.

8 months agousers-guide: Fix typo
Ben Gamari [Mon, 29 Oct 2018 17:56:40 +0000 (13:56 -0400)] 
users-guide: Fix typo

8 months agoReport a Wanted error even if there are Given ones
Simon Peyton Jones [Thu, 18 Oct 2018 14:41:44 +0000 (15:41 +0100)] 
Report a Wanted error even if there are Given ones

We suppress some Given errors; see Note [Given errors]
in TcErrors.  But we must be careful not to suppress
Wanted errors because of the presence of these Given
errors -- else we might allow compilation to bogusly
proceed

The rubber hits the road in TcRnTypes.insolubleCt,
where we don't want to treat Givens as insoluble,
nor (and this is the new bit) Deriveds that arise
from Givens.  See Note [Given insolubles] in TcRnTypes.

This fixes #15767.

(cherry picked from commit 6b1102e2cfcffb265fd33cf8a99ab5e6b3f14906)

Ben notes:

  I have folded some test output changes in `TEST="T12529 T12921 mc13
  mc14"` into this patch that were not in the original.

8 months agoFix TcType.anyRewritableTyVar
Ningning Xie [Sun, 28 Oct 2018 16:29:55 +0000 (12:29 -0400)] 
Fix TcType.anyRewritableTyVar

Summary:
This patch fixes #15805, where we found that
`TcType.anyRewritableTyVar` has one wrong case.

Besides the fix, it also:
- removed some unnecessary `ASSERT2(tcIsTcTyVar...)` in `TcType`, as now we have
     `tcIsTcTyVar = isTyVar`.
- fixed some comments

Test Plan: ./validate

Reviewers: goldfire, simonpj, bgamari

Reviewed By: simonpj

Subscribers: rwbarton, carter

GHC Trac Issues: #15805

Differential Revision: https://phabricator.haskell.org/D5263

(cherry picked from commit a7f64c6cbfc5562adff207945576d1c9db2a58d9)

8 months agousers-guide: Add release notes for 8.6.2
Ben Gamari [Sun, 28 Oct 2018 20:02:51 +0000 (16:02 -0400)] 
users-guide: Add release notes for 8.6.2

8 months agoplugins: search for .a files if necessary
sheaf [Sun, 28 Oct 2018 16:30:13 +0000 (12:30 -0400)] 
plugins: search for .a files if necessary

Summary:
on windows, plugins are loaded via .a files,
but those paths were not being searched when loading plugins

Test Plan: ./validate

Reviewers: Phyx, bgamari

Reviewed By: Phyx

Subscribers: RyanGlScott, rwbarton, carter

GHC Trac Issues: #15700

Differential Revision: https://phabricator.haskell.org/D5253

(cherry picked from commit 70298db16c3f0ea4adb603ccb2b5e93eb9c7a556)

8 months agoComment out CONSTANT_FOLDED in GHC.Natural
Christiaan Baaij [Sun, 28 Oct 2018 16:29:23 +0000 (12:29 -0400)] 
Comment out CONSTANT_FOLDED in GHC.Natural

Summary:
Although these functions were marked as CONSTANT_FOLDED, they did
not have a corresponding builtinRule in PrelRules. The idea was
probably to add them eventually, but this hasn't manifested so
far.

The plan is to eventually add builtin rules for these functions
over Natural, so as a reminder we simply comment out the
CONSTANT_FOLDED  annotation instead of removing it completely.

Reviewers: hvr, bgamari

Reviewed By: bgamari

Subscribers: rwbarton, carter

Differential Revision: https://phabricator.haskell.org/D5267

(cherry picked from commit 3ec6fe8827956cc36b58cdf0bb1f5752eaa2a8ea)

8 months agoFix integer overflow when encoding doubles (Trac #15271)
Fangyi Zhou [Sun, 28 Oct 2018 16:28:53 +0000 (12:28 -0400)] 
Fix integer overflow when encoding doubles (Trac #15271)

Summary:
Ticket #15271 reports a case where 1e1000000000 is incorrectly
converted to 0.0. After some investigation, I discovered the number is
converted to rational correctly, but converting the ratio into a double
introduced an error.

Tracking down to how the conversion is done, I found the rts float
implementation uses `ldexp`, whose signature is
`double ldexp (double x, int exp);`
The callsite passes an `I_` to the second argument, which is
platform-dependent. On machines where `I_` is 64 bits and `int` is 32 bits, we
observe integer overflow behaviour.

Here is a mapping from rational to exponent with observations
1e646457008  -> 2147483645 (result = infinity, positive in int32)
1e646457009  -> 2147483648 (result = 0.0, overflow to negative in int32)
1e1000000000 -> 3321928042 (result = infinity, overflow to positive in int32)
1e1555550000 -> 5167425196 (result = 0.0, overflow to negative in int32)

We fix this issue by comparing STG_INT_MIN/MAX and INT_MIN/MAX and bound the
value appropriately.

Test Plan: New test cases

Reviewers: bgamari, erikd, simonmar

Reviewed By: bgamari

Subscribers: rwbarton, carter

GHC Trac Issues: #15271

Differential Revision: https://phabricator.haskell.org/D5271

(cherry picked from commit 311a63979cfa2c1e81be54b82205e681f6ec4f14)

8 months agoFix `:k` command: add validity checking
Ningning Xie [Sun, 28 Oct 2018 16:26:12 +0000 (12:26 -0400)] 
Fix `:k` command: add validity checking

Summary:
This patch fixes #15806, where we found that the `:k` command in GHCi
misses a validity checking for the type.

Missing validity checking causes `:k` to accept types that are not validated.
For example, `:k (Maybe (forall a. a -> a))` (incorrectly) returns `*`, while
impredictivity of type instantiation shouldn't be allowed.

Test Plan: ./validate

Reviewers: simonpj, goldfire, bgamari

Reviewed By: bgamari

Subscribers: rwbarton, carter

GHC Trac Issues: #15806

Differential Revision: https://phabricator.haskell.org/D5265

(cherry picked from commit 12cb5cf50b8b35394e2e2d57e1ac693c76f90833)

8 months agoincludes: Allow headers to be built with C++11 compilers
Ben Gamari [Sun, 28 Oct 2018 16:24:06 +0000 (12:24 -0400)] 
includes: Allow headers to be built with C++11 compilers

Summary:
Fixes #14784. Note that C++11 is quite conservative; we could likely accept
C++03 as well.

Test Plan:
```
$ cat >hi.c <<EOF
#include <Rts.h>
EOF
$ g++ -std=c++11 hi.c
```

Reviewers: simonmar, hvr

Subscribers: rwbarton, carter

GHC Trac Issues: #14784

Differential Revision: https://phabricator.haskell.org/D5244

(cherry picked from commit d3a1022fabb0ad337003fac774c6929f402ecb8b)

8 months agoFix rare undefined asm temp end label error in x86
Zejun Wu [Sun, 28 Oct 2018 16:22:25 +0000 (12:22 -0400)] 
Fix rare undefined asm temp end label error in x86

Summary:
Encountered assembly error due to undefined label `.LcaDcU_info_end` for
following code generated by `pprFrameProc`:

```
.Lsat_sa8fp{v}_info_fde_end:
  .long .Lblock{v caDcU}_info_fde_end-.Lblock{v caDcU}_info_fde
.Lblock{v caDcU}_info_fde:
  .long _nbHlD-.Lsection_frame
  .quad block{v caDcU}_info-1
  .quad .Lblock{v caDcU}_info_end-block{v caDcU}_info+1
  .byte 1
```

This diff fixed the error.

Test Plan:
  ./validate

Also the case where we used to have assembly error is now fixed.
Unfortunately, I have limited insight here and cannot get a small enough repro
or test case for this.

Ben says:

> I think I see: Previously we only produced end symbols for the info
> tables of top-level procedures. However, blocks within a procedure may
> also have info tables, we will dutifully generate debug information for
> and consequently we get undefined symbols.

Reviewers: simonmar, scpmw, last_g, bgamari

Reviewed By: bgamari

Subscribers: rwbarton, carter

Differential Revision: https://phabricator.haskell.org/D5246

(cherry picked from commit cf961dcf5ebc26cbd960196ba387736334088303)

8 months agoFix for T14251 on ARM
Kavon Farvardin [Sun, 28 Oct 2018 16:11:49 +0000 (12:11 -0400)] 
Fix for T14251 on ARM

We now calculate the SSE register padding needed to fix the calling
convention in LLVM in a robust way: grouping them by whether
registers in that class overlap (with the same class overlapping
itself).

My prior patch assumed that no matter the platform, physical
register Fx aliases with Dx, etc, for our calling convention.

This is unfortunately not the case for any platform except x86-64.

Test Plan:
Only know how to test on x86-64, but it should be tested on ARM with:

`make test WAYS=llvm && make test WAYS=optllvm`

Reviewers: bgamari, angerman

Reviewed By: bgamari

Subscribers: rwbarton, carter

GHC Trac Issues: #15780, #14251, #15747

Differential Revision: https://phabricator.haskell.org/D5254

(cherry picked from commit c36a2b596a6ba9d7a0a80df01b3c041720c727ca)

8 months agoBump hsc2hs submodule
Ben Gamari [Thu, 18 Oct 2018 13:17:53 +0000 (09:17 -0400)] 
Bump hsc2hs submodule

8 months agoBump version to 8.6.2
Ben Gamari [Wed, 17 Oct 2018 22:39:25 +0000 (18:39 -0400)] 
Bump version to 8.6.2

8 months agocircleci: Build with in-tree GMP on Darwin
Ben Gamari [Wed, 17 Oct 2018 19:31:36 +0000 (15:31 -0400)] 
circleci: Build with in-tree GMP on Darwin

Fixes #15404.

8 months agoFix #15761 by adding parens
Richard Eisenberg [Wed, 17 Oct 2018 14:46:21 +0000 (10:46 -0400)] 
Fix #15761 by adding parens

This was just a pretty-printer infelicity. Fixed now.

Test case: printer/T15761

(cherry picked from commit 38c28c1a8bb129141e533866700e7318314f32c1)

8 months agoBump haddock submodule
Ben Gamari [Wed, 17 Oct 2018 15:19:53 +0000 (11:19 -0400)] 
Bump haddock submodule

8 months agoFail fast on pattern synonyms
Simon Peyton Jones [Wed, 3 Oct 2018 14:53:59 +0000 (15:53 +0100)] 
Fail fast on pattern synonyms

We were recovering too eagerly from errors in pattern-synonym
type inference, leading to a cascade of confusing follow up errors
(Trac #15685, #15692).

The underlying issue is that a pattern synonym should have a closed,
fixed type, with no unification variables in it.  But it wasn't!

Fixing this made me change the interface to simplifyInfer slightly.
Instead of /emitting/ a residual implication constraint, it
now /returns/ it, so that the caller can decide what to do.

(cherry picked from commit 9ebfa03d9e9cbf79f698b5d4bd39e799e4e9a02c)

8 months agobase: Fill in TBAs in changelog
Ben Gamari [Mon, 15 Oct 2018 17:59:20 +0000 (13:59 -0400)] 
base: Fill in TBAs in changelog

I've added a check in my release script to ensure that this doesn't happen in
the future.

(cherry picked from commit 2605458930f2d79738fab4437f10793448d4232c)

9 months agoFix dataToTag# argument evaluation
Ömer Sinan Ağacan [Wed, 10 Oct 2018 07:07:05 +0000 (10:07 +0300)] 
Fix dataToTag# argument evaluation

See #15696 for more details. We now always enter dataToTag# argument (done in
generated Cmm, in StgCmmExpr). Any high-level optimisations on dataToTag#
applications are done by the simplifier. Looking at tag bits (instead of
reading the info table) for small types is left to another diff.

Incorrect test T14626 is removed. We no longer do this optimisation (see
comment:44, comment:45, comment:60).

Comments and notes about special cases around dataToTag# are removed. We no
longer have any special cases around it in Core.

Other changes related to evaluating primops (seq# and dataToTag#) will be
pursued in follow-up diffs.

Test Plan: Validates with three regression tests

Reviewers: simonpj, simonmar, hvr, bgamari, dfeuer

Reviewed By: simonmar

Subscribers: rwbarton, carter

GHC Trac Issues: #15696

Differential Revision: https://phabricator.haskell.org/D5201

(cherry picked from commit ac977688523e5d77eb6f041f043552410b0c21da)

9 months agoDo not mark CoVars as dead in the occur-anal
Simon Peyton Jones [Wed, 3 Oct 2018 14:41:43 +0000 (15:41 +0100)] 
Do not mark CoVars as dead in the occur-anal

For years we have been marking CoVars as dead, becuase we
don't gather occurrence info from types.  This is obviously
wrong and caused Trac #15695.

See Note [Do not mark CoVars as dead] in OccurAnal.

(cherry picked from commit 02b303eed0170983921877801e57f55d012db301)

9 months agoFix for recover with -fexternal-interpreter (#15418)
Simon Marlow [Wed, 26 Sep 2018 20:32:29 +0000 (15:32 -0500)] 
Fix for recover with -fexternal-interpreter (#15418)

Summary:
When using -fexternal-interpreter, recover was not treating a Q
compuation that simply registered an error with addErrTc as failing.

Test Plan:
New unit tests:
* T15418 is the repro from in the ticket
* TH_recover_warns is a new test to ensure that we're keeping warnings when
  the body of recover succeeds.

Reviewers: bgamari, RyanGlScott, angerman, goldfire, erikd

Subscribers: rwbarton, carter

GHC Trac Issues: #15418

Differential Revision: https://phabricator.haskell.org/D5185

(cherry picked from commit d00c308633fe7d216d31a1087e00e63532d87d6d)

9 months agoGHCi should not filter instances involving cTuples
Alec Theriault [Tue, 2 Oct 2018 12:48:00 +0000 (14:48 +0200)] 
GHCi should not filter instances involving cTuples

Summary: See the new T12005 test case for an example of this.

Test Plan: make TEST=T12005

Reviewers: bgamari, osa1

Reviewed By: osa1

Subscribers: osa1, rwbarton, carter

GHC Trac Issues: #12005

Differential Revision: https://phabricator.haskell.org/D5182

(cherry picked from commit 21efbc7599e39ec93b8b13b7d7b84811226e6f6f)

9 months agoAdd -Wstar-is-type to the User's Guide
Vladislav Zavialov [Thu, 4 Oct 2018 17:43:47 +0000 (13:43 -0400)] 
Add -Wstar-is-type to the User's Guide

The -Wstar-is-type flag was added without documentation.
Now it has documentation.

Test Plan: Validate

Reviewers: bgamari

Reviewed By: bgamari

Subscribers: rwbarton, carter

Differential Revision: https://phabricator.haskell.org/D5203

(cherry picked from commit 07083fc44ebf3f0510ae1d71ae5c9c88c87ae1d8)

9 months agoFix slop zeroing for AP_STACK eager blackholes in debug build
Ömer Sinan Ağacan [Fri, 21 Sep 2018 06:33:38 +0000 (09:33 +0300)] 
Fix slop zeroing for AP_STACK eager blackholes in debug build

As #15571 reports, eager blackholing breaks sanity checks as we can't
zero the payload when eagerly blackholing (because we'll be using the
payload after blackholing), but by the time we blackhole a previously
eagerly blackholed object (in `threadPaused()`) we don't have the
correct size information for the object (because the object's type
becomes BLACKHOLE when we eagerly blackhole it) so can't properly zero
the slop.

This problem can be solved for AP_STACK eager blackholing (which unlike
eager blackholing in general, is not optional) by zeroing the payload
after entering the stack. This patch implements this idea.

Fixes #15571.

Test Plan:
Previously concprog001 when compiled and run with sanity checks

    ghc-stage2 Mult.hs -debug -rtsopts
    ./Mult +RTS -DS

was failing with

    Mult: internal error: checkClosure: stack frame
        (GHC version 8.7.20180821 for x86_64_unknown_linux)
        Please report this as a GHC bug:  http://www.haskell.org/ghc/reportabug

thic patch fixes this panic. The test still panics, but it runs for a while
before panicking (instead of directly panicking as before), and the new problem
seems unrelated:

    Mult: internal error: ASSERTION FAILED: file rts/sm/Sanity.c, line 296
        (GHC version 8.7.20180919 for x86_64_unknown_linux)
        Please report this as a GHC bug:  http://www.haskell.org/ghc/reportabug

The new problem will be fixed in another diff.

I also tried slow validate (which requires D5164): this does not introduce any
new failures.

Reviewers: simonmar, bgamari, erikd

Reviewed By: simonmar

Subscribers: rwbarton, carter

GHC Trac Issues: #15571

Differential Revision: https://phabricator.haskell.org/D5165

(cherry picked from commit 66c17293648fd03a04aabfd807b3c8336e8f843a)

9 months agoCompiler panic on invalid syntax (unterminated pragma)
roland [Tue, 4 Sep 2018 12:09:20 +0000 (14:09 +0200)] 
Compiler panic on invalid syntax (unterminated pragma)

Summary: After a parse error in OPTIONS_GHC issue an error message instead of a compiler panic.

Test Plan: make test TEST=T15053

Reviewers: Phyx, thomie, bgamari, monoidal, osa1

Reviewed By: Phyx, monoidal, osa1

Subscribers: tdammers, osa1, rwbarton, carter

GHC Trac Issues: #15053

Differential Revision: https://phabricator.haskell.org/D5093

(cherry picked from commit df363a646b66f4dd13d63ec70f18e427cabc8878)

9 months agotestsuite: Add test for #15053
Ben Gamari [Fri, 6 Jul 2018 15:01:38 +0000 (11:01 -0400)] 
testsuite: Add test for #15053

Reviewers: Phyx

Reviewed By: Phyx

Subscribers: Phyx, rwbarton, thomie, carter

GHC Trac Issues: #15053

Differential Revision: https://phabricator.haskell.org/D4883

(cherry picked from commit f03f0d61bebe287e0df0254c175eb2f183d697aa)

9 months agoDon't show constraint tuples in errors (#14907)
Alec Theriault [Tue, 25 Sep 2018 09:58:12 +0000 (11:58 +0200)] 
Don't show constraint tuples in errors (#14907)

Summary:
This means that 'GHC.Classes.(%,%)' is no longer mentioned in
error messages for things like

   class (a,b,c)  -- outside of 'GHC.Classes'
   class (a,Bool)

Test Plan: make TEST=T14907a && make TEST=T14907b

Reviewers: RyanGlScott, bgamari

Reviewed By: RyanGlScott

Subscribers: rwbarton, carter

GHC Trac Issues: #14907

Differential Revision: https://phabricator.haskell.org/D5172

(cherry picked from commit 9bfbc4e16d511678cffa9f7f76b369c8cfca7a66)

9 months agousers guide: Drop old release notes
Ben Gamari [Sun, 7 Oct 2018 15:53:52 +0000 (11:53 -0400)] 
users guide: Drop old release notes

9 months agoBe mindful of GADT tyvar order when desugaring record updates
Ryan Scott [Fri, 17 Aug 2018 14:31:27 +0000 (16:31 +0200)] 
Be mindful of GADT tyvar order when desugaring record updates

After commit ef26182e2014b0a2a029ae466a4b121bf235e4e4,
the type variable binders in GADT constructor type signatures
are now quantified in toposorted order, instead of always having
all the universals before all the existentials. Unfortunately, that
commit forgot to update some code (which was assuming the latter
scenario) in `DsExpr` which desugars record updates. This wound
up being the cause of #15499.

This patch makes up for lost time by desugaring record updates in
a way such that the desugared expression applies type arguments to
the right-hand side constructor in the correct order—that is, the
order in which they were quantified by the user.

Test Plan: make test TEST=T15499

Reviewers: simonpj, bgamari

Reviewed By: simonpj

Subscribers: rwbarton, carter

GHC Trac Issues: #15499

Differential Revision: https://phabricator.haskell.org/D5060

(cherry picked from commit 63b6a1d44849c479d2a7cb59211f5c64d133bc62)

9 months agoDrop accidental write-attributes request
Tamar Christina [Wed, 3 Oct 2018 13:34:56 +0000 (15:34 +0200)] 
Drop accidental write-attributes request

Summary:
The new filesystem code accidentally asks for write attributes
permissions when doing read-only access.

I believe this is what's causing the GHC 8.6.1 tarballs to fail
when installed to a privileged location.
I haven't been able to reproduce the issue yet, but this permission
bit is wrong anyway.

Test Plan: I'm still trying to workout how to test that this works,
changing the permissions on the folder doesn't seem to reproduce
the error on a tarball I made from before the change.

Reviewers: bgamari, tdammers

Reviewed By: bgamari

Subscribers: tdammers, monoidal, rwbarton, carter

GHC Trac Issues: #15667

Differential Revision: https://phabricator.haskell.org/D5177

(cherry picked from commit deceb21b7ec64ae60377addc2679692ca500b6ae)

9 months agoBump array submodule
Ben Gamari [Fri, 5 Oct 2018 21:43:59 +0000 (17:43 -0400)] 
Bump array submodule

9 months agoMultiple fixes / improvements for LLVM backend
Kavon Farvardin [Thu, 4 Oct 2018 17:44:55 +0000 (13:44 -0400)] 
Multiple fixes / improvements for LLVM backend

- Fix for #13904 -- stop "trashing" callee-saved registers, since it is
  not actually doing anything useful.

- Fix for #14251 -- fixes the calling convention for functions passing
  raw SSE-register values by adding padding as needed to get the values
  in the right registers. This problem cropped up when some args were
  unused an dropped from the live list.

- Fixed a typo in 'readnone' attribute

- Added 'lower-expect' pass to level 0 LLVM optimization passes to
  improve block layout in LLVM for stack checks, etc.

Test Plan: `make test WAYS=optllvm` and `make test WAYS=llvm`

Reviewers: bgamari, simonmar, angerman

Reviewed By: angerman

Subscribers: rwbarton, carter

GHC Trac Issues: #13904, #14251

Differential Revision: https://phabricator.haskell.org/D5190

(cherry picked from commit adcb5fb47c0942671d409b940d8884daa9359ca4)

9 months agotestsuite: Don't force run of llvm ways in T14251
Ben Gamari [Fri, 21 Sep 2018 15:44:35 +0000 (11:44 -0400)] 
testsuite: Don't force run of llvm ways in T14251

This breaks if LLVM is not available.

(cherry picked from commit d0d74842868ceb6716b7334eb6310f61f90023bf)

9 months agoAdd testcase for #14251
Ben Gamari [Wed, 19 Sep 2018 19:04:11 +0000 (15:04 -0400)] 
Add testcase for #14251

(cherry picked from commit ba086ca72ee6c77abba685f3100ad513e38a1a87)

9 months agocircleci: Run cabal update with -v
Ben Gamari [Fri, 21 Sep 2018 20:05:30 +0000 (16:05 -0400)] 
circleci: Run cabal update with -v

The cabal update command appears to be timing out with no output after 10 minutes.

9 months agoSet RELEASE=YES ghc-8.6.1-release
Ben Gamari [Fri, 21 Sep 2018 16:39:51 +0000 (12:39 -0400)] 
Set RELEASE=YES

9 months agouser-guide: Allow build with sphinx < 1.8
Ben Gamari [Thu, 20 Sep 2018 21:35:05 +0000 (17:35 -0400)] 
user-guide: Allow build with sphinx < 1.8

Apparently the override argument to add_directive_to_domain was added in sphinx
1.8.

(cherry picked from commit a257782f56e5e330349d4cc7db71e297d8396c67)

9 months agousers_guide: fix sphinx error caused by non-explicit override
Zejun Wu [Thu, 20 Sep 2018 20:05:28 +0000 (16:05 -0400)] 
users_guide: fix sphinx error caused by non-explicit override

Encouter following error when `make`:

```
Extension error:
The 'ghc-flag' directive is already registered to domain std
```

as we register `ghc-flag` to `std` in `add_object_type` first and then
overtride it in `add_directive_to_domain`.

Test Plan:
  make -C utils/haddock/doc html SPHINX_BUILD=/usr/bin/sphinx-build

Reviewers: austin, bgamari, patrickdoc

Subscribers: rwbarton, carter

Differential Revision: https://phabricator.haskell.org/D5161

(cherry picked from commit 8c7d33a8ff6d3ea55b5dc8108d9441521af68ab8)

9 months agousers-guide: Fix build with sphinx 1.8
Ben Gamari [Thu, 20 Sep 2018 12:27:37 +0000 (08:27 -0400)] 
users-guide: Fix build with sphinx 1.8

It seems that both add_object_type and add_directive_to_domain both register a
directive. Previously sphinx didn't seem to mind this but as of Sphinx 1.8 it
crashes with an exception.

(cherry picked from commit 4eebc8016f68719e1ccdf460754a97d1f4d6ef05)

9 months agousers-guide: Fill out release highlights
Ben Gamari [Wed, 19 Sep 2018 19:28:47 +0000 (15:28 -0400)] 
users-guide: Fill out release highlights

9 months agoBump stm submodule
Ben Gamari [Wed, 19 Sep 2018 18:56:41 +0000 (14:56 -0400)] 
Bump stm submodule

9 months agousers-guide: Fix code-block layout for QuantifiedConstraints
Takenobu Tani [Mon, 17 Sep 2018 14:47:02 +0000 (16:47 +0200)] 
users-guide: Fix code-block layout for QuantifiedConstraints

Summary:
Fix code-block layout for QuantifiedConstraints.

[ci skip]

Test Plan: build

Reviewers: bgamari, monoidal

Reviewed By: monoidal

Subscribers: rwbarton, carter

Differential Revision: https://phabricator.haskell.org/D5121

(cherry picked from commit 43967c0c7d2d0110cfc5f9d64a7dab3a3dda8953)

9 months agoDon't shortcut SRTs for static functions (#15544)
Simon Marlow [Tue, 18 Sep 2018 15:47:56 +0000 (11:47 -0400)] 
Don't shortcut SRTs for static functions (#15544)

Shortcutting the SRT for a static function can lead to resurrecting a
static object at runtime, which violates assumptions in the GC. See
comments for details.

Test Plan:
- manual testing (in progress)
- validate

Reviewers: osa1, bgamari, erikd

Reviewed By: bgamari

Subscribers: rwbarton, carter

GHC Trac Issues: #15544

Differential Revision: https://phabricator.haskell.org/D5145

(cherry picked from commit a324dfdf3b505ea30d134dc8183d7b4bb441ced4)

9 months agoRevert "Revert "Disable the SRT offset optimisation on MachO platforms""
Ben Gamari [Tue, 18 Sep 2018 15:45:27 +0000 (11:45 -0400)] 
Revert "Revert "Disable the SRT offset optimisation on MachO platforms""

This reverts commit c15d44f8b3f00bfe152c2f9d3c6f60efd204fb23.

9 months agoRevert "Revert "Fix a bug in SRT generation""
Ben Gamari [Tue, 18 Sep 2018 15:45:26 +0000 (11:45 -0400)] 
Revert "Revert "Fix a bug in SRT generation""

This reverts commit d82e8af82d4be11252294290564044ef956ec2a4.

9 months agoRevert "Revert "Fix retainer profiling after SRT overhaul""
Ben Gamari [Tue, 18 Sep 2018 15:45:25 +0000 (11:45 -0400)] 
Revert "Revert "Fix retainer profiling after SRT overhaul""

This reverts commit 25765469b312aa21422c635aa5852a69e29f24f1.

9 months agoRevert "Revert "Comments and refactoring only""
Ben Gamari [Tue, 18 Sep 2018 15:45:25 +0000 (11:45 -0400)] 
Revert "Revert "Comments and refactoring only""

This reverts commit b0f06f53761820167e8b2cda61bc8c3137a83f92.

9 months agoRevert "Revert "Merge FUN_STATIC closure with its SRT""
Ben Gamari [Tue, 18 Sep 2018 15:45:23 +0000 (11:45 -0400)] 
Revert "Revert "Merge FUN_STATIC closure with its SRT""

This reverts commit 6f2596b432a9915d648286195b48c48ccdd14a2c.

9 months agoRevert "Revert "Save a word in the info table on x86_64""
Ben Gamari [Tue, 18 Sep 2018 15:45:22 +0000 (11:45 -0400)] 
Revert "Revert "Save a word in the info table on x86_64""

This reverts commit dee229487fccc6a994d4bb9c4ceda0903bec707b.

9 months agoRevert "Revert "An overhaul of the SRT representation""
Ben Gamari [Tue, 18 Sep 2018 15:45:21 +0000 (11:45 -0400)] 
Revert "Revert "An overhaul of the SRT representation""

This reverts commit ceffd7fe3f310cb30fec870f768e8047af309d99.

9 months agoFix T15502 on 32-bit
Krzysztof Gogolewski [Fri, 14 Sep 2018 12:38:42 +0000 (14:38 +0200)] 
Fix T15502 on 32-bit

Summary:
The expected output uses a hardcoded value for
maxBound :: Int.

This should fix one of circleci failures on i386.

Test Plan: make test TEST=T15502

Reviewers: RyanGlScott, bgamari

Reviewed By: RyanGlScott

Subscribers: rwbarton, carter

GHC Trac Issues: #15502

Differential Revision: https://phabricator.haskell.org/D5151

(cherry picked from commit ecbe26b6966a3a64f4e22e862370536b1dd4440f)

9 months agoBump deepseq submodule
Ben Gamari [Sun, 16 Sep 2018 20:56:16 +0000 (16:56 -0400)] 
Bump deepseq submodule

9 months agoBump Cabal submodule
Ben Gamari [Sun, 16 Sep 2018 20:55:49 +0000 (16:55 -0400)] 
Bump Cabal submodule

9 months agoBump text submodule
Ben Gamari [Sun, 16 Sep 2018 20:55:21 +0000 (16:55 -0400)] 
Bump text submodule

9 months agoBump stm submodule
Ben Gamari [Sun, 16 Sep 2018 20:51:53 +0000 (16:51 -0400)] 
Bump stm submodule

9 months agoUpdate hsc2hs submodule
Chaitanya Koparkar [Thu, 13 Sep 2018 22:15:18 +0000 (18:15 -0400)] 
Update hsc2hs submodule

Test Plan: ./validate

Reviewers: bgamari, hvr, RyanGlScott

Reviewed By: RyanGlScott

Subscribers: monoidal, rwbarton, carter

Differential Revision: https://phabricator.haskell.org/D5114

(cherry picked from commit ce240b3f998b68853c47ab131126eb9a245256c5)

9 months agobase: showEFloat: Handle negative precisions the same of zero precision
Ben Gamari [Thu, 13 Sep 2018 21:09:56 +0000 (17:09 -0400)] 
base: showEFloat: Handle negative precisions the same of zero precision

Test Plan: Validate

Reviewers: hvr, alpmestan

Reviewed By: alpmestan

Subscribers: rwbarton, carter

GHC Trac Issues: #15509

Differential Revision: https://phabricator.haskell.org/D5083

(cherry picked from commit e71e341f87c055ecc01f85ddd8d7a2094dfa8e9a)

9 months agoFix #10859 by using foldr1 while deriving Eq instances
Chaitanya Koparkar [Mon, 27 Aug 2018 12:07:08 +0000 (14:07 +0200)] 
Fix #10859 by using foldr1 while deriving Eq instances

Summary:
Previously, we were using foldl1 instead, which led to the derived
code to be wrongly associated.

Test Plan: ./validate

Reviewers: RyanGlScott, nomeata, simonpj, bgamari

Reviewed By: RyanGlScott, nomeata

Subscribers: rwbarton, carter

GHC Trac Issues: #10859

Differential Revision: https://phabricator.haskell.org/D5104

(cherry picked from commit 2d953a60489ba30433e5f2fe27c50aa9da75f802)

9 months agoFix #15572 by checking for promoted names in ConT
Ryan Scott [Tue, 28 Aug 2018 18:54:28 +0000 (20:54 +0200)] 
Fix #15572 by checking for promoted names in ConT

Summary:
When converting `ConT`s to `HsTyVar`s in `Convert`, we were
failing to account for the possibility of promoted data constructor
names appearing in a `ConT`, which could result in improper
pretty-printing results (as observed in #15572). The fix is
straightforward: use `Promoted` instead of `NotPromoted` when the
name of a `ConT` is a data constructor name.

Test Plan: make test TEST=T15572

Reviewers: goldfire, bgamari, simonpj, monoidal

Reviewed By: goldfire, simonpj

Subscribers: monoidal, rwbarton, carter

GHC Trac Issues: #15572

Differential Revision: https://phabricator.haskell.org/D5112

(cherry picked from commit c46a5f2002f6694ea58f79f505d57f3b7bd450e7)

9 months agoFix #15550 by quoting RULE names during TH conversion
Ryan Scott [Mon, 27 Aug 2018 12:02:42 +0000 (14:02 +0200)] 
Fix #15550 by quoting RULE names during TH conversion

Summary:
When converting a `RuleP` to a GHC source `RuleD` during TH
conversion, we were stupidly not double-quoting the name of the rule.
Easily fixed.

Test Plan: make test TEST=T15550

Reviewers: goldfire, bgamari, simonpj

Reviewed By: simonpj

Subscribers: simonpj, rwbarton, carter

GHC Trac Issues: #15550

Differential Revision: https://phabricator.haskell.org/D5090

(cherry picked from commit 5e6cf2a9301a5473ff9c5319b96de941b1ad72dd)

9 months agocanCFunEqCan: use isTcReflexiveCo (not isTcReflCo)
Simon Peyton Jones [Mon, 3 Sep 2018 08:00:49 +0000 (09:00 +0100)] 
canCFunEqCan: use isTcReflexiveCo (not isTcReflCo)

As Trac #15577 showed, it was possible for a /homo-kinded/
constraint to trigger the /hetero-kinded/ branch of canCFunEqCan,
and that triggered an infinite loop.

The fix is easier, but there remains a deeper questions: why is
the flattener producing giant refexive coercions?

(cherry picked from commit 2e226a46c422c12f78dc3d3f62fe5a15e22bd986)

9 months agoFix #15502 by not casting to Int during TH conversion
Ryan Scott [Mon, 27 Aug 2018 12:02:49 +0000 (14:02 +0200)] 
Fix #15502 by not casting to Int during TH conversion

Summary:
When turning an `IntegerL` to an `IntegralLit` during TH
conversion, we were stupidly casting an `Integer` to an `Int` in
order to determine how it should be pretty-printed. Unsurprisingly,
this causes problems when the `Integer` doesn't lie within the bounds
of an `Int`, as demonstrated in #15502.

The fix is simple: don't cast to an `Int`.

Test Plan: make test TEST=T15502

Reviewers: bgamari, simonpj

Reviewed By: simonpj

Subscribers: simonpj, rwbarton, carter

GHC Trac Issues: #15502

Differential Revision: https://phabricator.haskell.org/D5089

(cherry picked from commit 7a3cda534d1447c813aa37cdd86e20b8d782cb02)

10 months agoRevert "An overhaul of the SRT representation"
Ben Gamari [Wed, 12 Sep 2018 19:17:15 +0000 (15:17 -0400)] 
Revert "An overhaul of the SRT representation"

This reverts commit eb8e692cab7970c495681e14721d05ecadd21581.

10 months agoRevert "Save a word in the info table on x86_64"
Ben Gamari [Wed, 12 Sep 2018 19:14:08 +0000 (15:14 -0400)] 
Revert "Save a word in the info table on x86_64"

This reverts commit 2b0918c9834be1873728176e4944bec26271234a.

10 months agoRevert "Merge FUN_STATIC closure with its SRT"
Ben Gamari [Wed, 12 Sep 2018 19:09:20 +0000 (15:09 -0400)] 
Revert "Merge FUN_STATIC closure with its SRT"

This reverts commit 838b69032566ce6ab3918d70e8d5e098d0bcee02.

10 months agoRevert "Comments and refactoring only"
Ben Gamari [Wed, 12 Sep 2018 19:07:44 +0000 (15:07 -0400)] 
Revert "Comments and refactoring only"

This reverts commit f2d27c1ad69321872a87a37144fe41e815301f5b.