ghc.git
2 years agoFix typo in functional dependencies doc
Chris Martin [Thu, 1 Dec 2016 02:41:49 +0000 (21:41 -0500)] 
Fix typo in functional dependencies doc

Reviewers: austin, bgamari

Reviewed By: bgamari

Subscribers: thomie

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

2 years agotestsuite: Add another testcase for #11821
Ben Gamari [Thu, 1 Dec 2016 00:09:11 +0000 (19:09 -0500)] 
testsuite: Add another testcase for #11821

2 years agoRevert "Fix windows validate."
Tamar Christina [Wed, 30 Nov 2016 19:51:43 +0000 (19:51 +0000)] 
Revert "Fix windows validate."

This reverts commit ef37580d16a23d1601795548b13b88b9f5373010.

Now that commit e2330b6dde805a5507898c3c4ddf38599df969da has been reverted
this change is now needed.

2 years agoRevert "Make globals use sharedCAF"
Ben Gamari [Wed, 30 Nov 2016 15:54:45 +0000 (10:54 -0500)] 
Revert "Make globals use sharedCAF"

This reverts commit 6f7ed1e51bf360621a3c2a447045ab3012f68575 due to breakage of
the build on Windows.

2 years agoRename RuntimeRepPolymorphism to LevityPolymorphism
Simon Peyton Jones [Wed, 30 Nov 2016 09:45:35 +0000 (09:45 +0000)] 
Rename RuntimeRepPolymorphism to LevityPolymorphism

Richard and I decided to make this change in our paper, and I'm
just propagating it to GHC

2 years agoTweaks to grammar and such.
Gabor Greif [Wed, 30 Nov 2016 09:21:04 +0000 (10:21 +0100)] 
Tweaks to grammar and such.

2 years agoFix windows validate.
Tamar Christina [Wed, 30 Nov 2016 08:55:42 +0000 (08:55 +0000)] 
Fix windows validate.

2 years agoUpdate Mingw-w64 bindist for Windows
Tamar Christina [Tue, 29 Nov 2016 21:58:53 +0000 (16:58 -0500)] 
Update Mingw-w64 bindist for Windows

This updates the binary dists for windows to GCC 6.2.0 and
binutils 2.27.2 which has fixes required for LLVM.

Test Plan: ./validate

Reviewers: simonmar, erikd, austin, bgamari

Reviewed By: simonmar, bgamari

Subscribers: thomie, #ghc_windows_task_force

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

GHC Trac Issues: #12871, #8974

2 years agotestsuite: Use python3 by default
Ben Gamari [Tue, 29 Nov 2016 21:58:24 +0000 (16:58 -0500)] 
testsuite: Use python3 by default

Summary:
It turns out that Phyx's fix for #12554 (D2684) still fails with mingw-w64
python 2.7. However, Python 3 (both msys2 and mingw-w64) work fine. Given that
supporting Python 2 has already become rather tiresome (as @thomie warned it
would), let's just move to python3 by default.

Test Plan: Validate

Reviewers: austin, Phyx

Reviewed By: Phyx

Subscribers: Phyx, thomie

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

GHC Trac Issues: #12554

2 years agoUpdate test output for Windows
Tamar Christina [Tue, 29 Nov 2016 21:58:04 +0000 (16:58 -0500)] 
Update test output for Windows

Following D2684 these two tests need to be updated:

 * T7037: timeout.exe now waits until all processes are finished.
          this makes T7037 reliable. So enabled.

 * T876: Unknown reason, allocations are much lower than before.

Test Plan: ./validate

Reviewers: austin, simonmar, bgamari

Reviewed By: bgamari

Subscribers: thomie, #ghc_windows_task_force

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

GHC Trac Issues: #12725, #12004

2 years agoFix testsuite threading, timeout, encoding and performance issues on Windows
Tamar Christina [Tue, 29 Nov 2016 21:56:08 +0000 (16:56 -0500)] 
Fix testsuite threading, timeout, encoding and performance issues on Windows

In a land far far away, a project called Cygwin was born.
Cygwin used newlib as it's standard C library implementation.

But Cygwin wanted to emulate POSIX systems as closely as possible.
So it implemented `execv` using the Windows function `spawnve`.

Specifically

```
spawnve (_P_OVERLAY, path, argv, cur_environ ())
```

`_P_OVERLAY` is crucial, as it makes the function behave *sort of*
like execv on linux. the child process replaces the original process.

With one major difference because of the difference in process models
on Windows: the original process signals the caller that it's done.

this is why the file is still locked. because it's still running,
control was returned because the parent process was destroyed,
but the child is still running.

I think it's just pure dumb luck, that the older runtimes are slow
enough to give the process time to terminate before we tried deleting
the file.  Which explains why you do have sporadic failures even on
older runtimes like 2.5.0, of a test or two (like T7307).

So this patch fixes a couple of things. I leverage the existing
`timeout.exe` to implement a workaround for this issue.

a) The old timeout used to start the process then assign it to the job.
   This is slightly faulty since child processes are only assigned to a
   job is their parent were assigned at the time they started. So this
   was a race condition. I now create the process suspended, assign it
   to the job and then resume it. Which means all child processes are
   not running under the same job.

b) First things, Is to prevent dangling child processes. I mark the job
   with `JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE` so when the last process in
   the job is done, it insures all processes under the job are killed.

c) Secondly, I change the way we wait for results. Instead of waiting
   for the parent process to terminate, I wait for the job itself to
   terminate.

   There's a slight subtlety there, we can't wait on the job itself.
   Instead we have to create an I/O Completion port and wait for signals
   on it.  See
   https://blogs.msdn.microsoft.com/oldnewthing/20130405-00/?p=4743

This fixes the issues on all runtimes for me and makes T7307 pass
consistenly.

The threading was also simplified by hiding all the locking in a single
semaphore and a completion class. Futhermore some additional error
reporting was added.

For encoding the testsuite now no longer passes a file handle to the
subprocess since on windows, sh.exe seems to acquire a lock on the file
that is not released in a timely fashion.

I suspect this because cygwin seems to emulate console handles by
creating file handles and using those for std handles. So when we give
it an existing file handle it just locks the file. I what's happening is
that it's not releasing the handle until all shared cygwin processes are
dead. Which explains why it worked in single threaded mode.

So now instead we pass a pipe and do not interpret the resulting data.

Any bytes written to stdin or read out of stdout/stderr are done so in
binary mode and we do not interpret the data. The reason for this is
that we have encoding tests in GHC which pass invalid utf-8. If we try
to handle the data as text then python will throw an exception instead
of a test comparison failing.

Also I have fixed the ability to override `PYTHON` when calling `make
tests`. This now works the same as with `.\validate`.

Finally, after cleaning up the locks I was able to make the abort
behavior work correctly as I believe it was intended: when you press
Ctrl+C and send an interrupt signal, the testsuite finishes the active
tests and then gracefully exits showing you a report of the progress it
did make. So using Ctrl+C will not just *die* as it did before.

These changes lift the restriction on which python version you use
(msys/mingw) or which runtime or python 3 or python 2.  All combinations
should now be supported.

Test Plan:
PATH=/usr/local/bin:/mingw64/bin:$APPDATA/cabal/bin:$PATH &&
PYTHON=/usr/bin/python THREADS=9 make test
THREADS=9 make test
PATH=/usr/local/bin:/mingw64/bin:$APPDATA/cabal/bin:$PATH &&
PYTHON=/usr/bin/python ./validate --quiet --testsuite-only

Reviewers: erikd, RyanGlScott, bgamari, austin

Subscribers: jrtc27, mpickering, thomie, #ghc_windows_task_force

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

GHC Trac Issues: #12725, #12554, #12661, #12004

2 years agoHoopl/Dataflow: use block-oriented interface
Michal Terepeta [Tue, 29 Nov 2016 22:54:12 +0000 (17:54 -0500)] 
Hoopl/Dataflow: use block-oriented interface

This introduces the new interface for dataflow analysis, where transfer
functions operate on a whole basic block.

The main changes are:
- Hoopl.Dataflow: implement the new interface and remove the old code;
  expose a utility function to do a strict fold over the nodes of a
  basic block (for analyses that do want to look at all the nodes)
- Refactor all the analyses to use the new interface.

One of the nice effects is that we can remove the `analyzeFwdBlocks`
hack that ignored the middle nodes (that existed for analyses that
didn't need to go over all the nodes). Now this is no longer a special
case and fits well with the new interface.

Signed-off-by: Michal Terepeta <michal.terepeta@gmail.com>
Test Plan:
validate, earlier version of the patch had assertions
comparing the results with the old implementation

Reviewers: erikd, austin, simonmar, hvr, goldfire, bgamari

Reviewed By: bgamari

Subscribers: goldfire, erikd, thomie

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

2 years agoAdded Eq1, Ord1, Read1 and Show1 instances for NonEmpty
Shane [Tue, 29 Nov 2016 22:53:44 +0000 (17:53 -0500)] 
Added Eq1, Ord1, Read1 and Show1 instances for NonEmpty

Reviewers: austin, hvr, bgamari

Reviewed By: bgamari

Subscribers: thomie

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

2 years agoRemove most functions from cmm/BlockId
Michal Terepeta [Tue, 29 Nov 2016 22:49:27 +0000 (17:49 -0500)] 
Remove most functions from cmm/BlockId

It seems that `BlockId` module could simply go away in favor
of Hoopl's `Label`. This is the first step to do that.

In a few places I had to add some type signatures, but most of
them seem to help with code readability.

Signed-off-by: Michal Terepeta <michal.terepeta@gmail.com>
Test Plan: ./validate

Reviewers: austin, simonmar, bgamari

Reviewed By: bgamari

Subscribers: thomie

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

2 years agorts: Add missing #include <stdbool.h>
Ben Gamari [Tue, 29 Nov 2016 23:46:15 +0000 (18:46 -0500)] 
rts: Add missing #include <stdbool.h>

2 years agoUse C99's bool
Ben Gamari [Tue, 29 Nov 2016 21:51:30 +0000 (16:51 -0500)] 
Use C99's bool

Test Plan: Validate on lots of platforms

Reviewers: erikd, simonmar, austin

Reviewed By: erikd, simonmar

Subscribers: michalt, thomie

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

2 years agoFix type of GarbageCollect declaration
Ben Gamari [Tue, 29 Nov 2016 21:51:07 +0000 (16:51 -0500)] 
Fix type of GarbageCollect declaration

Test Plan: Validate

Reviewers: simonmar, austin, erikd

Subscribers: thomie

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

2 years agoMake globals use sharedCAF
Moritz Angermann [Tue, 29 Nov 2016 21:50:32 +0000 (16:50 -0500)] 
Make globals use sharedCAF

The use of globals is quite painful when multiple rts are loaded, e.g.
when plugins are loaded, which bring in a second rts. The sharedCAF
appraoch was employed for the FastStringTable; I've taken the libery
to extend this to the other globals I could find.

Reviewers: rwbarton, simonmar, austin, hvr, erikd, bgamari

Reviewed By: simonmar, bgamari

Subscribers: thomie

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

2 years agohschooks.c: Ensure correct header file is included
Ben Gamari [Tue, 29 Nov 2016 21:50:04 +0000 (16:50 -0500)] 
hschooks.c: Ensure correct header file is included

Consider the case of building a stage1 compiler. `hschooks.c` will be
built by stage0 `ghc` and linked against the `stage0` RTS. Despite this
it was #including the stage1 `Rts.h`. There is, of course, no guarantee
that this is ABI-compatible with the stage0 RTS and when they diverge
Bad Things happen (e.g. bells ringing at inappropriate times in D2699).

Test Plan: Validate

Reviewers: simonmar, austin

Subscribers: thomie

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

2 years agotestsuite: Bump haddock.compiler allocations
Ben Gamari [Tue, 29 Nov 2016 20:58:36 +0000 (15:58 -0500)] 
testsuite: Bump haddock.compiler allocations

Unfortunately it's quite unclear what caused this.

2 years agoOrdList: Add Foldable, Traversable instances
Ben Gamari [Tue, 29 Nov 2016 19:45:19 +0000 (14:45 -0500)] 
OrdList: Add Foldable, Traversable instances

Test Plan: Validate

Reviewers: austin, simonmar

Reviewed By: simonmar

Subscribers: thomie

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

2 years agoNCGMonad: Add MonadUnique NatM instance
Ben Gamari [Tue, 29 Nov 2016 19:45:04 +0000 (14:45 -0500)] 
NCGMonad: Add MonadUnique NatM instance

Test Plan: Validate

Reviewers: austin, simonmar

Reviewed By: simonmar

Subscribers: thomie

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

2 years agoAsmCodeGen: Refactor worker in cmmNativeGens
Ben Gamari [Tue, 29 Nov 2016 19:44:57 +0000 (14:44 -0500)] 
AsmCodeGen: Refactor worker in cmmNativeGens

Test Plan: Validate

Reviewers: austin, simonmar, michalt

Reviewed By: simonmar, michalt

Subscribers: thomie

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

2 years agoUse newBlockId instead of newLabelC
Ben Gamari [Tue, 29 Nov 2016 19:44:19 +0000 (14:44 -0500)] 
Use newBlockId instead of newLabelC

This seems like a clearer name and the fewer functions that
one needs to remember, the better.

Test Plan: validate

Reviewers: austin, simonmar, michalt

Reviewed By: simonmar, michalt

Subscribers: thomie

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

2 years agoPurge GHC of literate Perl
Demi Obenour [Tue, 29 Nov 2016 19:44:05 +0000 (14:44 -0500)] 
Purge GHC of literate Perl

Test Plan: GHC CI

Reviewers: austin, bgamari

Reviewed By: bgamari

Subscribers: snowleopard, thomie

Maniphest Tasks: T74

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

2 years agoRefactor Pattern Match Checker to use ListT
Matthew Pickering [Tue, 29 Nov 2016 19:43:43 +0000 (14:43 -0500)] 
Refactor Pattern Match Checker to use ListT

Reviewers: bgamari, austin

Reviewed By: bgamari

Subscribers: thomie

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

2 years agoReplace -fshow-source-paths with -fhide-source-paths
Sylvain Henry [Tue, 29 Nov 2016 18:39:28 +0000 (13:39 -0500)] 
Replace -fshow-source-paths with -fhide-source-paths

This patch reverts the change introduced with
587dcccfdfa7a319e27300a4f3885071060b1f8e and restores the previous
default output of GHC (i.e., show source path and object path for each
compiled module).

The -fhide-source-paths flag can be used to hide these paths and reduce
the line
noise.

Reviewers: gracjan, nomeata, austin, bgamari, simonmar, hvr

Reviewed By: hvr

Subscribers: thomie

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

GHC Trac Issues: #12851

2 years agotestsuite: Mention CLEANUP option in README
Ben Gamari [Tue, 29 Nov 2016 18:38:37 +0000 (13:38 -0500)] 
testsuite: Mention CLEANUP option in README

Test Plan: Read it

Reviewers: austin

Subscribers: mpickering, thomie

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

2 years agoMinor cleanup of foldRegs{Used,Defd}
Michal Terepeta [Tue, 29 Nov 2016 18:31:28 +0000 (13:31 -0500)] 
Minor cleanup of foldRegs{Used,Defd}

This makes the two functions strict in the accumulator - it seems that
there are only two users of those functions: `CmmLive` and `CmmSink`
and in both cases the strict fold fits better.

The commit also removes a few unused functions (`filterRegsUsed`),
instances (for `Maybe` and `RegSet`) and gets rid of unnecessary
inculde of `HsVersions.h`.

The performance effect of avoiding unnecessary thunks is mostly
negligible, although we do allocate a tiny bit less (nofib's section
on compile allocations):
```
-1 s.d.                -----            -0.2%
+1 s.d.                -----            -0.1%
Average                -----            -0.2%
```

Signed-off-by: Michal Terepeta <michal.terepeta@gmail.com>
Test Plan: validate

Reviewers: simonmar, austin, bgamari

Reviewed By: bgamari

Subscribers: thomie

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

2 years agoDetect color support
Phil Ruffwind [Tue, 29 Nov 2016 18:31:16 +0000 (13:31 -0500)] 
Detect color support

Test Plan: validate

Reviewers: erikd, Phyx, austin, bgamari

Reviewed By: bgamari

Subscribers: thomie

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

GHC Trac Issues: #8809

2 years agoMake diagnostics slightly more colorful
Phil Ruffwind [Tue, 29 Nov 2016 18:31:01 +0000 (13:31 -0500)] 
Make diagnostics slightly more colorful

This is a preliminary commit to add colors to diagnostics (warning and
error messages).  The aesthetic changes are:

  - 'warning', 'error', and 'fatal' are all colored magenta, red, and
    red respectively.
  - The warning annotation [-Wsomething] shares the same color.
  - Warnings and errors are also bolded (this is consistent with what
    other compilers do).

A new flag has been added to control the behavior:

    -fdiagnostics-color=(always|auto|never)

This flag is 'auto' by default.  However, auto-detection is not
implemented yet, so it effectively it defaults to off.

Test Plan: validate

Reviewers: austin, bgamari

Reviewed By: bgamari

Subscribers: thomie

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

GHC Trac Issues: #8809

2 years agousers_guide: Bring 8.0.2 release notes up-to-date with ghc-8.0 branch
Ben Gamari [Tue, 29 Nov 2016 18:29:54 +0000 (13:29 -0500)] 
users_guide: Bring 8.0.2 release notes up-to-date with ghc-8.0 branch

I've been editing the release notes on the `ghc-8.0` branch; fold those
changes into `master`.

2 years agoDefine thread primitives if they're supported.
Shea Levy [Tue, 29 Nov 2016 18:28:27 +0000 (13:28 -0500)] 
Define thread primitives if they're supported.

On iOS, we use the pthread-based implementation of Itimer.c even for a
non-threaded RTS. Since 999c464, this relies on synchronization
primitives like Mutex, so ensure those primitives are defined whenever
they are supported, even if !THREADED_RTS.

Fixes #12799.

Reviewers: erikd, austin, simonmar, bgamari

Reviewed By: simonmar, bgamari

Subscribers: thomie

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

GHC Trac Issues: #12799

2 years agoStore string as parsed in SourceText for CImport
Alan Zimmerman [Tue, 29 Nov 2016 19:06:52 +0000 (21:06 +0200)] 
Store string as parsed in SourceText for CImport

2 years agoTypos in comments
Gabor Greif [Tue, 29 Nov 2016 15:18:07 +0000 (16:18 +0100)] 
Typos in comments

2 years agoZonk the free tvs of a RULE lhs to TyVars
Simon Peyton Jones [Tue, 29 Nov 2016 14:03:46 +0000 (14:03 +0000)] 
Zonk the free tvs of a RULE lhs to TyVars

Previously we were making them into skolem TcTyVars,
which is wrong for the output of the type checker, which
no TcTyVars should surive.

See Note [Zonking the LHS of a RULE] in TcHsSyn

This was flushed out by the new IfaceTcTyVar thing;
I found some more TcTyVars that were being serialised into
an interface file, which is wrong wrong wrong.

2 years agoMake note of #12881 in 8.0.2 release notes
Ryan Scott [Tue, 29 Nov 2016 13:43:46 +0000 (08:43 -0500)] 
Make note of #12881 in 8.0.2 release notes

Summary: Resolves #12881.

Test Plan: Read it, commit it, merge it, ship it

Reviewers: hvr, simonpj, austin, bgamari

Reviewed By: simonpj

Subscribers: simonpj, thomie

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

GHC Trac Issues: #12881

2 years agoComments only (related to #12789)
Simon Peyton Jones [Mon, 28 Nov 2016 17:41:27 +0000 (17:41 +0000)] 
Comments only (related to #12789)

It took me some time to find the right Note for the
fix to #12789.  This comment patch tries to add pointers
from relevant places.

2 years agoTest Trac #12885
Simon Peyton Jones [Mon, 28 Nov 2016 17:15:16 +0000 (17:15 +0000)] 
Test Trac #12885

...which is fixed by

  commit 0476a64e70c91b326b53db2fc55adbbaa8e5c270
  Author: Simon Peyton Jones <simonpj@microsoft.com>
  Date:   Tue Oct 25 15:22:17 2016 +0100

    Fix a bug in mk_superclasses_of

2 years agoTest Trac #12776
Simon Peyton Jones [Mon, 28 Nov 2016 16:43:49 +0000 (16:43 +0000)] 
Test Trac #12776

2 years agoTypos in comments only [ci skip]
Gabor Greif [Mon, 28 Nov 2016 09:40:13 +0000 (10:40 +0100)] 
Typos in comments only [ci skip]

2 years agoFix an long-standing bug in OccurAnal
Simon Peyton Jones [Sun, 27 Nov 2016 23:35:12 +0000 (23:35 +0000)] 
Fix an long-standing bug in OccurAnal

This bug was beautifully characterised in Trac #12776,
which showed a small program for which the inliner went
into an infinite loop.  Eeek.

It turned out to be a genuine and long-standing bug in
the occurrence analyer, specifically in the bit that
identifies loop breakers.  In this line

  pairs | isEmptyVarSet weak_fvs
        = reOrderNodes   0 bndr_set weak_fvs tagged_nodes []
        | otherwise
        = loopBreakNodes 0 bndr_set weak_fvs loop_breaker_edges []

the 'tagged_nodes' should be 'loop_breaker_edges'.
That's it!

The diff looks a lot bigger because I did some work on
comments and variable naming, but that's all it is.  We
were using the wrong set of dependencies!

I'm astonished that this bug has not caused more trouble.
It dates back to at least 2011 and maybe further.

2 years agoBe a bit more selective about improvement
Simon Peyton Jones [Thu, 24 Nov 2016 22:21:08 +0000 (22:21 +0000)] 
Be a bit more selective about improvement

This patch makes [W] constraints not participate in
improvement.   See Note [Do not do improvement for WOnly]
in TcSMonad.

Removes some senseless work duplication in some cases (notably
Trac #12860); should not change behaviour.

2 years agoA tiny bit more tc tracing
Simon Peyton Jones [Fri, 25 Nov 2016 11:43:10 +0000 (11:43 +0000)] 
A tiny bit more tc tracing

2 years agoFix inference of partial signatures
Simon Peyton Jones [Fri, 25 Nov 2016 11:35:50 +0000 (11:35 +0000)] 
Fix inference of partial signatures

When we had
  f :: ( _ ) => blah
we were failing to call growThetaTyVars, as we do in the
no-type-signature case, and that meant that we weren't generalising
over the right type variables.  I'm quite surprised this didn't cause
problems earlier.

Anyway Trac #12844 showed it up and this patch fixes it

2 years agoRefactor functional dependencies a bit
Simon Peyton Jones [Thu, 24 Nov 2016 13:47:02 +0000 (13:47 +0000)] 
Refactor functional dependencies a bit

* Rename CoAxiom.Eqn = Pair Type to TypeEqn,
  and use it for fundeps

* Use the FunDepEqn for injectivity, which lets us share a bit
  more code, and (more important) brain cells

* When generating fundeps, take the max depth of the two
  constraints.  This aimed at tackling the strange loop in
  Trac #12860, but there is more to come for that.

* Improve pretty-printing with -ddump-tc-trace

2 years agoImprove pretty-printing of types
Simon Peyton Jones [Thu, 24 Nov 2016 12:32:11 +0000 (12:32 +0000)] 
Improve pretty-printing of types

In this commit
   commit 6c0f10fac767c49b65ed71e8eb8e78ca4f9062d5
   Author: Ben Gamari <bgamari.foss@gmail.com>
   Date:   Sun Nov 13 16:17:37 2016 -0500

    Kill Type pretty-printer

we switched to pretty-printing a type by converting it to an
IfaceType and pretty printing that.  Very good.

This patch fixes two things

* The new story is terrible for debug-printing with -ddump-tc-trace,
  because all the extra info in an open type was discarded ty the
  conversion to IfaceType.

  This patch adds IfaceTcTyVar to IfaceType, to carry a TcTyVar in
  debug situations.  Quite an easy change, happily.  These things
  never show up in interface files.

* Now that we are going via IfaceType, it's essential to tidy before
  converting; otherwise
     forall k_23 k_34. blah
  is printed as
     forall k k. blah
  which is very unhelpful.  Again this only shows up in debug
  printing.

2 years agoUse TyVars in PatSyns
Simon Peyton Jones [Fri, 25 Nov 2016 11:39:38 +0000 (11:39 +0000)] 
Use TyVars in PatSyns

I found that some TcTyVars were lurking in a PatSyn, because
tc_patsyn_finish was using the TcType -> TcType zonker rather
than the TcType -> Type zonker.  Eeek.

I fixing this I also tided up function naming a bit (still not
terrific), and removed the unused TcTyBinder type entirely.

2 years agoUse TyVars in a DFunUnfolding
Simon Peyton Jones [Thu, 24 Nov 2016 13:50:53 +0000 (13:50 +0000)] 
Use TyVars in a DFunUnfolding

En route to something else I discovered that TcInstDcls.addDFunPrags
was building a DFunUnfolding that had TcTyVars in it.  They should
never survive beyond type checking.  It was harmeless, but now affects
type pretty-printing.

This patch fixes it.

2 years agoUse 'v' instead of 'tpl' for template vars
Simon Peyton Jones [Thu, 24 Nov 2016 12:36:11 +0000 (12:36 +0000)] 
Use 'v' instead of 'tpl' for template vars

Just affects Id.mkTemplateLocal, and should make debug prints
a little less voluminous.  No user-visible change here.

2 years agoKill off ifaceTyVarsOfType
Simon Peyton Jones [Thu, 24 Nov 2016 12:26:24 +0000 (12:26 +0000)] 
Kill off ifaceTyVarsOfType

IfaceTypes are really not well suited to finding free variables etc.
Nevertheless, there was quite a lot of code to do just that; but it
was only used to see if a kind is variable-free so as to decide
whether to print a forall binder.

This patch simplifies to deal with just that case, replacing all
the free-vars stuff with just ifTypeIsVarFree

2 years agoTest Trac #12845
Simon Peyton Jones [Thu, 24 Nov 2016 12:15:34 +0000 (12:15 +0000)] 
Test Trac #12845

2 years agoTest Trac #12867
Simon Peyton Jones [Tue, 22 Nov 2016 10:35:28 +0000 (10:35 +0000)] 
Test Trac #12867

2 years agoFix a name-space problem with promotion
Simon Peyton Jones [Fri, 25 Nov 2016 14:31:33 +0000 (14:31 +0000)] 
Fix a name-space problem with promotion

Trac #12686 showed that we were allowing a term variable into
a type, by promotion.  I chose to squash this in the renamer.

2 years agoTypos in comments
Gabor Greif [Fri, 25 Nov 2016 13:09:47 +0000 (14:09 +0100)] 
Typos in comments

2 years agoPerf improvements in T6048, T10547
Simon Peyton Jones [Fri, 25 Nov 2016 08:29:43 +0000 (08:29 +0000)] 
Perf improvements in T6048, T10547

I think this wave of commits just made these two a little better;
they must have been close to the threshold before.

2 years agoRemove redundant kind check
Simon Peyton Jones [Thu, 24 Nov 2016 13:57:04 +0000 (13:57 +0000)] 
Remove redundant kind check

The invariants for CTyEqCan mean that this check isn't needed.
Turn it into an ASSERT.

2 years agoAllow TyVars in TcTypes
Simon Peyton Jones [Wed, 23 Nov 2016 16:00:00 +0000 (16:00 +0000)] 
Allow TyVars in TcTypes

Up to now we've had a rule that a TyVar can't apppear in a type
seen by the type checker; they should all be TcTyVars.  But:

a) With -XTypeInType it becomes much harder to exclude them;
   see Note [TcTyVars in the typechecker] in TcType.

b) It's unnecessary to exculde them; instead we can just treat
   a TyVar just like vanillaSkolemTv.

This is what was causing an ASSERT error in
indexed-types/should_fail/T12041, reported in Trac #12826.

That patch allows a TyVar in a TcType.  The most significant
change is to make Var.tcTyVarDetails return vanillaSkolemTv.
In fact it already did, but (a) it was not documented, and
(b) we never exploited it.  Now we rely on it.

2 years agoAnother major constraint-solver refactoring
Simon Peyton Jones [Tue, 25 Oct 2016 16:41:45 +0000 (17:41 +0100)] 
Another major constraint-solver refactoring

This patch takes further my refactoring of the constraint
solver, which I've been doing over the last couple of months
in consultation with Richard.

It fixes a number of tricky bugs that made the constraint
solver actually go into a loop, including

  Trac #12526
  Trac #12444
  Trac #12538

The main changes are these

* Flatten unification variables (fmvs/fuvs) appear on the LHS
  of a tvar/tyvar equality; thus
           fmv ~ alpha
  and not
           alpha ~ fmv

  See Note [Put flatten unification variables on the left]
  in TcUnify.  This is implemented by TcUnify.swapOverTyVars.

* Don't reduce a "loopy" CFunEqCan where the fsk appears on
  the LHS:
      F t1 .. tn ~ fsk
  where 'fsk' is free in t1..tn.
  See Note [FunEq occurs-check principle] in TcInteract

  This neatly stops some infinite loops that people reported;
  and it allows us to delete some crufty code in reduce_top_fun_eq.
  And it appears to be no loss whatsoever.

  As well as fixing loops, ContextStack2 and T5837 both terminate
  when they didn't before.

* Previously we generated "derived shadow" constraints from
  Wanteds, but we could (and sometimes did; Trac #xxxx) repeatedly
  generate a derived shadow from the same Wanted.

  A big change in this patch is to have two kinds of Wanteds:
     [WD] behaves like a pair of a Wanted and a Derived
     [W]  behaves like a Wanted only
  See CtFlavour and ShadowInfo in TcRnTypes, and the ctev_nosh
  field of a Wanted.

  This turned out to be a lot simpler.  A [WD] gets split into a
  [W] and a [D] in TcSMonad.maybeEmitShaodow.

  See TcSMonad Note [The improvement story and derived shadows]

* Rather than have a separate inert_model in the InertCans, I've
  put the derived equalities back into inert_eqs.  We weren't
  gaining anything from a separate field.

* Previously we had a mode for the constraint solver in which it
  would more aggressively solve Derived constraints; it was used
  for simplifying the context of a 'deriving' clause, or a 'default'
  delcaration, for example.

  But the complexity wasn't worth it; now I just make proper Wanted
  constraints.  See TcMType.cloneWC

* Don't generate injectivity improvement for Givens; see
  Note [No FunEq improvement for Givens] in TcInteract

* solveSimpleWanteds leaves the insolubles in-place rather than
  returning them.  Simpler.

I also did lots of work on comments, including fixing Trac #12821.

2 years agoAdd elemDVarEnv
Simon Peyton Jones [Wed, 23 Nov 2016 09:05:33 +0000 (09:05 +0000)] 
Add elemDVarEnv

I need this in a later patch

2 years agoComments only in TcType
Simon Peyton Jones [Tue, 25 Oct 2016 14:25:03 +0000 (15:25 +0100)] 
Comments only in TcType

2 years agoFix a bug in mk_superclasses_of
Simon Peyton Jones [Tue, 25 Oct 2016 14:22:17 +0000 (15:22 +0100)] 
Fix a bug in mk_superclasses_of

This bug meant that we were less eager about expanding
tuple superclasses than we should have been; i.e. we stopped
too soon.  That's not fatal, beause we expand more superclasses
later, but it's less efficient.

2 years agoMake a panic into an ASSERT
Simon Peyton Jones [Tue, 25 Oct 2016 14:21:31 +0000 (15:21 +0100)] 
Make a panic into an ASSERT

2 years agoMake quoting and reification return the same types
Dominik Bollmann [Thu, 24 Nov 2016 19:14:09 +0000 (06:14 +1100)] 
Make quoting and reification return the same types

Previously TH was incorrectly returning a `Dec` using a `ConT` instead
of `PromotedT`.

Test Plan: validate

Reviewers: mainland, jstolarek, osa1, goldfire, thomie, bollmann,
bgamari, RyanGlScott, austin

Reviewed By: RyanGlScott

Subscribers: erikd

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

GHC Trac Issues: #11629

2 years agoCollect wildcards in sum types during renaming (#12711)
Ömer Sinan Ağacan [Thu, 24 Nov 2016 01:12:17 +0000 (04:12 +0300)] 
Collect wildcards in sum types during renaming (#12711)

This patch also removes the "catch all" pattern in the function and
explicitly lists constructors to get a warning in the future if a new
`HsType` was added.

Reviewers: bgamari, austin, simonpj

Reviewed By: simonpj

Subscribers: simonpj, thomie

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

GHC Trac Issues: #12711

2 years agoAllow to unregister threadWaitReadSTM action.
Alexander Vershilov [Wed, 23 Nov 2016 01:57:08 +0000 (20:57 -0500)] 
Allow to unregister threadWaitReadSTM action.

Allow to unregister threadWaitReadSTM/threadWaitWriteSTM on
a non-threaded runtime. Previosly noop action was returned,
as a result it was not possible to unregister action, unless
data arrives to Fd or it's closed.

Fixes #12852.

Reviewers: simonmar, hvr, austin, bgamari, trofi

Reviewed By: bgamari, trofi

Subscribers: thomie

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

GHC Trac Issues: #12852

2 years agoghc/hschooks.c: Fix include path of Rts.h
Ben Gamari [Tue, 22 Nov 2016 05:43:19 +0000 (00:43 -0500)] 
ghc/hschooks.c: Fix include path of Rts.h

We need to ensure that we don't include Rts.h from bootstrap compiler.
See #12796.

Test Plan: Validate

Reviewers: austin

Subscribers: thomie

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

GHC Trac Issues: #12796

2 years agoMake transformers upstream repository location consistent with others
Demi Obenour [Mon, 21 Nov 2016 22:09:27 +0000 (17:09 -0500)] 
Make transformers upstream repository location consistent with others

Reviewers: bgamari, austin

Reviewed By: bgamari

Subscribers: thomie

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

2 years agoIgnore Hadrian build products.
Edward Z. Yang [Mon, 21 Nov 2016 22:09:02 +0000 (17:09 -0500)] 
Ignore Hadrian build products.

Test Plan: none

Reviewers: austin, snowleopard, bgamari

Reviewed By: bgamari

Subscribers: thomie

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

2 years agoImplement fine-grained `-Werror=...` facility
Maciej Bielecki [Mon, 21 Nov 2016 22:08:45 +0000 (17:08 -0500)] 
Implement fine-grained `-Werror=...` facility

This patch add new options `-Werror=...`, `-Wwarn=...` and
`-Wno-error=...` (synonym for `-Wwarn=...`).

Semantics:

  - `-Werror` marks all warnings as fatal, including those that don't
    have a warning flag, and CPP warnings.
  - `-Werror=...` enables a warning and marks it as fatal
  - `-Wwarn=...` marks a warning as non-fatal, but doesn't disable it

Test Plan: validate

Reviewers: austin, bgamari

Reviewed By: bgamari

Subscribers: mpickering, svenpanne, RyanGlScott, thomie

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

GHC Trac Issues: #11219

2 years agoadd ieee754 next* functions to math_funs
Ben Gamari [Mon, 21 Nov 2016 22:08:38 +0000 (17:08 -0500)] 
add ieee754 next* functions to math_funs

Reviewers: austin, simonmar, trofi, bgamari

Reviewed By: bgamari

Subscribers: mpickering, thomie

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

GHC Trac Issues: #12802

2 years agotestsuite: Add (still failing) testcase for #12550
Ben Gamari [Mon, 21 Nov 2016 18:44:21 +0000 (13:44 -0500)] 
testsuite: Add (still failing) testcase for #12550

I thought that this would naturally resolve itself with the elimination
of the Type pretty-printer but somehow all of the stars in result
position of an arrow are still rendered in non-Unicode syntax. Quite
odd.

Test Plan: Validate

Reviewers: austin

Subscribers: thomie

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

GHC Trac Issues: #12550

2 years agotestsuite: Add (still broken) testcase for #12447
Ben Gamari [Mon, 21 Nov 2016 18:43:48 +0000 (13:43 -0500)] 
testsuite: Add (still broken) testcase for #12447

Test Plan: Validate

Reviewers: austin

Subscribers: thomie

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

GHC Trac Issues: #12447

2 years agotestsuite: Add test for #12024
Ben Gamari [Mon, 21 Nov 2016 18:43:35 +0000 (13:43 -0500)] 
testsuite: Add test for #12024

Test Plan: Validate

Reviewers: austin

Subscribers: thomie

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

GHC Trac Issues: #12024

2 years agotestsuite: Add test for #12855
Ben Gamari [Mon, 21 Nov 2016 18:42:15 +0000 (13:42 -0500)] 
testsuite: Add test for #12855

Test Plan: Validate

Reviewers: austin

Subscribers: thomie

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

GHC Trac Issues: #12855

2 years agoA few typos in comments
Gabor Greif [Mon, 21 Nov 2016 10:11:09 +0000 (11:11 +0100)] 
A few typos in comments

2 years agoUpdated code comment regarding EquationInfo. Trac #12856
Andreas Klebinger [Sun, 20 Nov 2016 00:03:51 +0000 (00:03 +0000)] 
Updated code comment regarding EquationInfo. Trac #12856

Summary: Updated code comment regarding EquationInfo. Fixes T12856

Reviewers: austin, bgamari, mpickering

Reviewed By: mpickering

Subscribers: mpickering, thomie

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

GHC Trac Issues: #12856

2 years agoOptimise whole module exports
Matthew Pickering [Fri, 18 Nov 2016 16:28:30 +0000 (16:28 +0000)] 
Optimise whole module exports

We directly build up the correct AvailInfos rather than generating
lots of singleton instances and combining them with expensive calls to
unionLists.

There are two other small changes.

* Pushed the nubAvails call into the explicit export list
  branch as we construct them correctly and uniquely ourselves.
* fix_faminst only needs to check the first element of the export
  list as we maintain the (yucky) invariant that the parent is the
  first thing in it.

Reviewers: simonpj, austin, bgamari

Reviewed By: simonpj, bgamari

Subscribers: simonpj, thomie, niteria

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

GHC Trac Issues: #12754

2 years agoAdd Data instance for Const
Ryan Scott [Fri, 18 Nov 2016 14:33:01 +0000 (09:33 -0500)] 
Add Data instance for Const

Summary:
Fixes #12438. As discussed on the Haskell libraries mailing list here:
https://mail.haskell.org/pipermail/libraries/2016-November/027396.html

Reviewers: hvr, austin, bgamari

Reviewed By: bgamari

Subscribers: thomie

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

GHC Trac Issues: #12438

2 years agoSpelling in comment only
Gabor Greif [Fri, 18 Nov 2016 09:57:46 +0000 (10:57 +0100)] 
Spelling in comment only

2 years agoAdd missing SMP symbols to RT linker.
Tamar Christina [Fri, 18 Nov 2016 08:50:11 +0000 (08:50 +0000)] 
Add missing SMP symbols to RT linker.

Summary:
Add some missing symbols that we
export from the public headers but forgot to include
in the runtime linker's symbol table.

This is a bit of a unsatifactory patch, since we have a bit of a
cat and mouse game going. We should find a way to automate this.

But I know of no good solutions at the moment that won't add all
rts symbols (including those we don't have an extern declaration for.).

So for now, just add the ones reported missing.

Test Plan: inplace/bin/ghc-stage2.exe --interactive

Reviewers: RyanGlScott, austin, erikd, simonmar, bgamari

Reviewed By: bgamari

Subscribers: thomie, #ghc_windows_task_force

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

GHC Trac Issues: #12846

2 years agoSwitch to LLVM version 3.9
Erik de Castro Lopo [Fri, 18 Nov 2016 08:14:42 +0000 (19:14 +1100)] 
Switch to LLVM version 3.9

Test Plan:
Build and test on x86_64/linux (perf-llvm) and armhf/linux.

Reviewers: austin, hvr, bgamari

Reviewed By: bgamari

Subscribers: RyanGlScott, thomie

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

2 years agoHave reify work for local variables with functional dependencies.
Facundo Domínguez [Thu, 17 Nov 2016 15:04:13 +0000 (10:04 -0500)] 
Have reify work for local variables with functional dependencies.

It turned out that finalizers were run too early and information
resulting from simplifying constraints was not available.

This patch runs finalizers after a first call to simplifyTop, and
then calls simplifyTop a second time to deal with constraints
that could result from running the finalizers.

Fixes T12777

Test Plan: ./validate

Reviewers: goldfire, simonpj, bgamari, austin

Reviewed By: simonpj

Subscribers: mpickering, mboes, thomie

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

GHC Trac Issues: #12777

2 years agoGHCi: Unconditionally import System.Directory
Ben Gamari [Thu, 17 Nov 2016 15:03:25 +0000 (10:03 -0500)] 
GHCi: Unconditionally import System.Directory

Both Windows and POSIX codepaths use System.Directory.canonicalizePath.

2 years agotestsuite: Rip out hack for #12554
Ben Gamari [Thu, 17 Nov 2016 03:17:26 +0000 (22:17 -0500)] 
testsuite: Rip out hack for #12554

@Phyx is working on correctly fixing (pun intended) the underlying issue
that prompted this hack. It turns out that `timeout` it the culprit.
Moreover, this hack breaks on msys python builds, which don't export
`WindowsError`.

Test Plan: Validate on Windows with `msys` python.

Reviewers: Phyx, austin

Subscribers: thomie, Phyx

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

GHC Trac Issues: #12554

2 years agoLLVM generate llvm.expect for conditional branches
Alex Biehl [Wed, 16 Nov 2016 23:16:39 +0000 (18:16 -0500)] 
LLVM generate llvm.expect for conditional branches

This patch adds likeliness annotations to heap and and stack checks and
modifies the llvm codegen to recognize those to help it generate better
code.

So with this patch

```
...
if ((Sp + 8) - 24 < SpLim) (likely: False) goto c23c; else goto c23d;
...
```

roughly generates:

```
  %ln23k = icmp ult i64 %ln23j, %SpLim_Arg
  %ln23m = call ccc i1 (i1, i1) @llvm.expect.i1( i1 %ln23k, i1 0 )
  br i1 %ln23m, label %c23c, label %c23d
```

Note the call to `llvm.expect` which denotes the expected result for
the comparison.

Test Plan: Look at assembler code with and without this patch. If the
heap-checks moved out of the way we are happy.

Reviewers: austin, simonmar, bgamari

Reviewed By: bgamari

Subscribers: michalt, thomie

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

GHC Trac Issues: #8321

2 years agoPass autoconf triplets to sub-project configures
Shea Levy [Wed, 16 Nov 2016 23:15:52 +0000 (18:15 -0500)] 
Pass autoconf triplets to sub-project configures

Reviewers: austin, hvr, bgamari

Reviewed By: bgamari

Subscribers: thomie, erikd

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

GHC Trac Issues: #12840

2 years agoRevert "Add Data instance for Const"
Ryan Scott [Thu, 17 Nov 2016 14:58:19 +0000 (09:58 -0500)] 
Revert "Add Data instance for Const"

This reverts commit 07e40e905357db805e6dbb557b35d6bdf76eaec6.

This was meant for a local branch, but accidentally wound up in master. Oops.

2 years agoAdd Data instance for Const
Ryan Scott [Thu, 17 Nov 2016 14:55:55 +0000 (09:55 -0500)] 
Add Data instance for Const

2 years agoCorrect name of Note in comment
Richard Eisenberg [Thu, 17 Nov 2016 14:08:04 +0000 (09:08 -0500)] 
Correct name of Note in comment

2 years agoCorrect spelling of command-line option in comment
Gabor Greif [Thu, 17 Nov 2016 09:13:46 +0000 (10:13 +0100)] 
Correct spelling of command-line option in comment

2 years agoTest for type synonym loops on TyCon.
Edward Z. Yang [Sat, 29 Oct 2016 00:54:36 +0000 (17:54 -0700)] 
Test for type synonym loops on TyCon.

Summary:
Previously, we tested for type synonym loops by doing
a syntactic test on the literal type synonym declarations.
However, in some cases, loops could go through hs-boot
files, leading to an infinite loop (#12042); a similar
situation can occur when signature merging.

This commit replaces the syntactic test with a test on
TyCon, simply by walking down all type synonyms until
we bottom out, or find we've looped back.  It's a lot
simpler.

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
Test Plan: validate

Reviewers: simonpj, austin, bgamari

Subscribers: goldfire, thomie

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

GHC Trac Issues: #12042

2 years agoFix windows validate
Tamar Christina [Thu, 17 Nov 2016 00:45:17 +0000 (00:45 +0000)] 
Fix windows validate

Summary:
mark myindex as inline only and hide it from profilers.
Also prevent this function from being used any other way
than just for inlining.

Test Plan: ./validate

Reviewers: austin, erikd, simonmar, bgamari

Reviewed By: bgamari

Subscribers: thomie, #ghc_windows_task_force

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

2 years agoInline compiler/NOTES into X86/Ppr.hs
Matthew Pickering [Wed, 16 Nov 2016 15:59:32 +0000 (15:59 +0000)] 
Inline compiler/NOTES into X86/Ppr.hs

Reviewers: austin, bgamari

Subscribers: thomie

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

2 years agoGeneralise the implicit prelude import
Simon Marlow [Wed, 16 Nov 2016 12:47:36 +0000 (12:47 +0000)] 
Generalise the implicit prelude import

Now it's possible to have two lists of imports:
* extra_imports are imports that are always added to the context
* prelude_imports are imports that are added if we don't have
  any open modules in scope.

No UI changes or new commands are added for now.  This was functionality
that we needed in our customized GHCi at Facebook, so I wanted to get it
upstream to reduce the differences between our version and the upstream
version.

2 years agoAvoid calling newDynFlags when there are no changes
Simon Marlow [Tue, 15 Nov 2016 17:19:04 +0000 (17:19 +0000)] 
Avoid calling newDynFlags when there are no changes

This is a small optimisation for :set and :unset

2 years agoFix -fobject-code with -fexternal-interpreter
Simon Marlow [Tue, 15 Nov 2016 16:49:33 +0000 (16:49 +0000)] 
Fix -fobject-code with -fexternal-interpreter

If the user does :cd in GHCi with -fexternal-interpreter, then we can
fail to find the object files.

2 years agoStorage.c: Pass a size to sys_icache_invalidate
Shea Levy [Wed, 16 Nov 2016 03:01:56 +0000 (22:01 -0500)] 
Storage.c: Pass a size to sys_icache_invalidate

The previous code passed an end pointer, but the interface takes a size
instead.

Fixes #12838.

Reviewers: austin, erikd, simonmar, bgamari

Reviewed By: simonmar, bgamari

Subscribers: thomie

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

GHC Trac Issues: #12838

2 years agoDon't use mmap symbols when !RTS_LINKER_USE_MMAP
Shea Levy [Wed, 16 Nov 2016 03:01:20 +0000 (22:01 -0500)] 
Don't use mmap symbols when !RTS_LINKER_USE_MMAP

Some usages of symbols from sys/mman.h are guarded by
RTS_LINKER_USE_MMAP by C conditionals, not CPP conditionals. Since those
branches are dead anyway when !RTS_LINKER_USE_MMAP, we just stub out the
relevant symbols rather than increasing CPP branching.

Fixes #12839.

Reviewers: simonmar, austin, bgamari, erikd

Reviewed By: simonmar, bgamari, erikd

Subscribers: thomie

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

GHC Trac Issues: #12839

2 years agoUpdate xhtml submodule
Erik de Castro Lopo [Wed, 16 Nov 2016 03:00:13 +0000 (22:00 -0500)] 
Update xhtml submodule

Test Plan: validate

Reviewers: hvr, austin, Phyx, bgamari

Reviewed By: bgamari

Subscribers: thomie

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