ghc.git
2 years agoUNREG: use __builtin___clear_cache where available
Sergei Trofimovich [Wed, 21 Jun 2017 20:17:51 +0000 (21:17 +0100)] 
UNREG: use __builtin___clear_cache where available

Noticed when was building UNREG ghc with -optc{-Wall,-Werror}:

  rts/sm/Storage.c:1359:3: error:
     error: implicit declaration of function '__clear_cache'
       [-Werror=implicit-function-declaration]
       __clear_cache((void*)begin, (void*)end);
       ^~~~~~~~~~~~~
       |
  1359 |   __clear_cache((void*)begin, (void*)end);
       |   ^

Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
2 years agoFix note reference [ci skip]
Gabor Greif [Tue, 20 Jun 2017 10:00:30 +0000 (12:00 +0200)] 
Fix note reference [ci skip]

2 years agoImprove comments on AbsBinds
Simon Peyton Jones [Mon, 19 Jun 2017 10:50:37 +0000 (11:50 +0100)] 
Improve comments on AbsBinds

See Trac #13827.

2 years agoAdd missing -Wdeprecations flag to the users guide
erdeszt [Sat, 17 Jun 2017 11:47:10 +0000 (13:47 +0200)] 
Add missing -Wdeprecations flag to the users guide

2 years agoReword documentation region overlap documentation for copying mutable arrays
Andrew Martin [Sat, 17 Jun 2017 21:35:32 +0000 (17:35 -0400)] 
Reword documentation region overlap documentation for copying mutable arrays

2 years agocmm/CmmLayoutStack: avoid generating unnecessary reloads
Michal Terepeta [Sun, 18 Jun 2017 20:51:08 +0000 (16:51 -0400)] 
cmm/CmmLayoutStack: avoid generating unnecessary reloads

This tries to be more precise when generating reloads of local
registers in proc points. Previously we'd reload all local registers
that were live. But we used liveness information that assumed local
registers survive native calls. For the purpose of reloading registers
this is an overapproximation and might lead to generating huge amounts
of unnecessary reloads (in case there's another proc point before the
register is used).

This change takes the approach of moving the generation of reloads to
a second pass over the Cmm, which allows to recompute the liveness and
can use the knowledge that local registers do *not* survive calls.
This leads to generating only useful reloads. For an extreme example
where this helps a lot please see T3294. This should also fix #7198

Finally, this re-introduces the code to do Cmm rewriting using in
`Dataflow` module (with the difference that we know operate on a whole
block at a time).

Signed-off-by: Michal Terepeta <michal.terepeta@gmail.com>
Reviewers: austin, bgamari, simonmar

Reviewed By: simonmar

Subscribers: kavon, rwbarton, thomie

GHC Trac Issues: #7198

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

2 years agoconfigure: Look for objdump on OpenBSD and AIX
Ben Gamari [Sun, 18 Jun 2017 20:50:51 +0000 (16:50 -0400)] 
configure: Look for objdump on OpenBSD and AIX

deriveConstants requires objdump for both of these operating systems, in
addition to Windows. See #13812.

Test Plan: Validate on OpenBSD and AIX

Reviewers: hvr, austin

Reviewed By: hvr

Subscribers: rwbarton, thomie, erikd

GHC Trac Issues: #13812

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

2 years agoAdd test cases for #13821
Douglas Wilson [Sun, 18 Jun 2017 20:50:38 +0000 (16:50 -0400)] 
Add test cases for #13821

Reviewers: austin, bgamari

Reviewed By: bgamari

Subscribers: rwbarton, thomie

GHC Trac Issues: #13821

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

2 years agoDon't expose fingerprints from Type.Reflection
David Feuer [Sun, 18 Jun 2017 20:50:25 +0000 (16:50 -0400)] 
Don't expose fingerprints from Type.Reflection

The `Fingerprint` type is not exported from any "public"
module. It therefore seems quite strange that `Type.Reflection`
exports functions for extracting fingerprints. Remove those
exports. If fingerprints are eventually considered public,
this can be reconsidered.

Reviewers: austin, hvr, bgamari

Reviewed By: bgamari

Subscribers: rwbarton, thomie

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

2 years agoFix GCC 7 warning in the RTS
Sylvain Henry [Sun, 18 Jun 2017 20:50:09 +0000 (16:50 -0400)] 
Fix GCC 7 warning in the RTS

Test Plan: validate

Reviewers: austin, bgamari, erikd, simonmar

Reviewed By: bgamari, simonmar

Subscribers: rwbarton, thomie

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

2 years agoAdd T9630
David Feuer [Sun, 18 Jun 2017 20:49:14 +0000 (16:49 -0400)] 
Add T9630

This is not the most precise test, unfortunately, but it does
demonstrate a modest improvement in compiler residency as a
result of the specializer don't-loop patch. A rather less
realistic variation on this has somewhat more dramatic effects.

Reviewers: austin, bgamari

Reviewed By: bgamari

Subscribers: rwbarton, thomie

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

2 years agoAdd fixity declaration for :~~:
Ryan Scott [Sun, 18 Jun 2017 20:49:02 +0000 (16:49 -0400)] 
Add fixity declaration for :~~:

We have one for `(:~:)`, but not for `(:~~:)`! Let's fix this
oversight.

Reviewers: bgamari, austin, hvr

Reviewed By: bgamari

Subscribers: rwbarton, thomie

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

2 years agotestsuite: Add testcase for #13822
Ben Gamari [Sun, 18 Jun 2017 20:48:31 +0000 (16:48 -0400)] 
testsuite: Add testcase for #13822

Reviewers: austin

Subscribers: rwbarton, thomie

GHC Trac Issues: #13822

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

2 years agorts: A bit of cleanup around the eventlog
Ben Gamari [Fri, 16 Jun 2017 19:41:18 +0000 (15:41 -0400)] 
rts: A bit of cleanup around the eventlog

2 years agorts: Ensure that new capability count is > 0
Ben Gamari [Fri, 16 Jun 2017 19:23:07 +0000 (15:23 -0400)] 
rts: Ensure that new capability count is > 0

The Haskell wrapper already checks this but we should also check it in the RTS
to catch non-Haskell callers. See #13832.

2 years agoTypofix in Data.Type.Equality comments
Ryan Scott [Sun, 18 Jun 2017 18:30:38 +0000 (14:30 -0400)] 
Typofix in Data.Type.Equality comments

2 years agoLook through type synonyms in existential contexts when deriving Functor
Ryan Scott [Sun, 18 Jun 2017 18:23:43 +0000 (14:23 -0400)] 
Look through type synonyms in existential contexts when deriving Functor

Summary:
This amounts to using `exactTyCoVarsOfType` instead of
`tyCoVarsOfType` in the right place. I also fixed a similar issue for
`-XDatatypeContexts` while I was in town (but couldn't be bothered to add a
test for it).

Test Plan: make test TEST=T13813

Reviewers: austin, bgamari, simonpj

Reviewed By: simonpj

Subscribers: simonpj, rwbarton, thomie

GHC Trac Issues: #13813

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

2 years agoFix out-of-date comments in TyCoRep
Ryan Scott [Sun, 18 Jun 2017 16:00:06 +0000 (12:00 -0400)] 
Fix out-of-date comments in TyCoRep

s/tyVarsOfType/tyCoFVsOfType/g

2 years agoRemove the Windows GCC driver.
Tamar Christina [Sat, 17 Jun 2017 00:05:52 +0000 (01:05 +0100)] 
Remove the Windows GCC driver.

Summary:
This patch drops the GCC driver and instead moves
the only remaining path that we need to keep for
backwards compatibility to the settings file.

It also generalizes the code that expands `$TopDir`
so it can expand it within any location in the string
and also changes it so `$TopDir` is expanded only
after the words call because `$TopDir` can contains
spaces which would be horribly broken.

Test Plan: ./validate

Reviewers: austin, hvr, bgamari

Reviewed By: bgamari

Subscribers: rwbarton, thomie, erikd

GHC Trac Issues: #13709

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

2 years agoProvide way to build using existing C compiler on Windows.
Tamar Christina [Sun, 11 Jun 2017 10:40:11 +0000 (11:40 +0100)] 
Provide way to build using existing C compiler on Windows.

Summary:
There are various distros that build GHC using their own C compilers
such as MSYS2. Currently they have to patch the build scripts everytime.

This patch provides the configure argument `--enable-distro-toolchain`
which allows one to build using any C compiler on the path.

This is also useful for testing new versions of GCC.

Test Plan:
./configure --enable-distro-toolchain && make - && make THREADS=9 test
./validate

Reviewers: austin, hvr, bgamari

Reviewed By: bgamari

Subscribers: rwbarton, thomie, erikd, #ghc_windows_task_force

GHC Trac Issues: #13792

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

2 years agoFix the treatment of 'closed' definitions
Simon Peyton Jones [Fri, 16 Jun 2017 21:16:14 +0000 (22:16 +0100)] 
Fix the treatment of 'closed' definitions

The IdBindingInfo field of ATcId serves two purposes

- to control generalisation when we have -XMonoLocalBinds
- to check for floatability when dealing with (static e)

These are related, but not the same, and they'd becomme confused.
Trac #13804 showed this up via an example like this:

  f periph = let sr :: forall a. [a] -> [a]
                 sr = if periph then reverse else id

                 sr2 = sr
                 -- The question: is sr2 generalised?
                 -- It should be, because sr has a type sig
                 -- even though it has periph free
             in
             (sr2 [True], sr2 "c")

Here sr2 should be generalised, despite the free var 'periph'
in 'sr' because 'sr' has a closed type signature.

I documented all this very carefully this time, in TcRnTypes:
  Note [Meaning of IdBindingInfo]
  Note [Bindings with closed types: ClosedTypeId]

2 years agobase: Validate input in setNumCapabilities
Ben Gamari [Fri, 16 Jun 2017 19:18:48 +0000 (15:18 -0400)] 
base: Validate input in setNumCapabilities

Test Plan: validate

Reviewers: austin, hvr, erikd, simonmar

Subscribers: rwbarton, thomie

GHC Trac Issues: #13832

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

2 years agoAdd mapMG to allow making ModuleGraph abstract
Bartosz Nitka [Wed, 14 Jun 2017 15:51:43 +0000 (08:51 -0700)] 
Add mapMG to allow making ModuleGraph abstract

Currently GHC exposes the internal details of `ModuleGraph`
which inhibits making `ModuleGraph` support faster lookups.

Haddock relies on the internal representation by using `map`
on `ModuleGraph`. See also
https://github.com/haskell/haddock/issues/635

Adding `mapMG` should allow us to make `ModuleGraph` abstract.

Test Plan: ./validate

Reviewers: simonmar, austin, bgamari, alexbiehl

Reviewed By: bgamari, alexbiehl

Subscribers: alexbiehl, rwbarton, thomie

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

2 years agoFix Haddock markup
Gabor Greif [Wed, 14 Jun 2017 10:14:54 +0000 (12:14 +0200)] 
Fix Haddock markup

2 years agoTypos [ci skip]
Gabor Greif [Fri, 9 Jun 2017 13:55:41 +0000 (15:55 +0200)] 
Typos [ci skip]

2 years agoMake -w less aggressive (Trac #12056)
Sean Gillespie [Mon, 12 Jun 2017 21:04:05 +0000 (17:04 -0400)] 
Make -w less aggressive (Trac #12056)

Previously -w combined with -Wunrecognised-warning-flags would not
report unrecognized flags.

Reviewers: austin, bgamari, dfeuer

Reviewed By: bgamari

Subscribers: dfeuer, rwbarton, thomie

GHC Trac Issues: #12056

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

2 years agoStop forcing everything in coreBindsSize
David Feuer [Mon, 12 Jun 2017 21:03:52 +0000 (17:03 -0400)] 
Stop forcing everything in coreBindsSize

`coreBindsSize` forced a ton of structure to stop space leaks.
Reid Barton has done some work recently to try to stop the leaks
at their source instead. Memory residency remains well below the
numbers Herbert posted on #13426 originally, but in some cases
a ways above the ones from 8.0. I need to figure out how to get
the numbers matched up to individual modules and do some
profiling.

Relates to #13426

Reviewers: austin, bgamari

Reviewed By: bgamari

Subscribers: rwbarton, thomie

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

2 years agoSupport signatures at the kind level in Template Haskell
Ryan Scott [Mon, 12 Jun 2017 21:03:32 +0000 (17:03 -0400)] 
Support signatures at the kind level in Template Haskell

`repNonArrowKind` was missing a case for `HsKindSig`, which this
commit adds. Fixes #13781.

Test Plan: make test TEST=T13781

Reviewers: goldfire, austin, bgamari

Reviewed By: goldfire

Subscribers: rwbarton, thomie

GHC Trac Issues: #13781

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

2 years agoAdd perf test for #12545
Ryan Scott [Mon, 12 Jun 2017 21:03:13 +0000 (17:03 -0400)] 
Add perf test for #12545

Commit 2b74bd9d8b4c6b20f3e8d9ada12e7db645cc3c19 did wonders for the
program reported in #12545. Let's add a perf test for it to make sure it
stays fast.

Test Plan: make test TEST=T12545

Reviewers: austin, bgamari

Reviewed By: bgamari

Subscribers: rwbarton, thomie

GHC Trac Issues: #12545

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

2 years agoFix #13807 - foreign import nondeterminism
Bartosz Nitka [Mon, 12 Jun 2017 21:02:44 +0000 (17:02 -0400)] 
Fix #13807 - foreign import nondeterminism

The problem was that the generated label included
a freshly assigned Unique value.

Test Plan:
Added a new test and looked at the generated stub:

```
 #include "HsFFI.h"
 #ifdef __cplusplus
 extern "C" {
 #endif
 extern HsInt zdmainzdAzdAzuzzlzzgzzg(StgStablePtr the_stableptr);
 extern HsInt zdmainzdAzdAzumkStringWriter(StgStablePtr the_stableptr);
 #ifdef __cplusplus
 }
 #endif
```

./validate

Reviewers: simonmar, austin, bgamari

Reviewed By: simonmar

Subscribers: rwbarton, thomie

GHC Trac Issues: #13807

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

2 years agoImprove getNameToInstancesIndex
Douglas Wilson [Mon, 12 Jun 2017 21:02:01 +0000 (17:02 -0400)] 
Improve getNameToInstancesIndex

Put it in a GhcMonad.
Stop accidentally reversing the list of instances.
Add a comment noting the code is mostly copied from tcRnGetInfo.

Reviewers: austin, bgamari

Reviewed By: bgamari

Subscribers: mpickering, rwbarton, thomie

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

2 years agousers-guide: Document multi-line DEPRECATED pragmas
Ben Gamari [Mon, 12 Jun 2017 21:00:55 +0000 (17:00 -0400)] 
users-guide: Document multi-line DEPRECATED pragmas

Fixes #13791.

[skip ci]

Test Plan: Read it

Reviewers: austin

Subscribers: rwbarton, thomie

GHC Trac Issues: #13791

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

2 years agoFix a bug in -foptimal-applicative-do
Simon Marlow [Mon, 12 Jun 2017 21:00:39 +0000 (17:00 -0400)] 
Fix a bug in -foptimal-applicative-do

Test Plan: validate

Reviewers: bgamari, niteria, austin, erikd

Reviewed By: bgamari

Subscribers: rwbarton, thomie

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

2 years agolinker: Fix cast-to-uint64_t
Ben Gamari [Mon, 12 Jun 2017 13:31:29 +0000 (09:31 -0400)] 
linker: Fix cast-to-uint64_t

This broke on 32-bit platforms.

2 years agoCorrect optimization flags documentation
Santiago Munin [Thu, 8 Jun 2017 19:03:58 +0000 (15:03 -0400)] 
Correct optimization flags documentation

In a previous change (commit 4fd6207ec6960c429e6a1bcbe0282f625010f52a),
the users guide was moved from XML to the RST format. This process
introduced a typo: "No -O*-type option specified:" was changed to "-O*"
(which is not correct). This change fixes it.

See result in: https://prnt.sc/fh332n

Fixes ticket #13756.

Reviewers: austin, bgamari

Reviewed By: bgamari

Subscribers: rwbarton, thomie

GHC Trac Issues: #13756

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

2 years agoDon't pass -dcore-lint to haddock in Haddock.mk
Douglas Wilson [Thu, 8 Jun 2017 19:03:44 +0000 (15:03 -0400)] 
Don't pass -dcore-lint to haddock in Haddock.mk

This fixes the regressions in the haddock performance tests introduced
in c9eb4385aad248118650725b7b699bb97ee21c0d.

Reviewers: austin, bgamari

Reviewed By: bgamari

Subscribers: rwbarton, thomie

GHC Trac Issues: #13789

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

2 years agoAdd tcRnGetNameToInstancesIndex
Douglas Wilson [Thu, 8 Jun 2017 19:02:01 +0000 (15:02 -0400)] 
Add tcRnGetNameToInstancesIndex

This function in tcRnDriver, retrieves an index by name of all Class and
Family instances in the current environment.

This is to be used by haddock which currently looks up instances for
each name, which looks at every instance for every lookup.

Using this function instead of tcRnGetInfo, the haddock.base performance
test improves by 10%

Reviewers: austin, bgamari

Reviewed By: bgamari

Subscribers: alexbiehl, rwbarton, thomie

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

2 years agoRefactor temp files cleanup
Douglas Wilson [Thu, 8 Jun 2017 18:59:49 +0000 (14:59 -0400)] 
Refactor temp files cleanup

Remove filesToNotIntermediateClean from DynFlags, create a data type
FilesToClean, and change filesToClean in DynFlags to be a FilesToClean.

Modify SysTools.newTempName and the Temporary constructor of
PipelineMonad.PipelineOutput to take a TempFileLifetime, which specifies
whether a temp file should live until the end of GhcMonad.withSession,
or until the next time cleanIntermediateTempFiles is called.

These changes allow the cleaning of intermediate files in GhcMake to be
much more efficient.

HscTypes.hptObjs is removed as it is no longer used.

A new performance test T13701 is added, which passes both with and
without -keep-tmp-files.  The test fails by 25% without the patch, and
passes when -keep-tmp-files is added.

Note that there are still at two hotspots caused by
algorithms quadratic in the number of modules, however neither of them
allocate. They are:

* DriverPipeline.compileOne'.needsLinker
* GhcMake.getModLoop

DriverPipeline.compileOne'.needsLinker is changed slightly to improve
the situation.

I don't like adding these Types to DynFlags, but they need to be seen by
Dynflags, SysTools and PipelineMonad. The alternative seems to be to
create a new module.

Reviewers: austin, hvr, bgamari, dfeuer, niteria, simonmar, erikd

Reviewed By: simonmar

Subscribers: rwbarton, thomie

GHC Trac Issues: #13701

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

2 years agoCheck target libtool
Moritz Angermann [Thu, 8 Jun 2017 18:59:20 +0000 (14:59 -0400)] 
Check target libtool

This will qualify the libtool with the target, e.g.
arch-vendor-os-libtool, instead of simply using libtool.

Reviewers: austin, hvr, bgamari

Reviewed By: bgamari

Subscribers: Ericson2314, ryantrinkle, rwbarton, thomie, erikd

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

2 years ago[linker] fix armv7 & add aarch64
Moritz Angermann [Thu, 8 Jun 2017 18:58:38 +0000 (14:58 -0400)] 
[linker] fix armv7 & add aarch64

This adds Global Offset Table logic, as well as PLT like logic for armv7
and aarch64; which replaces the preexisting symbolExtras logic, by
placing the PLT tables next to the separtely loaded sections. This is
needed to ensure that the symbol stubs are in range.

Reviewers: bgamari, austin, erikd, simonmar

Reviewed By: bgamari

Subscribers: Ericson2314, ryantrinkle, rwbarton, thomie

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

2 years agotestsuite: Add performance test, Naperian
Ben Gamari [Thu, 8 Jun 2017 18:53:48 +0000 (14:53 -0400)] 
testsuite: Add performance test, Naperian

This is a module contributed by Austin Seipp which is fairly minimal
(albeit requiring vector) but is still representative of contemporary
Haskell.

Reviewers: austin

Subscribers: dfeuer, rwbarton, thomie

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

2 years agoBump nofib submodule
Ben Gamari [Thu, 8 Jun 2017 18:49:02 +0000 (14:49 -0400)] 
Bump nofib submodule

2 years agoRevert "Make LLVM output robust to -dead_strip on mach-o platforms"
Ben Gamari [Wed, 7 Jun 2017 13:02:18 +0000 (09:02 -0400)] 
Revert "Make LLVM output robust to -dead_strip on mach-o platforms"

This reverts commit 667abf17dced8b4a4cd2dc6a291a6f244ffa031f.

2 years agoLinker: Fix whitespace
Ben Gamari [Mon, 5 Jun 2017 23:43:02 +0000 (19:43 -0400)] 
Linker: Fix whitespace

[skip ci]

2 years agoFix a lost-wakeup bug in BLACKHOLE handling (#13751)
Simon Marlow [Sat, 3 Jun 2017 19:26:13 +0000 (20:26 +0100)] 
Fix a lost-wakeup bug in BLACKHOLE handling (#13751)

Summary:
The problem occurred when
* Threads A & B evaluate the same thunk
* Thread A context-switches, so the thunk gets blackholed
* Thread C enters the blackhole, creates a BLOCKING_QUEUE attached to
  the blackhole and thread A's `tso->bq` queue
* Thread B updates the blackhole with a value, overwriting the BLOCKING_QUEUE
* We GC, replacing A's update frame with stg_enter_checkbh
* Throw an exception in A, which ignores the stg_enter_checkbh frame

Now we have C blocked on A's tso->bq queue, but we forgot to check the
queue because the stg_enter_checkbh frame has been thrown away by the
exception.

The solution and alternative designs are discussed in Note [upd-black-hole].

This also exposed a bug in the interpreter, whereby we were sometimes
context-switching without calling `threadPaused()`.  I've fixed this
and added some Notes.

Test Plan:
* `cd testsuite/tests/concurrent && make slow`
* validate

Reviewers: niteria, bgamari, austin, erikd

Reviewed By: erikd

Subscribers: rwbarton, thomie

GHC Trac Issues: #13751

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

2 years agoFix slash escaping in cwrapper.c
Tamar Christina [Tue, 6 Jun 2017 15:16:32 +0000 (16:16 +0100)] 
Fix slash escaping in cwrapper.c

Summary: Escape `\` in paths on Windows in `cwapper.c` when we re-output the paths.

Test Plan: ./validate

Reviewers: austin, bgamari

Reviewed By: bgamari

Subscribers: rwbarton, thomie

GHC Trac Issues: #13666

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

2 years agoTest Trac #13750
Simon Peyton Jones [Wed, 7 Jun 2017 14:15:37 +0000 (15:15 +0100)] 
Test Trac #13750

2 years agoStop the specialiser generating loopy code
Simon Peyton Jones [Wed, 7 Jun 2017 11:03:51 +0000 (12:03 +0100)] 
Stop the specialiser generating loopy code

This patch fixes a bad bug in the specialiser, which showed up as
Trac #13429.  When specialising an imported DFun, the specialiser could
generate a recusive loop where none existed in the original program.

It's all rather tricky, and I've documented it at some length in
   Note [Avoiding loops]

We'd encoutered exactly this before (Trac #3591) but I had failed
to realise that the very same thing could happen for /imported/
DFuns.

I did quite a bit of refactoring.

The compiler seems to get a tiny bit faster on
   deriving/perf/T10858
but almost all the gain had occurred before now; this
patch just pushed it over the line.

2 years agoSpelling typos
Simon Peyton Jones [Wed, 7 Jun 2017 07:58:52 +0000 (08:58 +0100)] 
Spelling typos

2 years agoTypo in output of remote slave startup [merge cand]
Gabor Greif [Tue, 6 Jun 2017 10:03:00 +0000 (12:03 +0200)] 
Typo in output of remote slave startup [merge cand]

The output is not being checked in the test suite.
However other tools may check it for obtaining the status
of the remote slave.

So I'd suggest to merge this to 8.2 branch, in order to not
fragment the tooling's checks.

2 years agoUdate hsSyn AST to use Trees that Grow
Alan Zimmerman [Fri, 19 May 2017 12:56:09 +0000 (14:56 +0200)] 
Udate hsSyn AST to use Trees that Grow

Summary:
See https://ghc.haskell.org/trac/ghc/wiki/ImplementingTreesThatGrow

This commit prepares the ground for a full extensible AST, by replacing the type
parameter for the hsSyn data types with a set of indices into type families,

    data GhcPs -- ^ Index for GHC parser output
    data GhcRn -- ^ Index for GHC renamer output
    data GhcTc -- ^ Index for GHC typechecker output

These are now used instead of `RdrName`, `Name` and `Id`/`TcId`/`Var`

Where the original name type is required in a polymorphic context, this is
accessible via the IdP type family, defined as

    type family IdP p
    type instance IdP GhcPs = RdrName
    type instance IdP GhcRn = Name
    type instance IdP GhcTc = Id

These types are declared in the new 'hsSyn/HsExtension.hs' module.

To gain a better understanding of the extension mechanism, it has been applied
to `HsLit` only, also replacing the `SourceText` fields in them with extension
types.

To preserve extension generality, a type class is introduced to capture the
`SourceText` interface, which must be honoured by all of the extension points
which originally had a `SourceText`.  The class is defined as

    class HasSourceText a where
      -- Provide setters to mimic existing constructors
      noSourceText  :: a
      sourceText    :: String -> a

      setSourceText :: SourceText -> a
      getSourceText :: a -> SourceText

And the constraint is captured in `SourceTextX`, which is a constraint type
listing all the extension points that make use of the class.

Updating Haddock submodule to match.

Test Plan: ./validate

Reviewers: simonpj, shayan-najd, goldfire, austin, bgamari

Subscribers: rwbarton, thomie, mpickering

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

2 years agoDesugar modules compiled with -fno-code
doug [Mon, 5 Jun 2017 19:09:50 +0000 (15:09 -0400)] 
Desugar modules compiled with -fno-code

Previously modules with hscTarget == HscNothing were not desugared.
This patch changes behavior so that all modules HsSrcFile Modules except GHC.Prim
are desugared. Modules with hscTarget == HscNothing are not simplified.

Warnings and errors produced by the desugarer will now be produced when
compiling with -fno-code.

HscMain.finishTypecheckingOnly is removed, HscMain.hscIncrementalCompile is
simplified a bit, and HscMain.finish takes in the removed logic. I think this
is easier to follow.

Updates haddock submodule.

Tests T8101, T8101b, T10600 are no longer expect_broken.

Reviewers: ezyang, austin, bgamari

Subscribers: rwbarton, thomie

GHC Trac Issues: #10600

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

2 years agoMake the MR warning more accurage
Simon Peyton Jones [Mon, 5 Jun 2017 10:16:16 +0000 (11:16 +0100)] 
Make the MR warning more accurage

Trac #13785 showed that we were emitting monomorphism warnings
when we shouldn't.  The fix turned out to be simple.

In fact test T10935 then turned out to be another example of
the over-noisy warning so I changed the test slightly.

2 years agoTest Trac #13784
Simon Peyton Jones [Mon, 5 Jun 2017 08:43:05 +0000 (09:43 +0100)] 
Test Trac #13784

2 years agoghc.mk: Ensure that ghc-pkg path is quoted
Ben Gamari [Fri, 2 Jun 2017 17:15:52 +0000 (13:15 -0400)] 
ghc.mk: Ensure that ghc-pkg path is quoted

Otherwise this will fail if the prefix path contains spaces. Thanks to
marinelli for pointing this out.

Test Plan: Validate

Reviewers: austin

Subscribers: rwbarton, thomie

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

2 years agoUse lengthIs and friends in more places
Ryan Scott [Fri, 2 Jun 2017 17:12:11 +0000 (13:12 -0400)] 
Use lengthIs and friends in more places

While investigating #12545, I discovered several places in the code
that performed length-checks like so:

```
length ts == 4
```

This is not ideal, since the length of `ts` could be much longer than 4,
and we'd be doing way more work than necessary! There are already a slew
of helper functions in `Util` such as `lengthIs` that are designed to do
this efficiently, so I found every place where they ought to be used and
did just that. I also defined a couple more utility functions for list
length that were common patterns (e.g., `ltLength`).

Test Plan: ./validate

Reviewers: austin, hvr, goldfire, bgamari, simonmar

Reviewed By: bgamari, simonmar

Subscribers: goldfire, rwbarton, thomie

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

2 years agoGHC.Stats cleanup
Ryan Scott [Fri, 2 Jun 2017 15:52:41 +0000 (11:52 -0400)] 
GHC.Stats cleanup

This does two things:

* The `RtsTime` type wasn't exported, but it is used as the type of
  several record fields. Let's export it and give it some documentation.
* Neither `RTSStats` nor `GCDetails` have `Read` or `Show` instances,
  but `GCStats` does! Let's fix this discrepancy.

Reviewers: austin, hvr, bgamari

Reviewed By: bgamari

Subscribers: goldfire, rwbarton, thomie

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

2 years agoMake GHCi work when RebindableSyntax is enabled
Ryan Scott [Fri, 2 Jun 2017 15:49:47 +0000 (11:49 -0400)] 
Make GHCi work when RebindableSyntax is enabled

Previously, we were running some blocks of code at the start of every
GHCi sessions which use do-notation, something which doesn't work well
if you start GHCi with the `-XRebindableSyntax` flag on. This tweaks the
code to avoid the use of do-notation so that `-XRebindableSyntax` won't
reject it.

Test Plan: make test TEST=T13385

Reviewers: austin, bgamari

Reviewed By: bgamari

Subscribers: rwbarton, thomie

GHC Trac Issues: #13385

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

2 years agoRemove references to static flags in flag reference
Ryan Scott [Fri, 2 Jun 2017 15:48:57 +0000 (11:48 -0400)] 
Remove references to static flags in flag reference

A follow-up to #8440 (Ditch static flags). There are still some
lingering references to static flags in the flag reference, so let's
modify those references accordingly.

Test Plan: Build the documentation

Reviewers: bgamari, austin

Reviewed By: bgamari

Subscribers: rwbarton, thomie

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

2 years agoAdd a flag reference entry for -XTypeInType
Ryan Scott [Fri, 2 Jun 2017 15:48:44 +0000 (11:48 -0400)] 
Add a flag reference entry for -XTypeInType

Test Plan: Read it

Reviewers: bgamari, austin

Reviewed By: bgamari

Subscribers: rwbarton, thomie

GHC Trac Issues: #13762

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

2 years agoBetter import library support for Windows
Tamar Christina [Fri, 2 Jun 2017 15:47:57 +0000 (11:47 -0400)] 
Better import library support for Windows

The import library support added for 7.10.3 was only a partial one.
This support was predicated on using file extensions to determine
whether or not a library was an import library. It also couldn't handle
libraries with multiple dll pointers.

This is a rewrite of that patch and fully integrating it into the normal
archive parsing and loading routines. This solves a host of issues,
among others allowing us to finally use `-lgcc_s`.

This also fixes a problem with our previous implementation, where we
just loaded the DLL and moved on. Doing this had the potential of using
the wrong symbol at resolve time. Say a DLL already loaded (A.dll) has
symbol a exported (dependency of another dll perhaps).

We find an import library `B.lib` explicitly defining an export of `a`.
we load `B.dll` but this gets put after `A.dll`, at resolve time we
would use the value from `A` instead of `B` which is what we wanted.

Test Plan: ./valide and make test TEST=13606

Reviewers: austin, bgamari, erikd, simonmar

Reviewed By: bgamari

Subscribers: rwbarton, RyanGlScott, thomie, #ghc_windows_task_force

GHC Trac Issues: #13606, #12499, #12498

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

2 years agoaclocal: Fix regression in linker detection
Ben Gamari [Fri, 2 Jun 2017 13:36:01 +0000 (09:36 -0400)] 
aclocal: Fix regression in linker detection

5ddb307edf15c4d86e5c35c4063ec967424e19f2 regressed autoconf's ability to
find the linker due to a silly variable interpolation issue, causing
segmentation faults on AArch64.

2 years ago[iserv] move forkIO
Moritz Angermann [Sat, 27 May 2017 14:26:44 +0000 (10:26 -0400)] 
[iserv] move forkIO

This moves the forkIO into the `startSlave` function from the
`startSlave'` function, such that this allows consumers to call
`forkSlave'` if they want the blocking behaviour.

Reviewers: bgamari, austin

Reviewed By: bgamari

Subscribers: Ericson2314, ryantrinkle, rwbarton, thomie

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

2 years agoA few typos [ci skip]
Gabor Greif [Fri, 2 Jun 2017 09:02:13 +0000 (11:02 +0200)] 
A few typos [ci skip]

2 years agoaclocal.m4: add support for versioned darwin triplets
Sergei Trofimovich [Thu, 1 Jun 2017 21:30:05 +0000 (22:30 +0100)] 
aclocal.m4: add support for versioned darwin triplets

The change adds support for 'darwin*' OS:
    $ ./configure --target=aarch64-apple-darwin14

Reported-by: jp_rider
Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
2 years agoFaster checkFamInstConsistency
Bartosz Nitka [Fri, 19 May 2017 15:08:01 +0000 (08:08 -0700)] 
Faster checkFamInstConsistency

This implements the idea from
https://ghc.haskell.org/trac/ghc/ticket/13092#comment:14.

It's explained in Note [Checking family instance optimization]
in more detail.

This improves the test case T13719 tenfold and
cuts down the compile time on `:load` in `ghci` on our
internal code base by half.

Test Plan: ./validate

Reviewers: simonpj, simonmar, rwbarton, austin, bgamari

Reviewed By: simonpj

Subscribers: thomie

GHC Trac Issues: #13719

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

2 years agoEfficient checks for stable modules
Bartosz Nitka [Tue, 30 May 2017 11:48:57 +0000 (04:48 -0700)] 
Efficient checks for stable modules

With a large number of modules in a home package
(in my case 5000) the costs of linear lookups becomes significant.
This changes them to efficient IntMap lookups.

It reduces the cost of `:reload` on unchanged source
from 5.77s to 1.62s on my test case.

I could go further and make `Linker.unload` also take a set,
but I prefer to concentrate on one thing at a time.

Test Plan: harbormaster

Reviewers: simonmar, austin, bgamari

Reviewed By: bgamari

Subscribers: rwbarton, thomie

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

2 years agoModern type signature style in UniqSet
Bartosz Nitka [Mon, 29 May 2017 22:30:06 +0000 (15:30 -0700)] 
Modern type signature style in UniqSet

2 years agoRemove HsContext from ppr_mono_ty, and remove ppParendHsType
Alan Zimmerman [Fri, 26 May 2017 15:06:11 +0000 (17:06 +0200)] 
Remove HsContext from ppr_mono_ty, and remove ppParendHsType

This is a cleanup after Trac #13238, as the context was no longer being used.

2 years agoFix test output after 'Some tidying up of type pretty-printing'
Bartosz Nitka [Sat, 27 May 2017 14:42:26 +0000 (07:42 -0700)] 
Fix test output after 'Some tidying up of type pretty-printing'

Most are cosmetic. There's an interesting change in T7861,
but the error is still accurate.

2 years agoFix build after 'Shrink a couple of hs-boot files'
Bartosz Nitka [Sat, 27 May 2017 13:06:16 +0000 (06:06 -0700)] 
Fix build after 'Shrink a couple of hs-boot files'

2 years agotemplate-haskell: Properly escape StrTyLit doc
Eric Mertens [Thu, 25 May 2017 23:44:18 +0000 (16:44 -0700)] 
template-haskell: Properly escape StrTyLit doc

2 years agouser-guide: Add since annotation for -Wcpp-undef
Erik de Castro Lopo [Sat, 27 May 2017 04:54:42 +0000 (14:54 +1000)] 
user-guide: Add since annotation for -Wcpp-undef

Reviewers: hvr, bgamari, austin

Reviewed By: hvr

Subscribers: rwbarton, thomie

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

2 years agoAdd regression test for #12648
Ryan Scott [Sat, 27 May 2017 01:28:28 +0000 (21:28 -0400)] 
Add regression test for #12648

Commit ce97b7298d54bdfccd9dcf366a69c5617b4eb43f (the fix for #12175) also
fixed #12648. Let's add a regression test so that it stays fixed.

2 years agoAdd regression test for #13758
Ryan Scott [Fri, 26 May 2017 22:47:28 +0000 (18:47 -0400)] 
Add regression test for #13758

2 years agoRevert "Rewrite boot in Python"
Ben Gamari [Fri, 26 May 2017 22:27:37 +0000 (18:27 -0400)] 
Revert "Rewrite boot in Python"

This reverts commit 0440af6abe592c2366d302d603664fe763ad0828.
Unfortunately this breaks on Windows for tiresome reasons. I'll need to
reevaluate this.

2 years agoTypos in comments [ci skip]
Gabor Greif [Fri, 26 May 2017 09:08:54 +0000 (11:08 +0200)] 
Typos in comments [ci skip]

2 years agoSome tidying up of type pretty-printing
Simon Peyton Jones [Thu, 25 May 2017 15:18:06 +0000 (16:18 +0100)] 
Some tidying up of type pretty-printing

Triggered by the changes in #13677, I ended up doing a bit of
refactoring in type pretty-printing.

* We were using TyOpPrec and FunPrec rather inconsitently, so
  I made it consisent.

* That exposed the fact that we were a bit undecided about whether
  to print
     a + b -> c + d   vs   (a+b) -> (c+d)
  and similarly
     a ~ [b] => blah  vs   (a ~ [b]) => blah

  I decided to make TyOpPrec and FunPrec compare equal
  (in BasicTypes), so (->) is treated as equal precedence with
  other type operators, so you get the unambiguous forms above,
  even though they have more parens.

  We could readily reverse this decision.
  See Note [Type operator precedence] in BasicTypes

* I fixed a bug in pretty-printing of HsType where some
  parens were omitted by mistake.

2 years agoShrink a couple of hs-boot files
Simon Peyton Jones [Thu, 25 May 2017 15:07:09 +0000 (16:07 +0100)] 
Shrink a couple of hs-boot files

IfaceType.hs-boot and ToIface.hs-boot were bigger than they
needed to be, so I'm shrinking them.

2 years agoRe-engineer Given flatten-skolems
Simon Peyton Jones [Fri, 26 May 2017 08:31:38 +0000 (09:31 +0100)] 
Re-engineer Given flatten-skolems

The big change here is to fix an outright bug in flattening of Givens,
albeit one that is very hard to exhibit.  Suppose we have the constraint
    forall a. (a ~ F b) => ..., (forall c. ....(F b)...) ...

Then
 - we'll flatten the (F) b to a fsk, say  (F b ~ fsk1)
 - we'll rewrite the (F b) inside the inner implication to 'fsk1'
 - when we leave the outer constraint we are suppose to unflatten;
   but that fsk1 will still be there
 - if we re-simplify the entire outer implication, we'll re-flatten
   the Given (F b) to, say, (F b ~ fsk2)
Now we have two fsks standing for the same thing, and that is very
wrong.

Solution: make fsks behave more like fmvs:
 - A flatten-skolem is now a MetaTyVar, whose MetaInfo is FlatSkolTv
 - We "fill in" that meta-tyvar when leaving the implication
 - The old FlatSkol form of TcTyVarDetails is gone completely
 - We track the flatten-skolems for the current implication in
   a new field of InertSet, inert_fsks.

See Note [The flattening story] in TcFlatten.

In doing this I found various other things to fix:

* I removed the zonkSimples from TcFlatten.unflattenWanteds; it wasn't
  needed.   But I added one in TcSimplify.floatEqualities, which does
  the zonk precisely when it is needed.

* Trac #13674 showed up a case where we had
     - an insoluble Given,   e.g.  a ~ [a]
     - the same insoluble Wanted   a ~ [a]
  We don't use the Given to rewwrite the Wanted (obviously), but
  we therefore ended up reporting
      Can't deduce (a ~ [a]) from (a ~ [a])
  which is silly.

  Conclusion: when reporting errors, make the occurs check "win"
  See Note [Occurs check wins] in TcErrors

2 years agoMake isInsolubleOccursCheck more aggressive
Simon Peyton Jones [Fri, 26 May 2017 08:27:08 +0000 (09:27 +0100)] 
Make isInsolubleOccursCheck more aggressive

Consider
  type family F a :: * -> *

Then (a ~ F Int a) is an insoluble occurs check, and can be reported
as such.  Previous to this patch, TcType.isInsolubleOccursCheck was
treating any type-family application (including an over-saturated one)
as unconditionally not-insoluble.

This really only affects error messages, and then only slightly. I
tripped over this when investigating  Trac #13674.

2 years agoA bit more tc-tracing
Simon Peyton Jones [Fri, 26 May 2017 08:24:14 +0000 (09:24 +0100)] 
A bit more tc-tracing

2 years agorules: add per-library EXTRA_HC_OPTS
Sergei Trofimovich [Thu, 25 May 2017 21:44:37 +0000 (22:44 +0100)] 
rules: add per-library EXTRA_HC_OPTS

Sometimes it's handy to change a compiler flag
for a library in stage{0,1,2}.

Usage example:

    libraries/binary_EXTRA_HC_OPTS += -O1
    libraries/containers_EXTRA_HC_OPTS += -O1
    libraries/bytestring_EXTRA_HC_OPTS += -O1

Here override default -O2 defined in .cabal files
for these libraries to speed build up.

Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
2 years agoPattern synonyms and higher rank types
Simon Peyton Jones [Thu, 25 May 2017 08:59:29 +0000 (09:59 +0100)] 
Pattern synonyms and higher rank types

This patch fixes two separate bugs which contributed to making
Trac #13752 go wrong

1.  We need to use tcSubType, not tcUnify,
    in tcCheckPatSynDecl.tc_arg.

    Reason: Note [Pattern synonyms and higher rank types]

2.  TcUnify.tc_sub_type had a special case designed to improve error
    messages; see Note [Don't skolemise unnecessarily].  But the
    special case was too liberal, and ended up using unification
    (which led to rejecting the program) when it should instead taken
    the normal path (which accepts the program).

    I fixed this by making the test more conservative.

2 years agoComments only
Simon Peyton Jones [Thu, 25 May 2017 08:59:09 +0000 (09:59 +0100)] 
Comments only

2 years agoTypos in comments and manual [ci skip]
Gabor Greif [Tue, 23 May 2017 10:08:25 +0000 (12:08 +0200)] 
Typos in comments and manual [ci skip]

2 years agorts: Make compact debugging output depend upon compact debug flag
Ben Gamari [Tue, 23 May 2017 14:33:58 +0000 (10:33 -0400)] 
rts: Make compact debugging output depend upon compact debug flag

2 years agobase: Fix a few TODOs in Typeable.Internal
Ben Gamari [Tue, 23 May 2017 13:42:12 +0000 (09:42 -0400)] 
base: Fix a few TODOs in Typeable.Internal

Test Plan: Validate

Reviewers: austin, hvr, dfeuer

Reviewed By: dfeuer

Subscribers: rwbarton, thomie

GHC Trac Issues: #13746

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

2 years agoghc.mk: rename installed ghc-stage1 on non-windows
Sergei Trofimovich [Tue, 23 May 2017 08:45:50 +0000 (09:45 +0100)] 
ghc.mk: rename installed ghc-stage1 on non-windows

When user installs _native_ build ghc executable is renamed
from '$(libexec)/bin/ghc-stage<N>' to '$(libexec)/bin/ghc'.
But not on windows!

In case of _cross-compiler_ rename should happen only
for '$(libexec)/bin/ghc-stage<N>' runnable on non-windows
platform.

Before the change '$(libexec)/bin/ghc-stage<N>' rename happened
for any compiler not targeting windows.

After the patch rename also happens for '$(libexec)/bin/ghc-stage1'
cross-compiler built for linux targeting windows (Stage1Only=YES case).

Or on a concrete example:

   # host is x86_64-pc-linux-gnu
   $ ./configure --target=i686-w64-mingw32
   $ make install Stage1Only=YES

Before the change the layout was:
   - '$(libexec)/bin/ghc-stage1' was installed
   - bin/ghc contained 'exec $(libexec)/bin/ghc' # missing file!
After the change:
   - '$(libexec)/bin/ghc' was installed
   - bin/ghc contained 'exec $(libexec)/bin/ghc' # present file

Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
2 years agomk/config.mk.in: lower -O2 optimization down to -O1 on UNREG
Sergei Trofimovich [Tue, 23 May 2017 08:36:50 +0000 (09:36 +0100)] 
mk/config.mk.in: lower -O2 optimization down to -O1 on UNREG

It's not a new behaviour. First it was introduced by
2d5372cfdc2236a77ec49df249f3379b93224e06
("lower -O2 optimization down to -O1 on UNREG") to fix build
failure on unregisterised powerpc64.

This time I've noticed build failures on unregisterised ia64.

The change was accidentally reverted by commit
14d0f7f1221db758cd06a69f53803d9d0150164a
("Build system: Add stage specific SRC_HC_(WARNING_)OPTS)

The revert happened due to the following code rearrangement:

    ifeq "$(GhcUnregisterised)" "YES"
    GhcStage1HcOpts=
    GhcStage2HcOpts=
    GhcStage3HcOpts=
    endif

    GhcUnregisterised=@Unregisterised@

As a result 'ifeq' part has no effect.

The change moves 'ifeq' down to the very end of file
and adds a note it depends on the 'GhcUnregisterised' variable.

Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
2 years agoaclocal.m4: allow override of dllwrap and windres when cross-compiling
Sergei Trofimovich [Tue, 23 May 2017 08:13:43 +0000 (09:13 +0100)] 
aclocal.m4: allow override of dllwrap and windres when cross-compiling

Commit 66108864540601837ad77847f4062a670362361f reverted ability
to override 'dllwrap' and 'windres' paths when cross-compiling.

After this change (and a few libraries/Win32 patches) I was able
to build cross-compiler to windows:

    $ ./configure --target=i686-w64-mingw32 \
        DllWrap=i686-w64-mingw32-dllwrap \
        Windres=i686-w64-mingw32-windres

Later both 'dllwrap' and 'windres' should be derived from --target=
as we do now for 'CC', 'AR', 'NM' and others.

Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
2 years agoExtend ModuleSet with useful functions
Bartosz Nitka [Mon, 22 May 2017 17:16:26 +0000 (10:16 -0700)] 
Extend ModuleSet with useful functions

2 years agoTestcase for type family consistency checks
Bartosz Nitka [Mon, 22 May 2017 16:01:05 +0000 (12:01 -0400)] 
Testcase for type family consistency checks

Based on my quick search, we don't have a test
that verifies that we check the type family instances of
currently compiled module against direct or indirect
dependencies.

This adds two tests: for a direct dependency and
for an indirect dependency.

I also added a comment to make it clear what the 'Over'
test tests.

Other than completeness, it makes sense to have these
tests because if you look at
Note [The type family instance consistency story] in FamInsts
these cases are checked through different mechanisms.

Test Plan: new tests

Reviewers: simonmar, rwbarton, simonpj, austin, bgamari

Reviewed By: simonpj, bgamari

Subscribers: thomie

GHC Trac Issues: #13719

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

2 years agoTestcase for #13719
Bartosz Nitka [Mon, 22 May 2017 16:00:52 +0000 (12:00 -0400)] 
Testcase for #13719

I expect to improve this, a testcase will ensure
it doesn't regress.

Test Plan: ./validate

Reviewers: simonmar, austin, bgamari

Reviewed By: bgamari

Subscribers: rwbarton, thomie

GHC Trac Issues: #13719

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

2 years agoAdd "header" to GHC_COLORS
Phil Ruffwind [Mon, 22 May 2017 16:00:34 +0000 (12:00 -0400)] 
Add "header" to GHC_COLORS

Add "header" to GHC_COLORS and allow colors to be inherited from the
surroundings.

Test Plan: validate

Reviewers: austin, bgamari

Reviewed By: bgamari

Subscribers: rwbarton, thomie

GHC Trac Issues: #13718

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

2 years agoHandle file targets in missing home modules warning
Herbert Valerio Riedel [Mon, 22 May 2017 15:59:56 +0000 (11:59 -0400)] 
Handle file targets in missing home modules warning

When main module is listed on command line as a file, we should not
issue a warning about it. See Trac #13727

Reviewers: austin, bgamari, Yuras

Reviewed By: bgamari, Yuras

Subscribers: 23Skidoo, rwbarton, thomie

GHC Trac Issues: #13727

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

2 years agofix a memory leak in osNumaMask
Kubo Kovac [Mon, 22 May 2017 15:51:55 +0000 (11:51 -0400)] 
fix a memory leak in osNumaMask

got an error when using asan:
```
==1866689==ERROR: LeakSanitizer: detected memory leaks

Direct leak of 16 byte(s) in 1 object(s) allocated from:
    #0 0x10640568 in malloc ??:?
    #1 0x154d867e in numa_bitmask_alloc .../numactl-2.0.8/libnuma_nosymve r.c:204
    #2 0x154d867e in numa_allocate_nodemask .../numactl-2.0.8/libnuma_nosymve r.c:724
    #3 0x154d867e in numa_get_mems_allowed .../numactl-2.0.8/libnuma_nosymve r.c:1141
    #4 0x10b54a45 in osNumaMask ...ghc-8.0.2/rts/posix/OSMem.c:59 8
```

Test Plan: compile, validate

Reviewers: simonmar, niteria, austin, bgamari, erikd

Reviewed By: bgamari

Subscribers: rwbarton, thomie

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

2 years agoRewrite boot in Python
Ben Gamari [Mon, 22 May 2017 15:50:55 +0000 (11:50 -0400)] 
Rewrite boot in Python

Test Plan: Validate

Reviewers: hvr, austin

Subscribers: rwbarton, thomie, erikd

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

2 years agoEnsure package.cache is newer than registration files after make install
Ben Gamari [Sun, 21 May 2017 15:11:30 +0000 (11:11 -0400)] 
Ensure package.cache is newer than registration files after make install

Rebuild package.cache to ensure that it's newer than the package
database registration files, avoiding out-of-date cache warnings from
ghc-pkg. See #13375.

Test Plan: `make install`, run `ghc-pkg list`, look for out-of-date
cache warning

Reviewers: austin

Subscribers: rwbarton, thomie

GHC Trac Issues: #13375

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

2 years agoAdd missing "do" to example in arrow docs.
null-a [Mon, 22 May 2017 09:13:14 +0000 (10:13 +0100)] 
Add missing "do" to example in arrow docs.