ghc.git
17 months agoUpdate Hadrian submodule
Andrey Mokhov [Sat, 24 Feb 2018 15:00:22 +0000 (15:00 +0000)] 
Update Hadrian submodule

  * Make shell.nix less broken (hadrian/510)
  * Add --configure flag to the script
  * Undo iserv changes (hadrian/507)
  * Fix ghc-cabal: Parsec modules are now found in libraries/parsec/src (hadrian/506)
  * Move a bunch of types into dedicated modules (hadrian/502)
  * Add --quickjump to Haddock (hadrian/505)
  * Add iserv library (hadrian/504)
  * Merge pull request hadrian/503 from snowleopard/angerman-patch-1
  * Merge pull request hadrian/500 from snowleopard/runtime-deps
  * Fix Hadrian after Cabal changes (hadrian/498)
  * Drop custom logic for Scav_thr and Evac_thr (hadrian/497)
  * Fix Haddock (hadrian/496)

17 months agoComments in Unify, fixing #12442
Richard Eisenberg [Thu, 22 Feb 2018 15:44:18 +0000 (10:44 -0500)] 
Comments in Unify, fixing #12442

[ci skip]

17 months agoDon't use ld.gold when building libraries for GHCi
Simon Marlow [Wed, 21 Feb 2018 14:16:00 +0000 (14:16 +0000)] 
Don't use ld.gold when building libraries for GHCi

Summary:
ld.gold is buggy when using -r and a linker script.  See upstream bug
https://sourceware.org/bugzilla/show_bug.cgi?id=22266

This has been causing various brokenness for the GHC runtime linker,
where we load these broken object files.

Test Plan: Test program from #14675

Reviewers: bgamari, RyanGlScott, alpmestan, hvr, erikd

Subscribers: rwbarton, thomie, erikd, carter

GHC Trac Issues: #14328, #14675, #14291

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

17 months agoAdd references to #6087
Ömer Sinan Ağacan [Wed, 21 Feb 2018 06:47:13 +0000 (09:47 +0300)] 
Add references to #6087

[skip ci]

17 months agoRevert "Move `iserv` into `utils` and change package name
Ben Gamari [Tue, 20 Feb 2018 05:26:45 +0000 (00:26 -0500)] 
Revert "Move `iserv` into `utils` and change package name

See Phab:D4377 for the rationale. We will try this again.

This reverts commit 7c173b9043f7a9a5da46c5b0cc5fc3b38d1a7019.

17 months agoSlight refactor of stock deriving internals
Ryan Scott [Tue, 20 Feb 2018 17:50:34 +0000 (12:50 -0500)] 
Slight refactor of stock deriving internals

Summary:
Before, the `hasStockDeriving` function, which determines
how derived bindings should be generated for stock classes, was
awkwardly separated from the `checkSideConditions` function, which
checks invariants of the same classes that `hasStockDeriving` does.
As a result, there was a fair deal of hoopla needed to actually use
`hasStockDeriving`.

But this hoopla really isn't required—we should be using
`hasStockDeriving` from within `checkSideConditions`, since they're
looking up information about the same classes! By doing this, we can
eliminate some kludgy code in the form of `mk_eqn_stock'`, which had
an unreachable `pprPanic` that was stinking up the place.

Reviewers: bgamari, dfeuer

Reviewed By: bgamari

Subscribers: dfeuer, rwbarton, thomie, carter

GHC Trac Issues: #13154

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

17 months agoAdd ghc-prim.buildinfo to .gitignore
Ryan Scott [Tue, 20 Feb 2018 17:49:19 +0000 (12:49 -0500)] 
Add ghc-prim.buildinfo to .gitignore

17 months agocircleci: Skip performance tests
Ben Gamari [Tue, 20 Feb 2018 05:26:45 +0000 (00:26 -0500)] 
circleci: Skip performance tests

Once we finally get the automation for #12758 we can re-enable these.

17 months agoDocument missing dataToTag# . tagToEnum# rule
David Feuer [Tue, 20 Feb 2018 04:48:22 +0000 (23:48 -0500)] 
Document missing dataToTag# . tagToEnum# rule

Explain why we don't have a rule to optimize `dataToTag# (tagToEnum# x)`
to `x`.

[skip ci]

Reviewers: bgamari

Reviewed By: bgamari

Subscribers: rwbarton, thomie, carter

GHC Trac Issues: #14282

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

17 months agoChange how includes for input file directory works
Tamar Christina [Tue, 20 Feb 2018 03:13:46 +0000 (22:13 -0500)] 
Change how includes for input file directory works

GHC Used to only allow for one include mode, namely `-I`.  The problem
with `-I` includes is that it supercedes all other includes, including
the system include paths.

This is not a problem for paths requested by the user, but it is a
problem for the ones we implicitly derive and add.

In particular we add the source directory of the input file to the
include path. This is problematic because it causes any file with the
name of a system include, to inadvertently loop as the wrong file gets
included.

Since this is an implicitly include, and as far as I can tell, only done
so local includes are found (as the sources given to GCC reside in a
temp folder) then switch from `-I` to `-iquote`.

This requires a submodule update for haddock

Test Plan: ./validate

Reviewers: austin, bgamari, hvr

Reviewed By: bgamari

Subscribers: carter, rwbarton, thomie

GHC Trac Issues: #14312

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

17 months agotestsuite: Bump allocations for T1969 and T5837
Ben Gamari [Tue, 20 Feb 2018 00:36:22 +0000 (19:36 -0500)] 
testsuite: Bump allocations for T1969 and T5837

Sadly it's not immediately obvious where this regression came from:

 * T5837 started failing on OS X with 0c2350c293b82e4cb24a66e00b904933bdb1c8f3
 * It's not clear when T1969 started failing due to the recent out of memory
   issues on Harbormaster

17 months agoBump text submodule to 1.2.3.0
Ben Gamari [Sun, 18 Feb 2018 16:31:41 +0000 (11:31 -0500)] 
Bump text submodule to 1.2.3.0

17 months agoBump haskeline submodule to 0.7.4.2
Ben Gamari [Sun, 18 Feb 2018 16:29:56 +0000 (11:29 -0500)] 
Bump haskeline submodule to 0.7.4.2

17 months agoBump parsec submodule to 0.3.13.0
Ben Gamari [Thu, 15 Feb 2018 16:43:35 +0000 (11:43 -0500)] 
Bump parsec submodule to 0.3.13.0

17 months agoBump primitive submodule to 0.6.3.0
Ben Gamari [Thu, 15 Feb 2018 16:42:35 +0000 (11:42 -0500)] 
Bump primitive submodule to 0.6.3.0

17 months agoBump stm submodule to 2.4.5.0
Ben Gamari [Sat, 3 Feb 2018 21:23:05 +0000 (16:23 -0500)] 
Bump stm submodule to 2.4.5.0

17 months agoBump pretty submodule
Ben Gamari [Mon, 29 Jan 2018 06:28:13 +0000 (01:28 -0500)] 
Bump pretty submodule

17 months agoBump filepath submodule
Ben Gamari [Tue, 23 Jan 2018 06:09:52 +0000 (01:09 -0500)] 
Bump filepath submodule

17 months agoBump process submodule
Ben Gamari [Tue, 23 Jan 2018 06:09:34 +0000 (01:09 -0500)] 
Bump process submodule

17 months agoBump haddock submodule again
Ben Gamari [Sun, 18 Feb 2018 17:02:44 +0000 (12:02 -0500)] 
Bump haddock submodule again

17 months agoIncrease the amount of parallelism in circleci.
Facundo Domínguez [Fri, 16 Feb 2018 11:18:52 +0000 (08:18 -0300)] 
Increase the amount of parallelism in circleci.

Summary: Set THREADS=CPUS+1 in circleci.

Reviewers: bgamari

Reviewed By: bgamari

Subscribers: rwbarton, thomie, carter

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

17 months agoRename the types in a GADT constructor in toposorted order
Ryan Scott [Sun, 18 Feb 2018 16:14:26 +0000 (11:14 -0500)] 
Rename the types in a GADT constructor in toposorted order

Previously, we were extracting the free variables from a
GADT constructor in an incorrect order, which caused the type
variables for the constructor's type signature to end up in
non-toposorted order. Thankfully, rearranging the order of types
during renaming makes swift work of this bug.

This fixes a regression introduced in commit
fa29df02a1b0b926afb2525a258172dcbf0ea460.
For whatever reason, that commit also commented out a
significant portion of the `T13123` test. This code appears
to work, so I've opted to uncomment it.

Test Plan: make test TEST=T14808

Reviewers: simonpj, bgamari

Reviewed By: bgamari

Subscribers: rwbarton, thomie, carter

GHC Trac Issues: #14808

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

17 months agoStgLint overhaul
Ömer Sinan Ağacan [Sun, 18 Feb 2018 16:12:53 +0000 (11:12 -0500)] 
StgLint overhaul

- Remove all type checks
- Check two STG invariants (no unboxed let bindings, variables defined
  before used) and post-unarisation invariants.

See the module header and #14787.

This version validates with `-dstg-lint` added to `GhcStage2HcOpts` and
`GhcLibHcOpts` and `EXTRA_HC_OPTS`.

Unarise changes:

- `unariseConArgBinder` and `unariseFunArgBinder` functions were almost
  the same; only difference was when unarising fun args we keep void
  args while in con args we drop them. A new function `unariseArgBinder`
  added with a `Bool` argument for whether we're unarising a con arg.
  `unariseConArgBinder` and `unariseFunArgBinder` are now defined as

      unariseConArgBinder = unarsieArgBinder True  -- data con
      unariseFunArgBinder = unariseArgBinder False -- not data con

- A bug in `unariseConArgBinder` and `unariseFunArgBinder` (which are
  just calls to `unariseArgBinder` now) that invalidated the
  post-unarise invariants when the argument has single type rep (i.e.
  `length (typePrimRep x) == 1`) fixed. This isn't a correctness issue
  (it's fine not to unarise if a variable is already represented as
  single value), but it triggers StgLint.

Test Plan:
- Pass testsuite with `-dstg-lint` [done]
- Boot stage2 (including libraries) with `-dstg-lint` [done]

Reviewers: simonpj, bgamari

Reviewed By: bgamari

Subscribers: duog, rwbarton, thomie, carter

GHC Trac Issues: #14787

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

17 months agoImprove error message for UNPACK/strictness annotations.
HE, Tao [Sun, 18 Feb 2018 16:10:37 +0000 (11:10 -0500)] 
Improve error message for UNPACK/strictness annotations.

Print different error message for improper UNPACK and strictness
annotations.  Fix Trac #14761.

Signed-off-by: HE, Tao <sighingnow@gmail.com>
Test Plan: make test TEST="T7210 T14761a T14761b"

Reviewers: goldfire, bgamari, RyanGlScott, simonpj

Reviewed By: RyanGlScott, simonpj

Subscribers: simonpj, goldfire, rwbarton, thomie, carter

GHC Trac Issues: #14761

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

17 months agotestsuite: Add newline to test output
Douglas Wilson [Sun, 18 Feb 2018 16:10:21 +0000 (11:10 -0500)] 
testsuite: Add newline to test output

Reviewers: bgamari

Reviewed By: bgamari

Subscribers: rwbarton, thomie, carter

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

17 months agoCBE: re-introduce bgamari's fixes
Michal Terepeta [Sun, 18 Feb 2018 16:09:40 +0000 (11:09 -0500)] 
CBE: re-introduce bgamari's fixes

During some recent work on CBE we discovered that `zipWith` is used to
check for equality, but that doesn't quite work if lists are of
different lengths! This was fixed by bgamari, but unfortunately the fix
had to be rolled back due to other changes in CBE in
50adbd7c5fe5894d3e6e2a58b353ed07e5f8949d. Since I wanted to have another
look at CBE anyway, we agreed that the first thing to do would be to
re-introduce the fix.

Sadly I don't have any actual test case that would exercise this.

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

Reviewers: bgamari, simonmar

Reviewed By: bgamari

Subscribers: rwbarton, thomie, carter

GHC Trac Issues: #14226

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

17 months agomyThreadId# is trivial; make it an inline primop
Simon Marlow [Sun, 18 Feb 2018 16:09:19 +0000 (11:09 -0500)] 
myThreadId# is trivial; make it an inline primop

The pattern `threadCapability =<< myThreadId` is used a lot in code
that uses `hs_try_putmvar`, I want to make it cheaper.

Test Plan: validate

Reviewers: bgamari, erikd

Reviewed By: bgamari

Subscribers: rwbarton, thomie, carter

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

17 months agoTidy up and consolidate canned CmmReg and CmmGlobals
Simon Marlow [Sun, 18 Feb 2018 16:08:52 +0000 (11:08 -0500)] 
Tidy up and consolidate canned CmmReg and CmmGlobals

Test Plan: validate

Reviewers: bgamari, erikd

Reviewed By: bgamari

Subscribers: rwbarton, thomie, carter

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

17 months agoRemove doubled words
Adam Sandberg Eriksson [Sun, 18 Feb 2018 16:08:31 +0000 (11:08 -0500)] 
Remove doubled words

Reviewers: bgamari

Reviewed By: bgamari

Subscribers: rwbarton, thomie, carter

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

17 months agoBuild Haddocks with --quickjump
Ben Gamari [Sun, 18 Feb 2018 16:01:59 +0000 (11:01 -0500)] 
Build Haddocks with --quickjump

By request of @alexbiehl.
CCing @snowleopard and @alpmestan as the same should be done in Hadrian.

Bumps haddock submodule.

Reviewers: alexbiehl

Reviewed By: alexbiehl

Subscribers: rwbarton, thomie, carter, snowleopard, alpmestan, alexbiehl

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

17 months agoAdd valid refinement substitution suggestions for typed holes
Matthías Páll Gissurarson [Sun, 18 Feb 2018 16:01:06 +0000 (11:01 -0500)] 
Add valid refinement substitution suggestions for typed holes

This adds valid refinement substitution suggestions for typed holes and
documentation thereof.

Inspired by Agda's refinement facilities, this extends the typed holes
feature to be able to search for valid refinement substitutions, which
are substitutions that have one or more holes in them.

When the flag `-frefinement-level-substitutions=n` where `n > 0` is
passed, we also look for valid refinement substitutions, i.e.
substitutions that are valid, but adds more holes. Consider the
following:

  f :: [Integer] -> Integer
  f = _

Here the valid substitutions suggested will be (with the new
`-funclutter-valid-substitutions` flag for less verbosity set):

```
  Valid substitutions include
    f :: [Integer] -> Integer
    product :: forall (t :: * -> *).
              Foldable t => forall a. Num a => t a -> a
    sum :: forall (t :: * -> *).
          Foldable t => forall a. Num a => t a -> a
    maximum :: forall (t :: * -> *).
              Foldable t => forall a. Ord a => t a -> a
    minimum :: forall (t :: * -> *).
              Foldable t => forall a. Ord a => t a -> a
    head :: forall a. [a] -> a
    (Some substitutions suppressed; use -fmax-valid-substitutions=N or
-fno-max-valid-substitutions)
```

When the `-frefinement-level-substitutions=1` flag is given, we
additionally compute and report valid refinement substitutions:

```
  Valid refinement substitutions include
    foldl1 _ :: forall (t :: * -> *).
                Foldable t => forall a. (a -> a -> a) -> t a -> a
    foldr1 _ :: forall (t :: * -> *).
                Foldable t => forall a. (a -> a -> a) -> t a -> a
    head _ :: forall a. [a] -> a
    last _ :: forall a. [a] -> a
    error _ :: forall (a :: TYPE r).
                GHC.Stack.Types.HasCallStack => [Char] -> a
    errorWithoutStackTrace _ :: forall (a :: TYPE r). [Char] -> a
    (Some refinement substitutions suppressed; use
-fmax-refinement-substitutions=N or -fno-max-refinement-substitutions)
```

Which are substitutions with holes in them. This allows e.g. beginners
to discover the fold functions and similar.

We find these refinement suggestions by considering substitutions that
don't fit the type of the hole, but ones that would fit if given an
additional argument. We do this by creating a new type variable with
newOpenFlexiTyVarTy (e.g. `t_a1/m[tau:1]`), and then considering
substitutions of the type `t_a1/m[tau:1] -> v` where `v` is the type of
the hole. Since the simplifier is free to unify this new type variable
with any type (and it is cloned before each check to avoid
side-effects), we can now discover any identifiers that would fit if
given another identifier of a suitable type. This is then generalized
so that we can consider any number of additional arguments by setting
the `-frefinement-level-substitutions` flag to any number, and then
considering substitutions like e.g. `foldl _ _` with two additional
arguments.

This can e.g. help beginners discover the `fold` functions.
This could also help more advanced users figure out which morphisms
they can use when arrow chasing.
Then you could write `m = _ . m2 . m3` where `m2` and `m3` are some
morphisms, and not only get exact fits, but also help in finding
morphisms that might get you a little bit closer to where you want to
go in the diagram.

Reviewers: bgamari

Reviewed By: bgamari

Subscribers: rwbarton, thomie, carter

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

17 months agoImplement stopgap solution for #14728
Ryan Scott [Sun, 18 Feb 2018 16:00:40 +0000 (11:00 -0500)] 
Implement stopgap solution for #14728

It turns out that one can produce ill-formed Core by
combining `GeneralizedNewtypeDeriving`, `TypeInType`, and
`TypeFamilies`, as demonstrated in #14728. The root of the problem
is allowing the last parameter of a class to appear in a //kind// of
an associated type family, as our current approach to deriving
associated type family instances simply doesn't work well for that
situation.

Although it might be possible to properly implement this feature
today (see https://ghc.haskell.org/trac/ghc/ticket/14728#comment:3
for a sketch of how this might work), there does not currently exist
a performant implementation of the algorithm needed to accomplish
this. Until such an implementation surfaces, we will make this corner
case of `GeneralizedNewtypeDeriving` an error.

Test Plan: make test TEST="T14728a T14728b"

Reviewers: bgamari

Reviewed By: bgamari

Subscribers: rwbarton, thomie, carter

GHC Trac Issues: #14728

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

17 months agobase: Fix changelog entry for openTempFile
Ben Gamari [Thu, 15 Feb 2018 18:01:09 +0000 (13:01 -0500)] 
base: Fix changelog entry for openTempFile

This change is present in 4.11.0.0.

17 months agocircleci: Add nightly build using devel2 flavour
Ben Gamari [Wed, 14 Feb 2018 22:37:08 +0000 (17:37 -0500)] 
circleci: Add nightly build using devel2 flavour

18 months agoFix #14811 by wiring in $tcUnit#
Ryan Scott [Fri, 16 Feb 2018 18:51:27 +0000 (13:51 -0500)] 
Fix #14811 by wiring in $tcUnit#

Previously, we were skipping over `$tcUnit#` entirely when
wiring in `Typeable` tycons, resulting in #14811. Easily fixed.

Test Plan: make test TEST=T14811

Reviewers: bgamari, dfeuer

Reviewed By: dfeuer

Subscribers: dfeuer, rwbarton, thomie, carter

GHC Trac Issues: #14811

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

18 months agoMove `iserv` into `utils` and change package name from `iserv-bin` to `iserv`
Moritz Angermann [Thu, 15 Feb 2018 05:54:55 +0000 (13:54 +0800)] 
Move `iserv` into `utils` and change package name from `iserv-bin` to `iserv`

This is done for consistency. We usually call the package file the same name the
folder has.  The move into `utils` is done so that we can move the library into
`libraries/iserv` and the proxy into `utils/iserv-proxy` and then break the
`iserv.cabal` apart.  This will make building the cross compiler with TH
simpler, because we can build the library and proxy as separate packages.

Reviewers: bgamari, simonmar, goldfire, erikd

Reviewed By: simonmar

Subscribers: tdammers, rwbarton, thomie, carter

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

18 months agoGet eqTypeRep to inline
David Feuer [Thu, 15 Feb 2018 08:48:51 +0000 (03:48 -0500)] 
Get eqTypeRep to inline

GHC didn't inline `eqTypeRep`, presumably because it ended up
being too big. This was unfortunate because it produces a
`Maybe`, which will almost always be scrutinized immediately.

Split `eqTypeRep` into a worker and a tiny wrapper, and mark the
wrapper `INLINABLE`. This change actually seems to reduce Core size,
at least in a small test.

Reviewers: hvr, bgamari, mpickering

Reviewed By: mpickering

Subscribers: mpickering, rwbarton, thomie, carter

GHC Trac Issues: #14790

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

18 months agorts.cabal.in: advertise profiling flavours of libraries, behind a flag
Alp Mestanogullari [Thu, 15 Feb 2018 07:23:01 +0000 (15:23 +0800)] 
rts.cabal.in: advertise profiling flavours of libraries, behind a flag

The make build system appears to be doing a bit of magic in order to supply
the profiled flavours of libHSrts and libCffi, as they're not advertised in
the 'extra-library-flavours' field of rts.cabal.in. This patch explicitly
advertises _p and _thr_p flavours of the RTS library and libCffi, but only
when the RTS is configured with the (newly introduced) 'profiling' flag.

This is necessary for Hadrian, as a branch (soon to be merged) does away with
ghc-cabal and relies just on Cabal to get package information. Without this
patch, Cabal can never inform us that _p and _thr_p flavours should be
built (and registered in the package db) as well, which obviously prevents us
from building a profiled GHC.

Reviewers: bgamari, erikd, simonmar

Reviewed By: bgamari

Subscribers: rwbarton, thomie, carter

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

18 months agoUpdate .cabal files for Cabal 2.1
Moritz Angermann [Mon, 5 Feb 2018 04:34:03 +0000 (12:34 +0800)] 
Update .cabal files for Cabal 2.1

cabal introduces SPDX identifier, and as such we need to change the
BSD3 license name. Also the >= qualifier is no longer prefered.

Test Plan: ./validate

Reviewers: bgamari, erikd, simonmar

Reviewed By: bgamari

Subscribers: alpmestan, rwbarton, thomie, carter

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

18 months agoAdds `smp` flag to rts.cabal.
Moritz Angermann [Sat, 25 Nov 2017 12:49:56 +0000 (20:49 +0800)] 
Adds `smp` flag to rts.cabal.

Reviewers: bgamari, erikd, simonmar

Reviewed By: simonmar

Subscribers: rwbarton, thomie, carter

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

18 months agoadds -latomic to. ghc-prim
Moritz Angermann [Thu, 8 Feb 2018 08:07:07 +0000 (16:07 +0800)] 
adds -latomic to. ghc-prim

Reviewers: bgamari, hvr

Reviewed By: bgamari

Subscribers: erikd, hvr, rwbarton, thomie, carter

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

18 months agoVarious documentation improvements
Sergey Vinokurov [Wed, 7 Feb 2018 21:10:17 +0000 (21:10 +0000)] 
Various documentation improvements

 * Fix missing code example in changelog for 8.4.1

 * List 'setEnv' as opposite of 'getEnv'

   It seems best to direct users to use 'System.Environment.setEnv'
   rather than 'System.Posix.Env.putEnv'. This is due to 'setEnv' being
   located in the same module as 'getEnv' and my virtue of working on
   Windows platform, whereas 'putEnv' does not have that quality because
   it's part of the 'unix' package.

 * Reflect in docs the fact that 'readMVar' is not a composition of
   'takeMVVar' and 'putMVar' any more

18 months agoRaise parse error for `data T where`.
HE, Tao [Tue, 13 Feb 2018 00:55:41 +0000 (19:55 -0500)] 
Raise parse error for `data T where`.

Empty GADTs data declarations can't be identified in type checker. This
patch adds additional checks in parser and raise a parse error when
encounter empty GADTs declarations but extension `GADTs` is not enabled.

Only empty declarations are checked in parser to avoid affecting
existing
error messages related to missing GADTs extension.

This patch should fix issue 8258.

Signed-off-by: HE, Tao <sighingnow@gmail.com>
Test Plan: make test TEST="T8258 T8258NoGADTs"

Reviewers: bgamari, mpickering, alanz, RyanGlScott

Reviewed By: bgamari, RyanGlScott

Subscribers: adamse, RyanGlScott, rwbarton, thomie, mpickering, carter

GHC Trac Issues: #8258

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

18 months agoFix tests broken by c9a88db3ac4f1c3e97e3492ebe076f2df6463540
Ben Gamari [Tue, 13 Feb 2018 22:49:02 +0000 (17:49 -0500)] 
Fix tests broken by c9a88db3ac4f1c3e97e3492ebe076f2df6463540

18 months agoCollect CCs in CorePrep, including CCs in unfoldings
Ömer Sinan Ağacan [Tue, 13 Feb 2018 06:03:57 +0000 (09:03 +0300)] 
Collect CCs in CorePrep, including CCs in unfoldings

This patch includes two changes:

1. Move cost centre collection from `SCCfinal` to `CorePrep`, to be able
   to collect cost centres in unfoldings. `CorePrep` drops unfoldings, so
   that's the latest stage in the compilation pipeline for this.

   After this change `SCCfinal` no longer collects all cost centres, but
   it still generates & collects CAF cost centres + updates cost centre
   stacks of `StgRhsClosure` and `StgRhsCon`s.

   This fixes #5889.

2. Initialize cost centre stack fields of `StgRhs` in `coreToStg`. With
   this we no longer need to update cost centre stack fields in
   `SCCfinal`, so that module is removed.

   Cost centre initialization explained in Note [Cost-centre
   initialization plan].

   Because with -fcaf-all we need to attach a new cost-centre to each
   CAF, `coreTopBindToStg` now returns `CollectedCCs`.

Test Plan: validate

Reviewers: simonpj, bgamari, simonmar

Reviewed By: simonpj, bgamari

Subscribers: rwbarton, thomie, carter

GHC Trac Issues: #5889

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

18 months agoMake ($!) representation-polymorphic
David Feuer [Tue, 13 Feb 2018 01:01:56 +0000 (20:01 -0500)] 
Make ($!) representation-polymorphic

Now that `($)` is representation-polymorphic, `($!)` should
surely follow suit.

Reviewers: hvr, bgamari, simonpj

Reviewed By: bgamari, simonpj

Subscribers: simonpj, rwbarton, thomie, carter

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

18 months agoEvac.c: remove unused CPP guard
Ömer Sinan Ağacan [Mon, 12 Feb 2018 11:33:25 +0000 (14:33 +0300)] 
Evac.c: remove unused CPP guard

`NO_PROMOTE_THUNKS` is never defined

18 months agoSimplify Foreign.Marshal.Alloc functions with ScopedTypeVariables
Ömer Sinan Ağacan [Sat, 10 Feb 2018 06:12:42 +0000 (09:12 +0300)] 
Simplify Foreign.Marshal.Alloc functions with ScopedTypeVariables

Reviewers: hvr, bgamari, RyanGlScott

Reviewed By: RyanGlScott

Subscribers: RyanGlScott, rwbarton, thomie, carter

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

18 months agoFix isDroppableCt (Trac #14763)
Simon Peyton Jones [Thu, 8 Feb 2018 14:24:11 +0000 (14:24 +0000)] 
Fix isDroppableCt (Trac #14763)

When finishing up an implication constraint, it's a bit tricky to
decide which Derived constraints to retain (for error reporting) and
which to discard.  I got this wrong in commit
   f20cf982f126aea968ed6a482551550ffb6650cf
   (Remove wc_insol from WantedConstraints)

The particular problem in Trac #14763 was that we were reporting as an
error a fundep-generated constraint
  (ex ~ T)
where 'ex' is an existentially-bound variable in a pattern match.
But this isn't really an error at all.

This patch fixes the problem. Indeed, since I had to understand
this rather tricky code, I took the opportunity to clean it up
and document better.  See
  isDroppableCt :: Ct -> Bool
and Note [Dropping derived constraints]

I also removed wl_deriv altogether from the WorkList data type.  It
was there in the hope of gaining efficiency by not even processing
lots of derived constraints, but it has turned out that most derived
constraints (notably equalities) must be processed anyway; see
Note [Prioritise equalities] in TcSMonad.

The two are coupled because to decide which constraints to put in
wl_deriv I was using another variant of isDroppableCt.  Now it's much
simpler -- and perhaps even more efficient too.

18 months agorts: fix barf format attribute
Douglas Wilson [Thu, 8 Feb 2018 00:03:28 +0000 (00:03 +0000)] 
rts: fix barf format attribute

Summary: See definition of PRINTF above the change

Reviewers: bgamari, erikd, simonmar, Phyx

Reviewed By: Phyx

Subscribers: Phyx, rwbarton, thomie, carter

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

18 months agoUse SPDX syntax in rts/package.conf.in
Herbert Valerio Riedel [Wed, 7 Feb 2018 17:36:13 +0000 (18:36 +0100)] 
Use SPDX syntax in rts/package.conf.in

This was an oversight from 2671cccde749ed64129097358f81bff43480cdb9
as it wasn't obvious to assume one would go the trouble to manually
construct the pkg-db entries... :-)

18 months agoFix solveOneFromTheOther for RecursiveSuperclasses
Simon Peyton Jones [Wed, 7 Feb 2018 11:57:40 +0000 (11:57 +0000)] 
Fix solveOneFromTheOther for RecursiveSuperclasses

This patch fixes the redundant superclass expansion
in Trac #14774.

The main change is to fix TcInterac.solveOneFromTheOther, so
that it does not prefer a work-item with a binding if that binding
transitively depends on the inert item we are comparing it with.

Explained in Note [Replacement vs keeping] in TcInert, esp
item (c) of the "Constraints coming from the same level" part.

To make this work I refactored out a new function
TcEvidence.findNeededEvVars, which was previously buried
inside TcSimplify.neededEvVars.

I added quite a few more comments and signposts about superclass
expansion.

18 months agoComments only
Simon Peyton Jones [Wed, 7 Feb 2018 11:56:58 +0000 (11:56 +0000)] 
Comments only

18 months agoFix utterly bogus TagToEnum rule in caseRules
Simon Peyton Jones [Wed, 7 Feb 2018 09:55:14 +0000 (09:55 +0000)] 
Fix utterly bogus TagToEnum rule in caseRules

In prelRules we had:

  tx_con_tte :: DynFlags -> AltCon -> AltCon
  tx_con_tte _      DEFAULT      = DEFAULT
  tx_con_tte dflags (DataAlt dc)
    | tag == 0  = DEFAULT   -- See Note [caseRules for tagToEnum]
    | otherwise = LitAlt (mkMachInt dflags (toInteger tag))

The tag==0 case is totally wrong, and led directly to Trac #14768.

See "Beware" in Note [caseRules for tagToEnum] (in the patch).

Easily fixed, though!

18 months agotestsuite: Add test for #14768
Ben Gamari [Tue, 6 Feb 2018 22:33:21 +0000 (17:33 -0500)] 
testsuite: Add test for #14768

18 months agorts: fix some barf format specifiers.
Douglas Wilson [Tue, 6 Feb 2018 22:27:32 +0000 (17:27 -0500)] 
rts: fix some barf format specifiers.

Reviewers: bgamari, erikd, simonmar

Reviewed By: bgamari

Subscribers: rwbarton, thomie, carter

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

18 months agorts: Use BITS_IN macro in bitmap calculations
Ömer Sinan Ağacan [Tue, 6 Feb 2018 18:29:50 +0000 (13:29 -0500)] 
rts: Use BITS_IN macro in bitmap calculations

Reviewers: bgamari, erikd, simonmar

Reviewed By: bgamari

Subscribers: rwbarton, thomie, carter

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

18 months agoImprove X86CodeGen's pprASCII.
HE, Tao [Tue, 6 Feb 2018 18:29:40 +0000 (13:29 -0500)] 
Improve X86CodeGen's pprASCII.

The original implementation generates a list of SDoc then concatenates
them using `hcat`. For memory optimization, we can transform the given
literal string into escaped string the construct SDoc directly.

This optimization will decreate the memory allocation when there's big
literal strings in haskell code, see Trac #14741.

Signed-off-by: HE, Tao <sighingnow@gmail.com>
Reviewers: bgamari, mpickering, simonpj

Reviewed By: simonpj

Subscribers: simonpj, rwbarton, thomie, carter

GHC Trac Issues: #14741

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

18 months agoRestore 'It is a member of hidden package' message.
Edward Z. Yang [Tue, 6 Feb 2018 18:27:46 +0000 (13:27 -0500)] 
Restore 'It is a member of hidden package' message.

See comment in Packages for more details.

Fixes #14717.

Signed-off-by: Edward Z. Yang <ezyang@fb.com>
Test Plan: validate

Reviewers: snoyberg, taylorfausak, bgamari

Reviewed By: snoyberg, taylorfausak, bgamari

Subscribers: rwbarton, thomie, carter

GHC Trac Issues: #14717

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

18 months agorts: Add format attribute to barf
Ben Gamari [Tue, 6 Feb 2018 18:27:35 +0000 (13:27 -0500)] 
rts: Add format attribute to barf

Test Plan: Validate

Reviewers: erikd, simonmar

Reviewed By: simonmar

Subscribers: rwbarton, thomie, carter

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

18 months agorts: Fix format of failed memory commit message
Ben Gamari [Tue, 6 Feb 2018 18:26:50 +0000 (13:26 -0500)] 
rts: Fix format of failed memory commit message

Test Plan: Validate

Reviewers: erikd, simonmar

Reviewed By: simonmar

Subscribers: rwbarton, thomie, carter

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

18 months agocmm: Remove unnecessary HsVersion.h includes
Michal Terepeta [Tue, 6 Feb 2018 18:26:29 +0000 (13:26 -0500)] 
cmm: Remove unnecessary HsVersion.h includes

Test Plan: ./validate

Reviewers: goldfire, bgamari, simonmar

Reviewed By: bgamari

Subscribers: rwbarton, thomie, carter

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

18 months agoCompute the union of imp_finsts on the side
Bartosz Nitka [Fri, 2 Feb 2018 14:55:19 +0000 (06:55 -0800)] 
Compute the union of imp_finsts on the side

I've explained most of the rationale in a new Note.
I'd happily add a test for this, but the difference is only
visible in run time, allocations remain more or less the same.

FWIW running `generateModules` from #14693 with DEPTH=16, WIDTH=30
finishes in `23s` before, and `11s` after.

Test Plan: ./validate

Reviewers: simonpj, simonmar, bgamari

Reviewed By: simonpj

Subscribers: rwbarton, thomie, carter

GHC Trac Issues: #14693

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

18 months agoBump Cabal submodule
Ben Gamari [Tue, 6 Feb 2018 01:27:10 +0000 (20:27 -0500)] 
Bump Cabal submodule

18 months agoImprove unboxed sum documentation
David Feuer [Mon, 5 Feb 2018 14:45:30 +0000 (09:45 -0500)] 
Improve unboxed sum documentation

* Clarify the representation of sums without fields.
* Try to improve language, clarity, and examples.

Fixes #14752

Reviewers: osa1, bgamari

Reviewed By: osa1

Subscribers: rwbarton, thomie, carter

GHC Trac Issues: #14752

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

18 months agotestsuite: Add testcase for #14754
Ben Gamari [Sun, 4 Feb 2018 00:19:08 +0000 (19:19 -0500)] 
testsuite: Add testcase for #14754

18 months agocmm: Revert more aggressive CBE due to #14226
Ben Gamari [Sun, 4 Feb 2018 00:49:21 +0000 (19:49 -0500)] 
cmm: Revert more aggressive CBE due to #14226

Trac #14226 noted that the C-- CBE pass frequently fails to
common up semantically identical blocks due to the differences in local
register naming. These patches fixed this by making the pass consider
equality up to alpha-renaming.

However, the new logic failed to consider the possibility that local
register naming *may* matter across multiple blocks. This lead to the
regression #14754. I'll need to do a bit of thinking on a proper
solution to this but in the meantime I'm reverting all four patches.

This reverts commit a27056f9823f8bbe2302f1924b3ab38fd6752e37.
This reverts commit 6f990c54f922beae80362fe62426beededc21290.
This reverts commit 9aa73892e10e90a1799b9277da593e816a827364.
This reverts commit 7920a7d9c53083b234e060a3e72f00b601a46808.

18 months agobase: Deprecate STM invariant checking primitives
Ben Gamari [Sat, 3 Feb 2018 18:11:17 +0000 (13:11 -0500)] 
base: Deprecate STM invariant checking primitives

18 months agoDon't apply dataToTag's caseRules for data families
Ryan Scott [Sat, 3 Feb 2018 16:40:43 +0000 (11:40 -0500)] 
Don't apply dataToTag's caseRules for data families

Commit 193664d42dbceadaa1e4689dfa17ff1cf5a405a0 added a
special caseRule for `dataToTag`, but this transformation completely
broke when `dataToTag` was applied to somewith with a type headed by
a data family, leading to #14680. For now at least, the simplest
solution is to simply not apply this transformation when the type is
headed by a data family.

Test Plan: make test TEST=T14680

Reviewers: simonpj, bgamari

Reviewed By: bgamari

Subscribers: rwbarton, thomie, carter

GHC Trac Issues: #14680

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

18 months agoghc-prim: Emulate C11 atomics when not available
Ben Gamari [Sat, 3 Feb 2018 16:37:01 +0000 (11:37 -0500)] 
ghc-prim: Emulate C11 atomics when not available

GCC's __sync primitives apparently "usually" imply a full barrier,
meaning they can be used to emulate the more precise C11 atomics albeit
with a loss of efficiency. This restores compatibility with GCC 4.4.

This partially reverts commit 59de290928e6903337f31c1f8107ac8a98ea145d.

Test Plan: Validate on Centos

Reviewers: hvr, simonmar, trommler

Subscribers: rwbarton, thomie, erikd, carter

GHC Trac Issues: #14244

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

18 months agoUpgrade containers submodule
David Feuer [Fri, 2 Feb 2018 18:58:28 +0000 (13:58 -0500)] 
Upgrade containers submodule

Reviewers: bgamari

Subscribers: rwbarton, thomie, carter

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

18 months agointeger-gmp: Simplify gmp/configure invocation
Ben Gamari [Fri, 2 Feb 2018 18:58:14 +0000 (13:58 -0500)] 
integer-gmp: Simplify gmp/configure invocation

There weas lots of historical cruft to be found here. The `export
SHELLOPTS` breaks on NixOS due to bash syntax in the gcc wrapper script.

Reviewers: hvr

Subscribers: rwbarton, thomie, carter

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

18 months agoDriverPhases: Fix flipped input extensions for cmm and cmmcpp
Ben Gamari [Fri, 2 Feb 2018 18:57:51 +0000 (13:57 -0500)] 
DriverPhases: Fix flipped input extensions for cmm and cmmcpp

Test Plan: Validate

Subscribers: rwbarton, thomie, carter

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

18 months agoAdd HasDebugCallStack to nameModule
Simon Peyton Jones [Fri, 2 Feb 2018 18:57:20 +0000 (13:57 -0500)] 
Add HasDebugCallStack to nameModule

This function is called in lots of places, so if it
every fails it's good to know from where it was called.

This is Simon's patch, part of his `wip/T2893` branch.

Test Plan: Validate

Subscribers: rwbarton, thomie, carter

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

18 months agotestsuite: Fix scc001 profile output
Ben Gamari [Thu, 1 Feb 2018 06:17:59 +0000 (01:17 -0500)] 
testsuite: Fix scc001 profile output

CircleCI seems to suggest that the cost center ordering is wrong in the prof
way. I'm beginning to wonder whether there is some non-determinism here. If only
I know what this test was supposed to be testing.

18 months agoHoopl.Collections: change right folds to strict left folds
Michal Terepeta [Thu, 1 Feb 2018 05:30:22 +0000 (00:30 -0500)] 
Hoopl.Collections: change right folds to strict left folds

It seems that most uses of these folds should be strict left folds
(I could only find a single place that benefits from a right fold).
So this removes the existing `setFold`/`mapFold`/`mapFoldWihKey`
replaces them with:
- `setFoldl`/`mapFoldl`/`mapFoldlWithKey` (strict left folds)
- `setFoldr`/`mapFoldr` (for the less common case where a right fold
  actually makes sense, e.g., `CmmProcPoint`)

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

Reviewers: bgamari, simonmar

Reviewed By: bgamari

Subscribers: rwbarton, thomie, carter, kavon

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

18 months agoFlag `-fdefer-typed-holes` also implies `-fdefer-out-of-scope-variables`.
HE, Tao [Thu, 1 Feb 2018 05:30:04 +0000 (00:30 -0500)] 
Flag `-fdefer-typed-holes` also implies `-fdefer-out-of-scope-variables`.

Reviewers: bgamari

Reviewed By: bgamari

Subscribers: rwbarton, thomie, carter

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

18 months agoAdd -ddump-ds-preopt
Simon Peyton Jones [Thu, 1 Feb 2018 09:19:30 +0000 (09:19 +0000)] 
Add -ddump-ds-preopt

This allows you to see the output immediately after desugaring
but before any optimisation.

I've wanted this for some time, but I was triggered into action
by Trac #13032 comment:9.

Interestingly, the change means that with -dcore-lint we will
now Lint the output before the very simple optimiser;
and this showed up Trac #14749.  But that's not the fault
of -ddump-ds-preopt!

18 months agoRe-center improved perf for T3064
Simon Peyton Jones [Thu, 1 Feb 2018 12:16:40 +0000 (12:16 +0000)] 
Re-center improved perf for T3064

There's a 6% reduction in allocation on T3064.  I think it's due to

  commit e4ab65bd57b2c39f4af52879654514bb6d5b42a0
  Author: Tobias Dammers <tdammers@gmail.com>
  Date:   Wed Jan 31 21:39:45 2018 -0500

      Optimize coercionKind (Trac #11735)

I'm not certain -- but, hey, it's good news

18 months agoExperiment with eliminating the younger tyvar
Simon Peyton Jones [Wed, 31 Jan 2018 15:58:12 +0000 (15:58 +0000)] 
Experiment with eliminating the younger tyvar

This patch is comments only, plus a minor refactor that
does not change behaviour.

It just records an idea I had for reducing kick-out in the type
constraint-solver.

See Note [Eliminate younger unification variables] in TcUnify.

Sadly, it didn't improve perf, so I've put it aside, leaving
some breadcrumbs for future generations of GHC hackers.

18 months agoUnboxedTuples can't be used as constraints
HE, Tao [Thu, 1 Feb 2018 02:40:03 +0000 (21:40 -0500)] 
UnboxedTuples can't be used as constraints

Fixes #14740.

Test Plan: make test TEST="14740"

Reviewers: bgamari, simonpj

Reviewed By: simonpj

Subscribers: simonpj, rwbarton, thomie, carter

GHC Trac Issues: #14740

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

18 months agoOptimize coercionKind (Trac #11735)
Tobias Dammers [Thu, 1 Feb 2018 02:39:45 +0000 (21:39 -0500)] 
Optimize coercionKind (Trac #11735)

Reviewers: simonpj, goldfire, bgamari

Reviewed By: simonpj

Subscribers: rwbarton, thomie, carter

GHC Trac Issues: #11735

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

18 months agoMark xmm6 as caller saved in the register allocator for windows.
klebinger.andreas@gmx.at [Thu, 1 Feb 2018 02:39:19 +0000 (21:39 -0500)] 
Mark xmm6 as caller saved in the register allocator for windows.

This prevents the register being picked up as a scratch register.
Otherwise the allocator would be free to use it before a call. This
fixes #14619.

Test Plan: ci, repro case on #14619

Reviewers: bgamari, Phyx, erikd, simonmar, RyanGlScott, simonpj

Reviewed By: Phyx, RyanGlScott, simonpj

Subscribers: simonpj, RyanGlScott, Phyx, rwbarton, thomie, carter

GHC Trac Issues: #14619

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

18 months agorts: Ensure that forkOS releases Task on termination
Ben Gamari [Thu, 1 Feb 2018 02:37:21 +0000 (21:37 -0500)] 
rts: Ensure that forkOS releases Task on termination

Test Plan: validate

Reviewers: simonmar, erikd

Reviewed By: simonmar

Subscribers: rwbarton, thomie, carter

GHC Trac Issues: #14725

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

18 months agoSequester deriving-related validity check into cond_stdOK
Ryan Scott [Thu, 1 Feb 2018 02:36:51 +0000 (21:36 -0500)] 
Sequester deriving-related validity check into cond_stdOK

Currently, any standalone-derived instance must satisfy the
property that the tycon of the data type having an instance being
derived for it must be either a normal ADT tycon or a data family
tycon. But there are several other primitive tycons—such as `(->)`,
`Int#`, and others—which cannot have standalone-derived instances
(via the `anyclass` strategy) as a result of this check! See
https://ghc.haskell.org/trac/ghc/ticket/13154#comment:8 for an
example of where this overly conservative restriction bites.

Really, this validity check only makes sense in the context of
`stock` deriving, where we need the property that the tycon is that
of a normal ADT or a data family in order to inspect its data
constructors. Other deriving strategies don't require this validity
check, so the most sensible way to fix this error is to move the
logic of this check into `cond_stdOK`, which is specific to
`stock` deriving.

This makes progress towards fixing (but does not entirely fix)

Test Plan: make test TEST=T13154a

Reviewers: bgamari

Reviewed By: bgamari

Subscribers: rwbarton, thomie, carter

GHC Trac Issues: #13154

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

18 months agoImplement BlockArguments (#10843)
Takano Akio [Thu, 1 Feb 2018 02:35:29 +0000 (21:35 -0500)] 
Implement BlockArguments (#10843)

This patch implements the BlockArguments extension, as proposed at
https://github.com/ghc-proposals/ghc-proposals/pull/90. It also
fixes #10855 as a side-effect.

This patch adds a large number of shift-reduce conflicts to the parser.
All of them concern the ambiguity as to where constructs like `if` and
`let` end. Fortunately they are resolved correctly by preferring shift.

The patch is based on @gibiansky's ArgumentDo implementation (D1219).

Test Plan: ./validate

Reviewers: goldfire, bgamari, alanz, mpickering

Reviewed By: bgamari, mpickering

Subscribers: Wizek, dfeuer, gibiansky, rwbarton, thomie, mpickering, carter

GHC Trac Issues: #10843, #10855

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

18 months agoDon't add targets that can't be found in GHCi
Julian Priestley [Thu, 1 Feb 2018 02:35:00 +0000 (21:35 -0500)] 
Don't add targets that can't be found in GHCi

When using the :add command in haxlsh/ghci, a module/file that can't
be found is still added to the list of targets, resulting in an error
message for the bad module/file for every subsequent usage of the
command. The add command should verify that the module/file can be
found before adding it to the list of targets.

Also add a ":show targets" command to show the currently added list of
commands, and an ":unadd" command to remove a target.

Test Plan:
Add a new GHCi testcase that checks that :add doesn't remember either
files or modules that could not be found, and that both the new :show
and :unadd commands work as expected.

Reviewers: simonmar, bgamari

Reviewed By: simonmar

Subscribers: rwbarton, thomie, carter

GHC Trac Issues: #14676

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

18 months agoMake RTS keep less memory (fixes #14702)
Andrey Sverdlichenko [Thu, 1 Feb 2018 02:33:58 +0000 (21:33 -0500)] 
Make RTS keep less memory (fixes #14702)

Currently runtime keeps hold to 4*used_memory. This includes, in
particular, nursery, which can be quite large on multiprocessor
machines: 16 CPUs x 64Mb each is 1GB. Multiplying it by 4 means whatever
actual memory usage is, runtime will never release memory under 4GB, and
this is quite excessive for processes which only need a lot of memory
shortly (think building data structures from large files).

This diff makes multiplier to apply only to GC-managed memory, leaving
all "static" allocations alone.

Test Plan: make test TEST="T14702"

Reviewers: bgamari, erikd, simonmar

Reviewed By: simonmar

Subscribers: rwbarton, thomie, carter

GHC Trac Issues: #14702

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

18 months agoappveyor: Refactor
Ben Gamari [Thu, 1 Feb 2018 00:14:47 +0000 (19:14 -0500)] 
appveyor: Refactor

Move build logic into a dedicated bash script, avoiding repetitive
bash invocations. Furthermore, disable pacman update step as it breaks
things in non-predictable ways.

18 months agotestsuite: Fix test output broken by efba054640d3
Ben Gamari [Thu, 1 Feb 2018 04:02:52 +0000 (23:02 -0500)] 
testsuite: Fix test output broken by efba054640d3

Looks right to me.

18 months agotestsuite: Fix test output of T14715
Ben Gamari [Thu, 1 Feb 2018 03:53:16 +0000 (22:53 -0500)] 
testsuite: Fix test output of T14715

Arguably the warning should just be disabled for this test to eliminate
unnecessary wiggle in the future.

18 months agoappveyor: Don't install gcc
Ben Gamari [Wed, 31 Jan 2018 23:18:40 +0000 (18:18 -0500)] 
appveyor: Don't install gcc

We use GHC's toolchain anyways.

18 months agocircleci: Add Dockerfile for x86_64-linux
Ben Gamari [Wed, 31 Jan 2018 21:41:44 +0000 (16:41 -0500)] 
circleci: Add Dockerfile for x86_64-linux

18 months agotestsuite: Mark scc001 and T5363 as broken due to #14705
Ben Gamari [Wed, 31 Jan 2018 20:40:01 +0000 (15:40 -0500)] 
testsuite: Mark scc001 and T5363 as broken due to #14705

These two tests have been failing on CircleCI.

18 months agoLook inside implications in simplifyRule
Simon Peyton Jones [Wed, 31 Jan 2018 14:25:50 +0000 (14:25 +0000)] 
Look inside implications in simplifyRule

Trac #14732 was a perpelexing bug in which -fdefer-typed-holes
caused a mysterious type error in a RULE.  This turned out to
be because we are more aggressive about creating implications
when deferring (see TcUnify.implicationNeeded), and the rule
mechanism hadn't caught up.

This fixes it.

18 months agoPrioritise equalities when solving, incl deriveds
Simon Peyton Jones [Wed, 31 Jan 2018 13:05:13 +0000 (13:05 +0000)] 
Prioritise equalities when solving, incl deriveds

We already prioritise equalities when solving, but
Trac #14723 showed that we were not doing so consistently
enough, and as a result the type checker could go into a loop.
Yikes.

See Note [Prioritise equalities] in TcSMonad.

Fixng this bug changed the solve order enough to demonstrate
a problem with fundeps: Trac #14745.

18 months agoMore tc-tracing
Simon Peyton Jones [Wed, 31 Jan 2018 13:03:37 +0000 (13:03 +0000)] 
More tc-tracing

18 months agoMove zonkWC to the right place in simplfyInfer
Simon Peyton Jones [Wed, 31 Jan 2018 11:35:33 +0000 (11:35 +0000)] 
Move zonkWC to the right place in simplfyInfer

runTcSWithEvBinds does some unification, so the zonkWC
must be after, not before!  Yikes.  An outright bug.

This fixes Trac #14715.

18 months agoA bit more tc-tracing
Simon Peyton Jones [Wed, 31 Jan 2018 11:35:20 +0000 (11:35 +0000)] 
A bit more tc-tracing

18 months agoUpdate outputs of T12962, scc003
Ömer Sinan Ağacan [Tue, 30 Jan 2018 18:49:03 +0000 (13:49 -0500)] 
Update outputs of T12962, scc003

- T12962: just fix function locations
- scc003: reorder cost centres, cost centre `f.(...)` renamed to `f.x'`

Reviewers: bgamari

Subscribers: rwbarton, thomie, carter

GHC Trac Issues: #14704

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