21 months agoFix markup in the UNPACK pragma section of the user's guide.
theindigamer [Sat, 14 Apr 2018 23:17:04 +0000 (19:17 -0400)] 
Fix markup in the UNPACK pragma section of the user's guide.

The ticket 5252 wasn't linked earlier.

21 months agoComments only
Simon Peyton Jones [Tue, 17 Apr 2018 12:19:40 +0000 (13:19 +0100)] 
Comments only

Deleting misleading comments, to fix Trac #15047

21 months agoMinor comments in CSE
Simon Peyton Jones [Mon, 16 Apr 2018 12:56:08 +0000 (13:56 +0100)] 
Minor comments in CSE

21 months agoRemove markSignalHandlers
Ömer Sinan Ağacan [Mon, 16 Apr 2018 18:58:21 +0000 (21:58 +0300)] 
Remove markSignalHandlers

It's no-op on all platforms

Reviewers: bgamari, simonmar, erikd, dfeuer

Reviewed By: dfeuer

Subscribers: dfeuer, thomie, carter

Differential Revision:

21 months agorts: Comment wibbles
Ben Gamari [Mon, 16 Apr 2018 18:35:41 +0000 (14:35 -0400)] 
rts: Comment wibbles

21 months agoRevert "Enhanced constant folding"
Ben Gamari [Mon, 16 Apr 2018 18:36:11 +0000 (14:36 -0400)] 
Revert "Enhanced constant folding"

I need to upgrade GHC on the CI builders before landing this due to a
bug in 8.2.1 triggered by this patch.

This reverts commit fea04defa64871caab6339ff3fc5511a272f37c7.

21 months agousers guide: Note improved constant folding in 8.6 release notes
Ben Gamari [Fri, 13 Apr 2018 22:10:39 +0000 (18:10 -0400)] 
users guide: Note improved constant folding in 8.6 release notes

21 months agoEnhanced constant folding
Sylvain Henry [Fri, 13 Apr 2018 17:29:07 +0000 (13:29 -0400)] 
Enhanced constant folding

Until now GHC only supported basic constant folding (lit op lit, expr op
0, etc.).

This patch uses laws of +/-/* (associativity, commutativity,
distributivity) to support some constant folding into nested

Examples of new transformations:

   - simple nesting: (10 + x) + 10 becomes 20 + x
   - deep nesting: 5 + x + (y + (z + (t + 5))) becomes 10 + (x + (y + (z + t)))
   - distribution: (5 + x) * 6 becomes 30 + 6*x
   - simple factorization: 5 + x + (x + (x + (x + 5))) becomes 10 + (4 *x)
   - siblings: (5 + 4*x) - (3*x + 2) becomes 3 + x

Test Plan: validate

Reviewers: simonpj, austin, bgamari

Reviewed By: bgamari

Subscribers: thomie

GHC Trac Issues: #9136

Differential Revision:

21 months agoConfigure option to disable dtrace
Ben Gamari [Fri, 13 Apr 2018 18:18:03 +0000 (14:18 -0400)] 
Configure option to disable dtrace

Reviewers: hvr, bgamari

Subscribers: lelf, thomie, carter

Differential Revision:

21 months agoOmit ways depending on rts flags for #12870 related tests.
Andreas Klebinger [Fri, 13 Apr 2018 17:27:36 +0000 (13:27 -0400)] 
Omit ways depending on rts flags for #12870 related tests.

Some of these tests instruct the RTS to ignore all RTS flags being
passed.  While this is intended it causes test failures for some ways
like profiling which depend on passing RTS flags. So we skip these ways.

Test Plan: testsuite/tests/rts/flags$ make slow

Reviewers: bgamari, simonmar, alpmestan

Reviewed By: alpmestan

Subscribers: alpmestan, thomie, carter

GHC Trac Issues: #12870

Differential Revision:

21 months agoMake shortcutting at the asm stage toggleable and default for O2.
Andreas Klebinger [Fri, 13 Apr 2018 17:23:13 +0000 (13:23 -0400)] 
Make shortcutting at the asm stage toggleable and default for O2.

Shortcutting during the asm stage of codegen is often redundant as most
cases get caught during the Cmm passes.  For example during compilation
of all of nofib only 508 jumps are eleminated.

For this reason I moved the pass from -O1 to -O2. I also made it
toggleable with -fasm-shortcutting.

Test Plan: ci

Reviewers: bgamari

Reviewed By: bgamari

Subscribers: thomie, carter

Differential Revision:

21 months agoDeclare `catchRetry#` lazy in its first argument
Ben Gamari [Fri, 13 Apr 2018 17:22:55 +0000 (13:22 -0400)] 
Declare `catchRetry#` lazy in its first argument

As per the results on item 1 in T14998, declaring `catchRetry#` lazy in
its first argument opens the possibility to remove `ExnStr` complexity
from strictness demands at virtually no regressions in NoFib.

This brings `catchRetry#` in line with other primops from the `catch*`

Reviewers: bgamari, simonpj, nomeata

Reviewed By: bgamari

Subscribers: thomie, carter

GHC Trac Issues: #14998, #11222

Differential Revision:

21 months agoCorrect FixIOException's @since annotation retroactively
Ryan Scott [Fri, 13 Apr 2018 16:54:31 +0000 (12:54 -0400)] 
Correct FixIOException's @since annotation retroactively

In D4113, a `FixIOException` data type was added with a
`@since TODO` annotation, but it seems that `TODO` made it out into
`base-4.11` itself. I've (retroactively) fixed this and added an
entry to the `base-4.11` entry in the `changelog`.

Test Plan: Read it

Reviewers: dfeuer, hvr, bgamari

Reviewed By: dfeuer

Subscribers: thomie, carter

GHC Trac Issues: #14356, #15025

Differential Revision:

21 months agoRevert "Fix processHeapClosureForDead CONSTR_NOCAF case:"
Ben Gamari [Fri, 13 Apr 2018 16:10:45 +0000 (12:10 -0400)] 
Revert "Fix processHeapClosureForDead CONSTR_NOCAF case:"

This reverts commit a303584e58b3f4791bc5881cb722e7f498e14554.

21 months agoUse newtype deriving for Hoopl code
U-Maokai\andi [Fri, 13 Apr 2018 15:34:03 +0000 (11:34 -0400)] 
Use newtype deriving for Hoopl code

Hoopl.Collections/.Label has newtype containers which derive
Enabling GeneralizedNewtypeDeriving improves allocation count and
compile time when building these files for GHC.

Vanilla, O1
<<ghc: 378555664 bytes, 76 GCs, 8663140/18535016 avg/max bytes
residency (5 samples), 63M in use, 0.000 INIT (0.000 elapsed), 0.219
MUT (0.354 elapsed), 0.141 GC (0.138 elapsed) :ghc>>

GeneralizedNewtypeDeriving , O1
<<ghc: 301026536 bytes, 78 GCs, 8392886/17181088 avg/max bytes
residency (5 samples), 63M in use, 0.000 INIT (0.000 elapsed), 0.156
MUT (0.230 elapsed), 0.094 GC (0.106 elapsed) :ghc>>

Test Plan: ci

Reviewers: bgamari, simonmar, RyanGlScott

Reviewed By: RyanGlScott

Subscribers: mpickering, RyanGlScott, thomie, carter

Differential Revision:

21 months agoFix #9438 by converting a panic to an error message
Ryan Scott [Fri, 13 Apr 2018 15:33:54 +0000 (11:33 -0400)] 
Fix #9438 by converting a panic to an error message

Previously, GHC was quite eager to panic whenever it was fed
an archive file when `DYNAMIC_GHC_PROGRAMS=YES`. This ought to be an
explicit error message instead, so this patch accomplishes just that.

Test Plan: make test TEST=T14708

Reviewers: Phyx, hvr, bgamari

Reviewed By: Phyx

Subscribers: thomie, carter

GHC Trac Issues: #9438, #14708, #15032

Differential Revision:

21 months agoRemove unused function: mkFunCos
Matthew Pickering [Fri, 13 Apr 2018 15:33:40 +0000 (11:33 -0400)] 
Remove unused function: mkFunCos

Reviewers: goldfire, bgamari, dfeuer

Reviewed By: dfeuer

Subscribers: dfeuer, thomie, carter

Differential Revision:

21 months agoFix
Andrey Mokhov [Fri, 13 Apr 2018 15:33:30 +0000 (11:33 -0400)] 

On Windows the FFI library is called `libCffi-6` instead of `libCffi`.
This needs to be reflected in `` as otherwise we cannot
properly `copy` and `register` the RTS package on Windows.


Test Plan: Build GHC using Hadrian. Make build system does not use

Reviewers: bgamari, erikd, simonmar, Phyx

Reviewed By: Phyx

Subscribers: thomie, carter

Differential Revision:

21 months agoUpdate JMP_TBL targets during shortcutting in X86 NCG.
Andreas Klebinger [Fri, 13 Apr 2018 15:32:23 +0000 (11:32 -0400)] 
Update JMP_TBL targets during shortcutting in X86 NCG.

Without updating the JMP_TBL information the block list in
JMP_TBL contained blocks which were eliminated in some circumstances.

The actual assembly generation doesn't look at these fields so this
didn't cause any bugs yet. However as long as we carry this information
around we should make an effort to keep it correct.

Especially since it's useful for debugging purposes and can be used
for passes near the end of the codegen pipeline.
In particular it's used by jumpDestsOfInstr which without these changes
returns the wrong destinations.

Test Plan: ci

Reviewers: bgamari

Subscribers: thomie, carter

Differential Revision:

21 months agoFix processHeapClosureForDead CONSTR_NOCAF case:
Ömer Sinan Ağacan [Fri, 13 Apr 2018 15:31:56 +0000 (11:31 -0400)] 
Fix processHeapClosureForDead CONSTR_NOCAF case:

CONSTR_NOCAF was introduced with 55d535da10d as a replacement for
CONSTR_STATIC and CONSTR_NOCAF_STATIC, however, as explained in Note
[static constructors], we copy CONSTR_NOCAFs (which can also be seen in
evacuate) during GC, and they can become dead, like other CONSTR_X_Ys.
processHeapClosureForDead is updated to reflect this.

Reviewers: bgamari, simonmar, erikd

Subscribers: thomie, carter

GHC Trac Issues: #7836

Differential Revision:

21 months agoRevert "CmmPipeline: add a second pass of CmmCommonBlockElim"
Michal Terepeta [Fri, 13 Apr 2018 15:31:38 +0000 (11:31 -0400)] 
Revert "CmmPipeline: add a second pass of CmmCommonBlockElim"

This reverts commit d5c4d46a62ce6a0cfa6440344f707136eff18119.

Please see #14989 for details.

Test Plan: ./validate

Reviewers: bgamari, simonmar

Subscribers: thomie, carter

GHC Trac Issues: #14989

Differential Revision:

21 months agousers-guide: Update release notes and language extensions
Takenobu Tani [Fri, 13 Apr 2018 15:31:23 +0000 (11:31 -0400)] 
users-guide: Update release notes and language extensions

Update release notes and language extensions for GHC 8.6.1.

* Add `BlockArguments` and `NumericUndescores` in release note
* Fix directive for `HexFloatLiterals` and `NumericUndescores`

Test Plan: build

Reviewers: bgamari

Reviewed By: bgamari

Subscribers: thomie, carter

Differential Revision:

21 months agoBump version numbers: base-, integer-gmp-
Ryan Scott [Fri, 13 Apr 2018 15:31:09 +0000 (11:31 -0400)] 
Bump version numbers: base-, integer-gmp-

This takes care of bumping the `base` and `integer-gmp`
minor version numbers in anticipation of a GHC 8.4.2 release.

While I was in town, I also filled in a `@since TODO` Haddock
annotation for `powModSecInteger` in `integer-gmp` with
``, and updated the changelog accordingly.

Test Plan: ./validate

Reviewers: hvr, goldfire, bgamari

Reviewed By: bgamari

Subscribers: thomie, carter

GHC Trac Issues: #15025

Differential Revision:

21 months agoTTG for HsBinds and Data instances Plan B
Alan Zimmerman [Sun, 1 Apr 2018 19:33:53 +0000 (21:33 +0200)] 
TTG for HsBinds and Data instances Plan B

- Add the balance of the TTG extensions for hsSyn/HsBinds

- Move all the (now orphan) data instances into hsSyn/HsInstances and
use TTG Data instances Plan B

Updates haddock submodule.

Illustrative numbers

Compiling HsInstances before using Plan B.

Max residency ~ 5G
<<ghc: 629,864,691,176 bytes, 5300 GCs,
       321075437/1087762592 avg/max bytes residency (23 samples),
       2953M in use, 0.000 INIT (0.000 elapsed),
       383.511 MUT (384.986 elapsed), 37.426 GC (37.444 elapsed) :ghc>>

Using Plan B

Max residency 1.1G

<<ghc: 78,832,782,968 bytes, 2884 GCs,
       222140352/386470152 avg/max bytes residency (34 samples),
       1062M in use, 0.001 INIT (0.001 elapsed),
       56.612 MUT (62.917 elapsed), 32.974 GC (32.923 elapsed) :ghc>>

Test Plan: ./validate

Reviewers: shayan-najd, goldfire, bgamari

Subscribers: goldfire, thomie, mpickering, carter

Differential Revision:

21 months agoRemove fs files from rts install-includes.
Tamar Christina [Thu, 12 Apr 2018 20:40:43 +0000 (21:40 +0100)] 
Remove fs files from rts install-includes.

They don't really need to be installed and will fix Hadrian installs.
Skipping review because change is trivial.

THis should be safe, but running it through CI to be sure.

Test Plan: ./validate

Reviewers: bgamari, erikd, simonmar

Subscribers: thomie, carter

Differential Revision:

21 months agoRevert "Remove fs files from rts install-includes."
Tamar Christina [Thu, 12 Apr 2018 06:50:28 +0000 (07:50 +0100)] 
Revert "Remove fs files from rts install-includes."

This reverts commit 111556f9e809962a91666c99d96cf80db361ee32.

There is a mismatch between Hadrian and Make on these install-includes.
but the reachability analysis forces these headers to be exported even
through they can't vven be used.

21 months agoRemove fs files from rts install-includes.
Tamar Christina [Thu, 12 Apr 2018 03:06:11 +0000 (04:06 +0100)] 
Remove fs files from rts install-includes.

They don't really need to be installed and will fix Hadrian installs.
Skipping review because change is trivial.

21 months agoNo need for sortQuantVars in Exitify after all
Joachim Breitner [Wed, 11 Apr 2018 15:24:01 +0000 (11:24 -0400)] 
No need for sortQuantVars in Exitify after all

because `captured :: [Var]` is always in dependency order.

I added a comment in the crucial point so that this does not trip us up

21 months agoSchedule.c: remove some unused parameters
Ömer Sinan Ağacan [Wed, 11 Apr 2018 08:35:43 +0000 (11:35 +0300)] 
Schedule.c: remove some unused parameters

21 months agoSchedule.c: remove unused code
Ömer Sinan Ağacan [Wed, 11 Apr 2018 07:50:11 +0000 (10:50 +0300)] 
Schedule.c: remove unused code

21 months agoMove T14925.stdout to its correct location, remove expect_broken
Ömer Sinan Ağacan [Wed, 11 Apr 2018 07:44:00 +0000 (10:44 +0300)] 
Move T14925.stdout to its correct location, remove expect_broken

21 months agoIn Exitify, zap idInfo of abstracted variables (fixes #15005)
Joachim Breitner [Tue, 10 Apr 2018 13:36:08 +0000 (09:36 -0400)] 
In Exitify, zap idInfo of abstracted variables (fixes #15005)

as helpfully outlined by SPJ.

This commit copies a small bit code from `SetLevels` which could
reasonably be put in `Id` as `zapAllIdinfo`; I did not do this to make
merging this commmit into `ghc-8.4` easier.

If this commit gets merged, then presumably after commit
3f59d3802170f495702674b4f8e4e80247803654 (test case) and
ae0cff0a1834d8b041b06d0e1ab6ce969aac44c8 (other fixes to Exitify.hs).

Differential Revision:

21 months agoDiscard reflexive casts during Simplify
Richard Eisenberg [Tue, 10 Apr 2018 14:23:42 +0000 (10:23 -0400)] 
Discard reflexive casts during Simplify

Trac #14735 (derived from Trac #11735) found that 75% of compile
time was being spent in simplCast. This patch is the first in a series
to deal with that problem.

This particular patch actually has very little effect on performance; it
just refactors simplCast so that it builds Refl coercions less often.
Refl coercions require us to compute the type to put inside them, and
even if that's done lazily it is still work and code. Instead we use
Maybe Coercion with Nothing for Refl. This change also percolates to
pushCoTyArg and pushValArg.

Reviewers: goldfire, bgamari, simonpj

Reviewed By: simonpj

Subscribers: rwbarton, thomie, carter

GHC Trac Issues: #14737

Differential Revision:

21 months agoRevert "Fix #14838 by marking TH-spliced code as FromSource"
Ben Gamari [Sat, 7 Apr 2018 17:32:58 +0000 (13:32 -0400)] 
Revert "Fix #14838 by marking TH-spliced code as FromSource"

This reverts commit ffb2738f86c4e4c3f0eaacf0a95d7326fdd2e383.

Due to #14987.

Reviewers: goldfire, RyanGlScott

Reviewed By: RyanGlScott

Subscribers: RyanGlScott, thomie, carter

GHC Trac Issues: #14987, #14838

Differential Revision:

21 months agoMove gmp/ to, fix #14972
Edward Z. Yang [Sat, 7 Apr 2018 17:32:47 +0000 (13:32 -0400)] 
Move gmp/ to, fix #14972

Here's how the rube goldberg machine triggered the old bug:

1. If you have a file gmp/, then Cabal will
create a generated file in $DIST/build/gmp/

2. When you attempt to load inplace integer-gmp via GHCi, it will
ask gcc (aka clang on OS X) for the file name of 'gmp', with
base directory set to $DIST/build

3. There is a folder named 'gmp', and so this folder is returned
as the 'library' for gmp

4. GHCi loadArchive chokes to death trying to open a library
that is actually a folder

This patch solves the problem by breaking the chain at (1): if we
don't put in a folder named gmp, NO PROBLEM.

Signed-off-by: Edward Z. Yang <>
Test Plan: validate

Reviewers: angerman, hvr, bgamari

Reviewed By: angerman

Subscribers: erikd, thomie, carter

GHC Trac Issues: #14972

Differential Revision:

21 months agoMinor typofix in LoadArchive.c
Edward Z. Yang [Sat, 7 Apr 2018 17:32:31 +0000 (13:32 -0400)] 
Minor typofix in LoadArchive.c

Test Plan: none

Reviewers: bgamari, erikd, simonmar

Reviewed By: bgamari

Subscribers: thomie, carter

Differential Revision:

21 months agorts/RetainerProfile: Handle BLOCKING_QUEUES
Ben Gamari [Sat, 7 Apr 2018 17:32:04 +0000 (13:32 -0400)] 
rts/RetainerProfile: Handle BLOCKING_QUEUES

push() considers BLOCKING_QUEUES to be an invalid closure type which
should never be present on the stack. However, retainClosure made no
accomodation for this and ended up pushing such a closure. This lead
to #14947.

Test Plan: Validate

Reviewers: simonmar, erikd

Reviewed By: simonmar

Subscribers: thomie, carter, RyanGlScott

GHC Trac Issues: #14947

Differential Revision:

21 months agotestsuite: Add test for negative sqrts (#10010)
Ben Gamari [Sat, 7 Apr 2018 17:31:42 +0000 (13:31 -0400)] 
testsuite: Add test for negative sqrts (#10010)

Reviewers: hvr, alpmestan

Reviewed By: alpmestan

Subscribers: thomie, carter

GHC Trac Issues: #10010

Differential Revision:

21 months agoRemove PARALLEL_HASKELL comments
Ömer Sinan Ağacan [Tue, 10 Apr 2018 14:06:27 +0000 (17:06 +0300)] 
Remove PARALLEL_HASKELL comments

PARALLEL_HASKELL was long gone, remove references

[skip ci]

21 months agoAdd test case for #15005
Joachim Breitner [Tue, 10 Apr 2018 13:26:09 +0000 (09:26 -0400)] 
Add test case for #15005

this succeeds on `master` right now, but I confirmed that it fails on

21 months agoFix GHC collector flavor for Fedora job (Circle CI)
mrkkrp [Tue, 10 Apr 2018 10:50:39 +0000 (17:50 +0700)] 
Fix GHC collector flavor for Fedora job (Circle CI)

21 months agoAdd a forgotten newline in a debug print
Ömer Sinan Ağacan [Tue, 10 Apr 2018 08:40:59 +0000 (11:40 +0300)] 
Add a forgotten newline in a debug print

[skip ci]

21 months agoCSE: Walk past join point lambdas (#15002)
Joachim Breitner [Thu, 5 Apr 2018 14:02:25 +0000 (10:02 -0400)] 
CSE: Walk past join point lambdas (#15002)

As the CSE transformation traverses the syntax tree, it needs to go past
the lambdas of a join point, and only look for CSE opportunities inside,
as a join point’s lambdas must be preserved. Simple fix; comes with a
Note and a test case.

Thanks to Ryan Scott for an excellently minimized test case, and for
bisecting GHC.

Differential Revision:

21 months agoRestore Trees That Grow reverted commits
Alan Zimmerman [Sun, 1 Apr 2018 19:33:53 +0000 (21:33 +0200)] 
Restore Trees That Grow reverted commits

The following commits were reverted prior to the release of GHC 8.4.1,
because the time to derive Data instances was too long [1].

 438dd1cbba13d35f3452b4dcef3f94ce9a216905 Phab:D4147
 e3ec2e7ae94524ebd111963faf34b84d942265b4 Phab:D4177
 47ad6578ea460999b53eb4293c3a3b3017a56d65 Phab:D4186

The work is continuing, as the minimum bootstrap compiler is now
GHC 8.2.1, and this allows Plan B[2] for instances to be used.  This
will land in a following commit.

Updates Haddock submodule


21 months agoBump template-haskell to
Ryan Scott [Mon, 9 Apr 2018 16:56:51 +0000 (12:56 -0400)] 
Bump template-haskell to

There has been at least one breaking change to
`template-haskell` (the removal of `qAddForeignFile`) which is
causing packages like `th-orphans` and `singletons` to fail to build
with GHC HEAD. Let's bump `template-haskell`'s major version number
so that these packages can properly guard against these changes.

While I was in town, I also started a `changelog` section for
the next major version of `template-haskell`, and copied over
finishing touches for `template-haskell-`.

Test Plan: ./validate

Reviewers: bgamari

Reviewed By: bgamari

Subscribers: thomie, carter

Differential Revision:

21 months agoSome cleanup of the Exitification code
Joachim Breitner [Fri, 6 Apr 2018 21:26:45 +0000 (17:26 -0400)] 
Some cleanup of the Exitification code

based on a thorough review by Simon in comments
through 37.

The changes are:

 * `isExitJoinId` is moved to `SimplUtils`, because
   it is only valid when occurrence information is up-to-date.
 * Abstracted variables are properly sorted using `sortQuantVars`
 * Exitification does not set occ info.

 And then minor quibles to notes and avoiding some unhelpful shadowing
 of local names.

 Differential Revision:

21 months agodocs(Data.Function): fix and augment `on` annotation
Gabriel Lebec [Sat, 7 Apr 2018 16:57:36 +0000 (12:57 -0400)] 
docs(Data.Function): fix and augment `on` annotation

21 months agoCoreUtils.filterAlts: Correct docs
Simon Jakobi [Wed, 4 Apr 2018 22:00:25 +0000 (00:00 +0200)] 
CoreUtils.filterAlts: Correct docs

`refineDefaultAlt` takes care of refining the default alt these days.

21 months agoRun tests after artifact collection
mrkkrp [Wed, 4 Apr 2018 13:38:54 +0000 (20:38 +0700)] 
Run tests after artifact collection

Since for every job there are failing tests, if we try to upload artifacts
after tests, we won't get any. As a temporary measure I suggest uploading
artifacts before running tests. Once tests are fixed, we should peform
artifact uploading after tests again.

21 months agoImprove documentation for refineDefaultAlt
Simon Jakobi [Mon, 2 Apr 2018 20:27:44 +0000 (22:27 +0200)] 
Improve documentation for refineDefaultAlt

21 months agoDocument SumTyCon
Simon Jakobi [Mon, 2 Apr 2018 19:29:02 +0000 (21:29 +0200)] 
Document SumTyCon

21 months agoCollect build artifacts with S3
mrkkrp [Fri, 30 Mar 2018 10:18:16 +0000 (17:18 +0700)] 
Collect build artifacts with S3

21 months agoRemove HasSourceText and SourceTextX classes
Alan Zimmerman [Wed, 28 Mar 2018 21:35:43 +0000 (23:35 +0200)] 
Remove HasSourceText and SourceTextX classes

Updates haddock submodule to match.

Test Plan : Validate

Differential Revision:

21 months agoFix #14238 by always pretty-printing visible tyvars
Ryan Scott [Sat, 7 Apr 2018 11:30:42 +0000 (07:30 -0400)] 
Fix #14238 by always pretty-printing visible tyvars

Before, GHC would never print visible tyvars in the absence
of `-fprint-explicit-foralls`, which led to `:kind` displaying
incorrect kinds in GHCi. The fix is simple—simply check beforehand
if any of the type variable binders are required when deciding when
to pretty-print them.

Test Plan: make test TEST=T14238

Reviewers: simonpj, goldfire, bgamari

Subscribers: thomie, carter

GHC Trac Issues: #14238

Differential Revision:

21 months agotestsuite: Accept output for T12593
Ben Gamari [Fri, 6 Apr 2018 15:10:25 +0000 (11:10 -0400)] 
testsuite: Accept output for T12593

Summary: This seems to have changed recently but the new output looks plausible.

Reviewers: RyanGlScott

Reviewed By: RyanGlScott

Subscribers: RyanGlScott, thomie, carter

Differential Revision:

21 months agobase: Add dependency on GHC.Integer in a few boot files
Ben Gamari [Fri, 6 Apr 2018 15:10:07 +0000 (11:10 -0400)] 
base: Add dependency on GHC.Integer in a few boot files

The typechecker started trying to pull in GHC.Integer.Type's interface file
due to the change made in d8d4266bf73790f65b223ec16f645763eaed8be3. It's unclear
why the patch in question changed this behavior, but these typechecker-induced
dependencies are known to be a bit fragile and adding these imports ensures
that the build order is correct.

Test Plan: Validate

Reviewers: goldfire, hvr

Subscribers: thomie, carter

GHC Trac Issues: #15004

Differential Revision:

21 months agoComments only, about exitifcation
Simon Peyton Jones [Fri, 6 Apr 2018 08:46:29 +0000 (09:46 +0100)] 
Comments only, about exitifcation

21 months agoRemove unused bdescr flag BF_FREE
Ömer Sinan Ağacan [Thu, 5 Apr 2018 15:41:02 +0000 (18:41 +0300)] 
Remove unused bdescr flag BF_FREE

Reviewers: bgamari, simonmar, erikd

Reviewed By: bgamari, simonmar

Subscribers: thomie, carter

Differential Revision:

21 months agoFix accidental breakage in T7050
Simon Peyton Jones [Tue, 3 Apr 2018 08:06:49 +0000 (09:06 +0100)] 
Fix accidental breakage in T7050

I introduced a silly bug in

  commit 9187d5fb1d3d38a4e607b0d61784c21447c8195b
  Date:   Mon Apr 2 14:55:43 2018 +0100

  Allow unpacking of single-data-con GADTs

that made test T7050 diverge.  This patch fixes it.

21 months agoFix #14991.
Richard Eisenberg [Mon, 2 Apr 2018 19:32:04 +0000 (15:32 -0400)] 
Fix #14991.

It turns out that solveEqualities really does need to use simpl_top.
I thought that solveWanteds would be enough, and no existing test
case showed up the different. #14991 shows that we need simpl_top.
Easy enough to fix.

test case: dependent/should_compile/T14991

21 months agoMark test as expected to pass.
Richard Eisenberg [Mon, 2 Apr 2018 18:43:09 +0000 (14:43 -0400)] 
Mark test as expected to pass.

This fixes the SplitWD "unexpected pass". This test was fixed
by ef443820b71f5c9c2dca362217f1a9fbab6dd736 and somehow fell
through my validation cracks.

21 months agoSpecConstr: accommodate casts in value arguments
Simon Peyton Jones [Mon, 2 Apr 2018 13:57:37 +0000 (14:57 +0100)] 
SpecConstr: accommodate casts in value arguments

This commit:

  commit fb050a330ad202c1eb43038dc18cca2a5be26f4a
  Author: Simon Peyton Jones <>
  Date:   Thu Oct 12 11:00:19 2017 +0100

  Do not bind coercion variables in SpecConstr rules

arranged to reject any SpecConstr call pattern that mentioned
a coercion in the pattern.

There was a good reason for that
-- see Note [SpecConstr and casts] --
but I didn't realise how important it was to accept patterns
that mention casts in /terms/.  Trac #14936 showed this up.

This patch just narrows the restriction to discard only
the cases where the coercion is mentioned only in types.
Fortunately that was pretty easy to do.

21 months agoAllow unpacking of single-data-con GADTs
Simon Peyton Jones [Mon, 2 Apr 2018 13:55:43 +0000 (14:55 +0100)] 
Allow unpacking of single-data-con GADTs

Trac #14978 pointed out that single-constructor GADTs should be
unpackable without trouble.

Acutally I realise that even existentials should be unpackable
too, but that's a bit more work, so it's not part of this patch.

See Note [Unpacking GADTs and existentials] in MkId.

21 months agoTest #14884, #14969
Richard Eisenberg [Mon, 2 Apr 2018 13:39:19 +0000 (09:39 -0400)] 
Test #14884, #14969

These were fixed by faec8d358985e5d0bf363bd96f23fe76c9e281f7

test cases: typecheck/should_fail/T14884

21 months agoClarify comments around dropping Derived constraints
Richard Eisenberg [Sat, 17 Mar 2018 05:57:28 +0000 (01:57 -0400)] 
Clarify comments around dropping Derived constraints

[skip ci]

21 months agoApply Note [EtaAppCo] in OptCoercion to another case
Richard Eisenberg [Sun, 11 Mar 2018 13:45:31 +0000 (09:45 -0400)] 
Apply Note [EtaAppCo] in OptCoercion to another case

21 months agoApply the interim fix for #14119 to liftCoMatch
Richard Eisenberg [Sat, 24 Feb 2018 16:49:15 +0000 (11:49 -0500)] 
Apply the interim fix for #14119 to liftCoMatch

Matching in the presence of casts can happen in liftCoMatch, too.

21 months agoTrack type variable scope more carefully.
Richard Eisenberg [Mon, 4 Sep 2017 21:27:17 +0000 (22:27 +0100)] 
Track type variable scope more carefully.

The main job of this commit is to track more accurately the scope
of tyvars introduced by user-written foralls. For example, it would
be to have something like this:

  forall a. Int -> (forall k (b :: k). Proxy '[a, b]) -> Bool

In that type, a's kind must be k, but k isn't in scope. We had a
terrible way of doing this before (not worth repeating or describing
here, but see the old tcImplicitTKBndrs and friends), but now
we have a principled approach: make an Implication when kind-checking
a forall. Doing so then hooks into the existing machinery for
preventing skolem-escape, performing floating, etc. This also means
that we bump the TcLevel whenever going into a forall.

The new behavior is done in TcHsType.scopeTyVars, but see also{Im,Ex}plicitTKBndrs, which have undergone significant
rewriting. There are several Notes near there to guide you. Of
particular interest there is that Implication constraints can now
have skolems that are out of order; this situation is reported in

A major consequence of this is a slightly tweaked process for type-
checking type declarations. The new Note [Use SigTvs in kind-checking
pass] in TcTyClsDecls lays it out.

The error message for dependent/should_fail/TypeSkolEscape has become
noticeably worse. However, this is because the code in TcErrors goes to
some length to preserve pre-8.0 error messages for kind errors. It's time
to rip off that plaster and get rid of much of the kind-error-specific
error messages. I tried this, and doing so led to a lovely error message
for TypeSkolEscape. So: I'm accepting the error message quality regression
for now, but will open up a new ticket to fix it, along with a larger
error-message improvement I've been pondering. This applies also to
dependent/should_fail/{BadTelescope2,T14066,T14066e}, polykinds/T11142.

Other minor changes:
 - isUnliftedTypeKind didn't look for tuples and sums. It does now.

 - check_type used check_arg_type on both sides of an AppTy. But the left
   side of an AppTy isn't an arg, and this was causing a bad error message.
   I've changed it to use check_type on the left-hand side.

 - Some refactoring around when we print (TYPE blah) in error messages.
   The changes decrease the times when we do so, to good effect.
   Of course, this is still all controlled by

Fixes #14066 #14749

Test cases: dependent/should_compile/{T14066a,T14749},

21 months agotestsuite: allow accepting of fine grained results [skip ci]
Tamar Christina [Sat, 31 Mar 2018 10:14:17 +0000 (11:14 +0100)] 
testsuite: allow accepting of fine grained results [skip ci]

Sometimes we need to be able to mass accept changes that are platform
specific and that can't be normalized away using our string formatters.

e.g. differences in I/O manager errors or behaviors. This allows one
to do so easier than before and less error prone.

I have updated the docs and made it clear this should only be used
when a normalizer won't work:

Test Plan: Manually tested while working on new I/O manager

Reviewers: bgamari

Subscribers: thomie, carter

Differential Revision:

21 months agoRemove MAX_PATH restrictions from RTS, I/O manager and various utilities
Tamar Christina [Thu, 29 Mar 2018 13:22:09 +0000 (14:22 +0100)] 
Remove MAX_PATH restrictions from RTS, I/O manager and various utilities

This shims out fopen and sopen so that they use modern APIs under the hood
along with namespaced paths.

This lifts the MAX_PATH restrictions from Haskell programs and makes the new
limit ~32k.

There are only some slight caveats that have been documented.

Some utilities have not been upgraded such as lndir, since all these things are
different cabal packages I have been forced to copy the source in different places
which is less than ideal. But it's the only way to keep sdist working.

Test Plan: ./validate

Reviewers: hvr, bgamari, erikd, simonmar

Reviewed By: bgamari

Subscribers: rwbarton, thomie, carter

GHC Trac Issues: #10822

Differential Revision:

21 months agoprintClosure: slightly improve MVAR printing
Ömer Sinan Ağacan [Sat, 31 Mar 2018 08:03:44 +0000 (11:03 +0300)] 
printClosure: slightly improve MVAR printing

Reviewers: bgamari, erikd, simonmar

Reviewed By: bgamari

Subscribers: thomie, carter

Differential Revision:

22 months agoUpdate a few comments regarding CAF lists
Ömer Sinan Ağacan [Fri, 30 Mar 2018 11:58:57 +0000 (14:58 +0300)] 
Update a few comments regarding CAF lists

[skip ci]

22 months agoFix syntax in -flate-specialise docs
Simon Jakobi [Thu, 29 Mar 2018 11:35:40 +0000 (13:35 +0200)] 
Fix syntax in -flate-specialise docs

22 months agoFull AppVeyor build with tests
mrkkrp [Tue, 27 Mar 2018 14:30:01 +0000 (21:30 +0700)] 
Full AppVeyor build with tests

22 months agoRename CI docker images
mrkkrp [Tue, 20 Mar 2018 07:23:07 +0000 (14:23 +0700)] 
Rename CI docker images

Now we use the images from the ‘ghcci’ account on docker hub.

22 months agoUpdate Note [Documenting optimisation flags]
Simon Jakobi [Thu, 29 Mar 2018 10:07:17 +0000 (12:07 +0200)] 
Update Note [Documenting optimisation flags]

22 months agorts: One last formatting string fix
Ben Gamari [Thu, 29 Mar 2018 14:45:21 +0000 (10:45 -0400)] 
rts: One last formatting string fix

22 months agoMore format string fixes
Ben Gamari [Tue, 27 Mar 2018 13:57:01 +0000 (09:57 -0400)] 
More format string fixes

22 months agorts: Fix profiled build after D4529
Ben Gamari [Mon, 26 Mar 2018 20:34:06 +0000 (16:34 -0400)] 
rts: Fix profiled build after D4529

22 months agotestsuite: Add test for #14965
Ben Gamari [Mon, 26 Mar 2018 19:41:39 +0000 (15:41 -0400)] 
testsuite: Add test for #14965

22 months agoCmmPipeline: add a second pass of CmmCommonBlockElim
Michal Terepeta [Mon, 26 Mar 2018 19:18:44 +0000 (15:18 -0400)] 
CmmPipeline: add a second pass of CmmCommonBlockElim

The sinking pass often gets rid of unnecessary registers
registers/assignements exposing more opportunities for CBE, so this
commit adds a second round of CBE after the sinking pass and should
fix #12915 (and some examples in #14226).

Nofib results:
* Binary size:         0.9% reduction on average
* Compile allocations: 0.7% increase on average
* Runtime:             noisy, two separate runs of nofib showed a tiny
                       reduction on average, (~0.2-0.3%), but I think
                       this is mostly noise
* Compile time:        very noisy, but generally within +/- 0.5% (one
                       run faster, one slower)

One interesting part of this change is that running CBE invalidates
results of proc-point analysis. But instead of re-doing the whole
analysis, we can use the map that CBE creates for replacing/comparing
block labels (maps a redundant label to a useful one) to update the
results of proc-point analysis. This lowers the overhead compared to the
previous experiment in #12915.

Signed-off-by: Michal Terepeta <>
Test Plan: ./validate

Reviewers: bgamari, simonmar

Reviewed By: simonmar

Subscribers: rwbarton, thomie, carter

GHC Trac Issues: #12915, #14226

Differential Revision:

22 months agoconfigure: Throw error if OS is found to be msys
Ben Gamari [Mon, 26 Mar 2018 19:18:00 +0000 (15:18 -0400)] 
configure: Throw error if OS is found to be msys

Test Plan: Try running configure on Windows with msys and mingw

Reviewers: Phyx, hvr

Reviewed By: Phyx

Subscribers: rwbarton, thomie, erikd, carter

Differential Revision:

22 months agoFix the test for #13938
Ryan Scott [Tue, 27 Mar 2018 12:52:15 +0000 (08:52 -0400)] 
Fix the test for #13938

Only half of the test files were checked in for T13938.
This commit adds the missing half.

22 months agoDeal with join points with RULES
Simon Peyton Jones [Mon, 26 Mar 2018 16:16:14 +0000 (17:16 +0100)] 
Deal with join points with RULES

Trac #13900 showed that when we have a join point that
has a RULE, we must push the continuation into the RHS
of the RULE.

See Note [Rules and unfolding for join points]

It's hard to tickle this bug, so I have not added a regression test.

22 months agoWhite space only
Simon Peyton Jones [Mon, 26 Mar 2018 15:09:45 +0000 (16:09 +0100)] 
White space only

22 months agoMinor refactor and commments
Simon Peyton Jones [Mon, 26 Mar 2018 15:07:06 +0000 (16:07 +0100)] 
Minor refactor and commments

Minor refactor and comments, following Ryan's excellent DeriveAnyClass
bug (Trac #14932)

22 months agoAvoid quadratic complexity in typeKind
Simon Peyton Jones [Mon, 26 Mar 2018 14:54:53 +0000 (15:54 +0100)] 
Avoid quadratic complexity in typeKind

I took 10 minute to fix this potential performance hole
(Trac #14263)

There are no actual bug reports against it, so no regression

22 months agoComments only
Simon Peyton Jones [Mon, 26 Mar 2018 10:26:42 +0000 (11:26 +0100)] 
Comments only

22 months agoFix performance of flattener patch (#12919)
Alexander Vieth [Mon, 26 Mar 2018 15:19:27 +0000 (11:19 -0400)] 
Fix performance of flattener patch (#12919)

This patch, authored by alexvieth and reviewed at D4451,
makes performance improvements by critically optimizing parts
of the flattener.

T3064, T5321FD, T5321Fun, T9872a, T9872b, T9872c all pass.
T9872a and T9872c show improvements beyond the -5% threshold.
T9872d fails at 10.9% increased allocations.

22 months agoFix #12919 by making the flattener homegeneous.
Richard Eisenberg [Thu, 3 Aug 2017 19:18:39 +0000 (15:18 -0400)] 
Fix #12919 by making the flattener homegeneous.

This changes a key invariant of the flattener. Previously,
flattening a type meant flattening its kind as well. But now,
flattening is always homogeneous -- that is, the kind of the
flattened type is the same as the kind of the input type.
This is achieved by various wizardry in the TcFlatten.flatten_many
function, as described in Note [flatten_many].

There are several knock-on effects, including some refactoring
in the canonicalizer to take proper advantage of the flattener's
changed behavior. In particular, the tyvar case of can_eq_nc' no
longer needs to take casts into account.

Another effect is that flattening a tyconapp might change it
into a casted tyconapp. This might happen if the result kind
of the tycon contains a variable, and that variable changes
during flattening. Because the flattener is homogeneous, it tacks
on a cast to keep the tyconapp kind the same. However, this
is problematic when flattening CFunEqCans, which need to have
an uncasted tyconapp on the LHS and must remain homogeneous.
The solution is a more involved canCFunEqCan, described in
Note [canCFunEqCan].

This patch fixes #13643 (as tested in typecheck/should_compile/T13643)
and the panic in typecheck/should_compile/T13822 (as reported in #14024).
Actually, there were two bugs in T13822: the first was just some
incorrect logic in tryFill (part of the unflattener) -- also fixed
in this patch -- and the other was the main bug fixed in this ticket.

The changes in this patch exposed a long-standing flaw in OptCoercion,
in that breaking apart an AppCo sometimes has unexpected effects on
kinds. See new Note [EtaAppCo] in OptCoercion, which explains the
problem and fix.

Also here is a reversion of the major change in
09bf135ace55ce2572bf4168124d631e386c64bb, affecting ctEvCoercion.
It turns out that making the flattener homogeneous changes the
invariants on the algorithm, making the change in that patch
no longer necessary.

This patch also fixes:
  #14038 (dependent/should_compile/T14038)
  #13910 (dependent/should_compile/T13910)
  #13938 (dependent/should_compile/T13938)
  #14441 (typecheck/should_compile/T14441)
  #14556 (dependent/should_compile/T14556)
  #14720 (dependent/should_compile/T14720)
  #14749 (typecheck/should_compile/T14749)

Sadly, this patch negatively affects performance of type-family-
heavy code. The following patch fixes these performance degradations.
However, the performance fixes are somewhat invasive and so I've
kept them as a separate patch, labeling this one as [skip ci] so
that validation doesn't fail on the performance cases.

22 months agoFix compilation stopper on macOS with -Werror
Richard Eisenberg [Mon, 26 Mar 2018 16:45:59 +0000 (12:45 -0400)] 
Fix compilation stopper on macOS with -Werror

Commit 94f02547083cf6df686ea0b95fed050184c533de
added some pragmas that allow GCC to compile GHC, but stop
macOS's clang. This adds another counter-pragma to halp
clang lumber along, too.

Fixes #14977.

22 months agoMake it evident in types that StgLam can't have empty args
Ömer Sinan Ağacan [Mon, 26 Mar 2018 20:15:32 +0000 (23:15 +0300)] 
Make it evident in types that StgLam can't have empty args

StgLam can't have empty arguments. Reflect this in types. An assertion
can now be deleted.

Reviewers: bgamari

Reviewed By: bgamari

Subscribers: rwbarton, thomie, carter

Differential Revision:

22 months agorts, base: Refactor stats.c to improve --machine-readable report
Douglas Wilson [Mon, 26 Mar 2018 19:16:11 +0000 (15:16 -0400)] 
rts, base: Refactor stats.c to improve --machine-readable report

There should be no change in the output of the '+RTS -s' (summary)
report, or
the 'RTS -t' (one-line) report.

All data shown in the summary report is now shown in the machine

All data in RTSStats is now shown in the machine readable report.

init times are added to RTSStats and added to GHC.Stats.

Example of the new output:
 [("bytes allocated", "375016384")
 ,("num_GCs", "113")
 ,("average_bytes_used", "148348")
 ,("max_bytes_used", "206552")
 ,("num_byte_usage_samples", "2")
 ,("peak_megabytes_allocated", "6")
 ,("init_cpu_seconds", "0.001642")
 ,("init_wall_seconds", "0.001027")
 ,("mut_cpu_seconds", "3.020166")
 ,("mut_wall_seconds", "0.757244")
 ,("GC_cpu_seconds", "0.037750")
 ,("GC_wall_seconds", "0.009569")
 ,("exit_cpu_seconds", "0.000890")
 ,("exit_wall_seconds", "0.002551")
 ,("total_cpu_seconds", "3.060452")
 ,("total_wall_seconds", "0.770395")
 ,("major_gcs", "2")
 ,("allocated_bytes", "375016384")
 ,("max_live_bytes", "206552")
 ,("max_large_objects_bytes", "159344")
 ,("max_compact_bytes", "0")
 ,("max_slop_bytes", "59688")
 ,("max_mem_in_use_bytes", "6291456")
 ,("cumulative_live_bytes", "296696")
 ,("copied_bytes", "541024")
 ,("par_copied_bytes", "493976")
 ,("cumulative_par_max_copied_bytes", "104104")
 ,("cumulative_par_balanced_copied_bytes", "274456")
 ,("fragmentation_bytes", "2112")
 ,("alloc_rate", "124170795")
 ,("productivity_cpu_percent", "0.986838")
 ,("productivity_wall_percent", "0.982935")
 ,("bound_task_count", "1")
 ,("sparks_count", "5836258")
 ,("sparks_converted", "237")
 ,("sparks_overflowed", "1990408")
 ,("sparks_dud ", "0")
 ,("sparks_gcd", "3455553")
 ,("sparks_fizzled", "390060")
 ,("work_balance", "0.555606")
 ,("n_capabilities", "4")
 ,("task_count", "10")
 ,("peak_worker_count", "9")
 ,("worker_count", "9")
 ,("gc_alloc_block_sync_spin", "162")
 ,("gc_alloc_block_sync_yield", "0")
 ,("gc_alloc_block_sync_spin", "162")
 ,("gc_spin_spin", "18840855")
 ,("gc_spin_yield", "10355")
 ,("mut_spin_spin", "70331392")
 ,("mut_spin_yield", "61700")
 ,("waitForGcThreads_spin", "241")
 ,("waitForGcThreads_yield", "2797")
 ,("whitehole_gc_spin", "0")
 ,("whitehole_lockClosure_spin", "0")
 ,("whitehole_lockClosure_yield", "0")
 ,("whitehole_executeMessage_spin", "0")
 ,("whitehole_threadPaused_spin", "0")
 ,("any_work", "1667")
 ,("no_work", "1662")
 ,("scav_find_work", "1026")
 ,("gen_0_collections", "111")
 ,("gen_0_par_collections", "111")
 ,("gen_0_cpu_seconds", "0.036126")
 ,("gen_0_wall_seconds", "0.036126")
 ,("gen_0_max_pause_seconds", "0.036126")
 ,("gen_0_avg_pause_seconds", "0.000081")
 ,("gen_0_sync_spin", "21")
 ,("gen_0_sync_yield", "0")
 ,("gen_1_collections", "2")
 ,("gen_1_par_collections", "1")
 ,("gen_1_cpu_seconds", "0.001624")
 ,("gen_1_wall_seconds", "0.001624")
 ,("gen_1_max_pause_seconds", "0.001624")
 ,("gen_1_avg_pause_seconds", "0.000272")
 ,("gen_1_sync_spin", "3")
 ,("gen_1_sync_yield", "0")

Test Plan: Ensure that one-line and summary reports are unchanged.

Reviewers: erikd, simonmar, hvr

Subscribers: duog, carter, thomie, rwbarton

GHC Trac Issues: #14660

Differential Revision:

22 months agocircleci: Bump Hackage index state
Ben Gamari [Mon, 26 Mar 2018 06:45:53 +0000 (02:45 -0400)] 
circleci: Bump Hackage index state

22 months agoAdd a job running on Fedora
mrkkrp [Wed, 21 Mar 2018 15:11:04 +0000 (22:11 +0700)] 
Add a job running on Fedora

22 months agoAdd unaligned bytearray access primops. Fixes #4442.
Reiner Pope [Mon, 26 Mar 2018 03:16:03 +0000 (23:16 -0400)] 
Add unaligned bytearray access primops. Fixes #4442.

Reviewers: bgamari, simonmar

Reviewed By: bgamari

Subscribers: dfeuer, rwbarton, thomie, carter

GHC Trac Issues: #4442

Differential Revision:

22 months agoAdd new debugging flag -dinline-check
Ben Gamari [Mon, 26 Mar 2018 02:17:24 +0000 (22:17 -0400)] 
Add new debugging flag -dinline-check

This flag reports a summary of the inlining decision for identifiers
prefixed by the flag's argument.

For example, `-dinline-check foo` will report why definitions whose
prefix is `foo` are inlined or not.

Previously the only way to get this information was to pass a
combination of `-dverbose-core2core` and `-ddump-inlinings`.

This combination led to a log of 12 million lines in a module of about
200 lines I recently had to apply it to. This flag provides a much more
direct way to find the occurence you care about.

Reviewers: osa1, dfeuer, bgamari

Reviewed By: bgamari

Subscribers: rwbarton, thomie, carter

Differential Revision:

22 months agobase: Fix Unicode handling of TyCon's Show instance
Ben Gamari [Mon, 26 Mar 2018 02:12:49 +0000 (22:12 -0400)] 
base: Fix Unicode handling of TyCon's Show instance

Test Plan: `make test TEST=T14925`

Reviewers: hvr, dfeuer

Reviewed By: dfeuer

Subscribers: rwbarton, thomie, carter

GHC Trac Issues: #14925

Differential Revision:

22 months agollvmGen: Pass -optlo flags last to opt
Oleg Grenrus [Mon, 26 Mar 2018 00:13:18 +0000 (20:13 -0400)] 
llvmGen: Pass -optlo flags last to opt

LLVM, like GHC, processes flags in the order that they appear.
Consequently, we need to ensure the user-provided flags appear last so
they can override flags produced by GHC. See #14821.

Test Plan: `ghc -O2 -optlo-O2 -v3 $FILE` and ensure that `opt` and `llc`
are invoked with `-O2`.

Subscribers: rwbarton, thomie, carter

GHC Trac Issues: #14821

Differential Revision:

22 months agoFix scoped type variables in TH for several constructs
HE, Tao [Sun, 25 Mar 2018 19:34:45 +0000 (15:34 -0400)] 
Fix scoped type variables in TH for several constructs

Namely class methods, default signatures and pattern synonyms.

When scoped type variables occur inside class default methods,
default signatures and pattern synonyms, avoid re-create explicit
type variables when represent the type signatures.

This patch should fix Trac#14885.

Signed-off-by: HE, Tao <>
Test Plan: make test TEST="T14885a T14885b T14885c"

Reviewers: goldfire, bgamari, simonpj, RyanGlScott

Reviewed By: simonpj, RyanGlScott

Subscribers: rwbarton, thomie, carter

GHC Trac Issues: #14885

Differential Revision: