ghc.git
6 months agoadd helper for ncg wip/ncg-test-criterion
Gabor Greif [Sun, 30 Dec 2018 12:16:33 +0000 (13:16 +0100)] 
add helper for ncg

6 months agoIntroduce ncg config flag
Gabor Greif [Sun, 30 Dec 2018 09:57:46 +0000 (10:57 +0100)] 
Introduce ncg config flag

6 months agoPPC NCG: Simple 64-bit condition code on 32-bit
Peter Trommler [Sun, 30 Dec 2018 07:39:23 +0000 (02:39 -0500)] 
PPC NCG: Simple 64-bit condition code on 32-bit

6 months agorts: fix build failure on OpenBSD (_DYNAMIC symbol collision)
Sergei Trofimovich [Tue, 18 Dec 2018 23:17:45 +0000 (23:17 +0000)] 
rts: fix build failure on OpenBSD (_DYNAMIC symbol collision)

Summary:
Build failure on OpenBSD-6.4 the the following:
```
rts/RtsSymbols.c:994:1: error:
     error: redefinition of '_DYNAMIC' as different kind of symbol
    |
994 | RTS_OPENBSD_ONLY_SYMBOLS
    | ^
RTS_OPENBSD_ONLY_SYMBOLS
^
```

On OpenBSD `_DYNAMIC` was always defined in `<elf.h>` headers
but used not to be included.

The change explicitly includes `<elf.h>` as a source of symbol definition.

Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
Test Plan: build-tested on OpenBSD-6.4

Reviewers: bgamari, erikd, simonmar

Subscribers: rwbarton, carter

GHC Trac Issues: #15945

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

6 months agotestsuite: Disable more tests in unregisterised build
Ben Gamari [Sat, 29 Dec 2018 00:19:48 +0000 (19:19 -0500)] 
testsuite: Disable more tests in unregisterised build

This disables `ghcilink005`, `foreignInterruptable`, and `T7040_ghci` in
the unregisterised build as they tend to fail non-deterministically. See
ticket #16085.

6 months agorebindable-clash-warning-fix : correct warning logic
Shayne Fletcher [Sat, 29 Dec 2018 00:13:51 +0000 (19:13 -0500)] 
rebindable-clash-warning-fix : correct warning logic

6 months agoSkip test when external interpreter missing
Peter Trommler [Sat, 15 Dec 2018 21:22:47 +0000 (22:22 +0100)] 
Skip test when external interpreter missing

6 months agoarith011 is no longer broken with integer-simple
Alec Theriault [Wed, 26 Dec 2018 15:05:47 +0000 (10:05 -0500)] 
arith011 is no longer broken with integer-simple

6 months agoDivision fails fast for `divMod` \w integer-simple
Alec Theriault [Mon, 24 Dec 2018 18:35:18 +0000 (13:35 -0500)] 
Division fails fast for `divMod` \w integer-simple

We want to match the behaviour of `Integer` as well as
`Integer`/`Natural` from `integer-gmp`, namely to have

     divMod x 0 = _|_

not

     divMod x 0 = (_|_, _|_)

See #16091 for an example of where this matters.

6 months agoaclocal.m4: drop obsolete -fno-stack-protector
Sergei Trofimovich [Wed, 19 Dec 2018 23:21:28 +0000 (23:21 +0000)] 
aclocal.m4: drop obsolete -fno-stack-protector

Summary:
Initially -fno-stack-protector was added for openbsd specifically for ghc-6.5:
    changeset:f638fdfe1d9de1307355c8074fbff9c28342c0ef (2006)
and later it was extended to cover osx:
    changeset:c2cd83e7d85c11e6a33e1cde263eb2312566d535 (2009)

None of the reports hint at exact breakage. I guess both happened
in -fvia-C mode where GHC's Evil Mangler had a chance to mangle
stack canaries generated by fstack-protector.

ghc has no evil mangler anymore and the change is not needed
at least for C codegen.

validated the patch on OpenBSD-6.4. No new failures compared to
clean master branch.

Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
Test Plan: validated on OpenBSD

Reviewers: bgamari

Subscribers: rwbarton, erikd, carter

GHC Trac Issues: #16046

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

6 months agogitlab-ci: Try only building Windows in the quick flavour
Ben Gamari [Tue, 25 Dec 2018 10:12:40 +0000 (05:12 -0500)] 
gitlab-ci: Try only building Windows in the quick flavour

It seems no matter how many machines I throw at Windows it's constantly behind.
Perhaps the quick build flavour will be fast enough to allow us to keep until
while we sort out our toolchain issues (#16084).

6 months agogitlab-ci: Allow Windows to fail for now
Ben Gamari [Tue, 25 Dec 2018 21:54:25 +0000 (16:54 -0500)] 
gitlab-ci: Allow Windows to fail for now

While we sort out #16084.

6 months agogitlab-ci: Require that integer-simple configuration passes
Ben Gamari [Tue, 25 Dec 2018 21:52:59 +0000 (16:52 -0500)] 
gitlab-ci: Require that integer-simple configuration passes

The last step of #15915.

6 months agorts: Turn ASSERT in LDV_recordDead into a normal if
Ben Gamari [Sun, 23 Dec 2018 00:43:41 +0000 (19:43 -0500)] 
rts: Turn ASSERT in LDV_recordDead into a normal if

As reported in #15382 the `ASSERT(ctr != NULL)` is currently getting routinely
hit during testsuite runs. While this is certainly a bug I would far prefer
getting a proper error message than a segmentation fault. Consequently I'm
turning the `ASSERT` into a proper `if` so we get a proper error in non-debug
builds.

6 months agotestsuite: Skip ffi018_ghci when unregisterised
Ben Gamari [Tue, 25 Dec 2018 10:03:21 +0000 (05:03 -0500)] 
testsuite: Skip ffi018_ghci when unregisterised

As noted in #16085 this test is fragile in unregisterised compilers.

6 months agogitlab-ci: Clean tree on Windows after job
Ben Gamari [Mon, 24 Dec 2018 20:34:00 +0000 (15:34 -0500)] 
gitlab-ci: Clean tree on Windows after job

It seems like currently the runner doesn't delete the working tree after
finishing a job. At least we can delete the binary artifacts for now.

6 months agogitlab-ci: Use robocopy instead of bash to copy cabal cache
Ben Gamari [Sun, 23 Dec 2018 18:12:46 +0000 (13:12 -0500)] 
gitlab-ci: Use robocopy instead of bash to copy cabal cache

6 months agogitlab-ci: Use per-build temporary directory on Windows
Ben Gamari [Sun, 23 Dec 2018 06:19:36 +0000 (01:19 -0500)] 
gitlab-ci: Use per-build temporary directory on Windows

I have seen several instances of inexplicable "Access denied" errors on Windows.
Using per-build temporary directories avoids any chance of interference between
builds and eliminates the possibility of temporary files leaking beyond the life
of the build.

6 months agoRevert "hadrian: Pass integer_backend to testsuite driver"
Ben Gamari [Sun, 23 Dec 2018 22:57:12 +0000 (17:57 -0500)] 
Revert "hadrian: Pass integer_backend to testsuite driver"

This reverts commit 442be690e1ca162e22d632df695c29f90625f33e.

6 months agotestsuite: Fix a variety of issues when building with integer-simple
Ben Gamari [Sun, 23 Dec 2018 06:34:00 +0000 (06:34 +0000)] 
testsuite: Fix a variety of issues when building with integer-simple

 * Mark arith011 as broken with integer-simple

   As noted in #16091, arith011 fails when run against integer-simple with a
   "divide by zero" exception. This suggests that integer-gmp and integer-simple
   are handling division by zero differently.

 * This also fixes broken_without_gmp; the lack of types made the previous
   failure silent, sadly. Improves situation of #16043.

 * Mark several tests implicitly depending upon integer-gmp as broken
   with integer-simple. These expect to see Core coming from integer-gmp,
   which breaks with integer-simple.

 * Increase runtime timeout multiplier of T11627a with integer-simple

   I previously saw that T11627a timed out in all profiling ways when run against
   integer-simple. I suspect this is due to integer-simple's rather verbose heap
   representation. Let's see whether increasing the runtime timeout helps.

   Fixes test for #11627.

This is all in service of fixing #16043.

6 months agotestsuite: Enable T11627a on Darwin
Ben Gamari [Sun, 23 Dec 2018 17:36:50 +0000 (12:36 -0500)] 
testsuite: Enable T11627a on Darwin

The retainer profiler no longer uses the C stack for its mark stack (#14758).
Consequently even the small C stack provided on Darwin should be sufficient to
run this test. See #11627

6 months agoghc-compact: Use Char instead of Integer in compact_share test
Ben Gamari [Sun, 23 Dec 2018 17:33:12 +0000 (12:33 -0500)] 
ghc-compact: Use Char instead of Integer in compact_share test

The representation of Integer depends upon the choice of integer backend whereas
Char should be consistent.

6 months agoSimplify Core output with -dsuppress-type-signatures
Ömer Sinan Ağacan [Mon, 24 Dec 2018 12:02:27 +0000 (15:02 +0300)] 
Simplify Core output with -dsuppress-type-signatures

Currently we duplicate top-level binder ids for no reason:

    $fEqHsExpr_$c/=
    $fEqHsExpr_$c/=
      = \ @ id_a27U $dEq_a27V eta_B2 eta1_B1 ->
          case $fEqHsExpr_$c== $dEq_a27V eta_B2 eta1_B1 of {
            False -> True;
            True -> False
          }

with this patch we drop the first line when type signatures are not
printed (-dsuppress-type-signatures, which is implied by -dsuppress-all)

Reviewers: simonpj, bgamari

Reviewed By: simonpj

Subscribers: rwbarton, carter

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

6 months agotestsuite: Mark th tests as broken in ext-interp way in LLVM build flavours
Ben Gamari [Sun, 23 Dec 2018 07:24:17 +0000 (02:24 -0500)] 
testsuite: Mark th tests as broken in ext-interp way in LLVM build flavours

This is due to the failures documented in #16087. The condition here could be
improved as it matches on `BUILD_FLAVOUR` instead of looking at the compiler
flags. However, it's better than nothing and I hope we will be able to fix these
issues before long.

6 months agogitlab-ci: Disable CircleCI Darwin builds
Ben Gamari [Sun, 23 Dec 2018 21:52:27 +0000 (16:52 -0500)] 
gitlab-ci: Disable CircleCI Darwin builds

They aren't finishing correctly anyways.

6 months agoRevert "testsuite: Fix broken_without_gmp"
Ben Gamari [Sun, 23 Dec 2018 18:45:24 +0000 (13:45 -0500)] 
Revert "testsuite: Fix broken_without_gmp"

This reverts commit e59439af3222d151918ad1ad2a03942ce9e6a1ff.

This is causing unexpected failures in some test ways. Further proof
that no change is too trivial for CI.

6 months agotestsuite: Fix broken_without_gmp
Ben Gamari [Sun, 23 Dec 2018 06:34:00 +0000 (06:34 +0000)] 
testsuite: Fix broken_without_gmp

The lack of types made the previous failure silent, sadly. Improves
situation of #16043.

6 months agotestsuite: Mark heapprof001 as broken in prof_hc_hb way on i386
Ben Gamari [Sat, 22 Dec 2018 18:02:08 +0000 (13:02 -0500)] 
testsuite: Mark heapprof001 as broken in prof_hc_hb way on i386

As documented in #15382, this is known to fail in prof_hc_hb on i386.
Concerningly, I have also seen this test non-deterministically fail in
prof_hc_hb on amd64. We should really investigate this.

6 months agotestsuite: Mark objcpp-hi and T13366 as broken on Darwin due to #16083
Ben Gamari [Sat, 22 Dec 2018 15:01:46 +0000 (10:01 -0500)] 
testsuite: Mark objcpp-hi and T13366 as broken on Darwin due to #16083

6 months agotestsuite: Remove expect_broken on readFail032 and readFail048
Ben Gamari [Sat, 22 Dec 2018 14:49:28 +0000 (09:49 -0500)] 
testsuite: Remove expect_broken on readFail032 and readFail048

As noted in #15662, these used to be broken on Darwin due to a Clang toolchain
bug. However, this bug appears to be fixed in the Clang shipped with macOS
Mojave. Unfortunately, we don't really have any way to only mark it as broken on
certain operation system releases so I am just removing the expect_broken
entirely.

6 months agogitlab-ci: Allow Darwin CircleCI build to fail
Ben Gamari [Sat, 22 Dec 2018 06:09:20 +0000 (01:09 -0500)] 
gitlab-ci: Allow Darwin CircleCI build to fail

This is currently spuriously failing. Moreover, we have the Mac Mini builder
running again so this is much less necessary now.

6 months agoAdd test for #16038
Ömer Sinan Ağacan [Sat, 22 Dec 2018 07:11:49 +0000 (10:11 +0300)] 
Add test for #16038

6 months agolinters: Check for WARN macro with space separating it from its paren
Ben Gamari [Sat, 22 Dec 2018 05:53:45 +0000 (00:53 -0500)] 
linters: Check for WARN macro with space separating it from its paren

6 months agoLoadIface: Fix another CPP/Clang issue
Ben Gamari [Sat, 22 Dec 2018 05:53:00 +0000 (00:53 -0500)] 
LoadIface: Fix another CPP/Clang issue

6 months agogitlab-ci: Fix Darwin build
Ben Gamari [Sat, 22 Dec 2018 04:23:56 +0000 (23:23 -0500)] 
gitlab-ci: Fix Darwin build

Previously the toolchain directory was wiped away by git clean.

6 months agogitlab-ci: Only run nightly-i386-linux-deb9 when NIGHTLY is set
Ben Gamari [Sat, 22 Dec 2018 02:29:54 +0000 (21:29 -0500)] 
gitlab-ci: Only run nightly-i386-linux-deb9 when NIGHTLY is set

6 months agogitlab-ci: More aggressive cleaning
Ben Gamari [Sat, 22 Dec 2018 02:28:09 +0000 (21:28 -0500)] 
gitlab-ci: More aggressive cleaning

6 months agogitlab-ci: Only run CircleCI Darwin build in full-build stage
Ben Gamari [Fri, 21 Dec 2018 23:42:04 +0000 (18:42 -0500)] 
gitlab-ci: Only run CircleCI Darwin build in full-build stage

6 months agoTcRnDriver: Fix haddock-like comment
Ben Gamari [Fri, 21 Dec 2018 23:04:51 +0000 (18:04 -0500)] 
TcRnDriver: Fix haddock-like comment

6 months agogitlab-ci: Add i386 Debian 9 builds
Ben Gamari [Fri, 21 Dec 2018 21:51:37 +0000 (16:51 -0500)] 
gitlab-ci: Add i386 Debian 9 builds

6 months agogitlab-ci: Ensure that build environment is clean
Ben Gamari [Fri, 21 Dec 2018 19:49:57 +0000 (14:49 -0500)] 
gitlab-ci: Ensure that build environment is clean

6 months agogitlab-ci: Set locale
Ben Gamari [Fri, 21 Dec 2018 15:10:28 +0000 (10:10 -0500)] 
gitlab-ci: Set locale

6 months agogitlab-ci: Set thread count properly on Windows
Ben Gamari [Fri, 21 Dec 2018 15:10:09 +0000 (10:10 -0500)] 
gitlab-ci: Set thread count properly on Windows

6 months agogitlab-ci: Tag linter stage
Ben Gamari [Wed, 19 Dec 2018 19:25:49 +0000 (14:25 -0500)] 
gitlab-ci: Tag linter stage

Previously the linters were tagged with x86_64-linux, meaning that linting jobs
would often get stuck behind builds in the queue. Given that linting jobs are
fairly low-cost they hold up later build stages it is important that we reduce
this latency.

6 months agogitlab-ci: Fix Windows build
Ben Gamari [Wed, 19 Dec 2018 17:47:43 +0000 (12:47 -0500)] 
gitlab-ci: Fix Windows build

6 months agogitlab-ci: Remove CircleCI configuration
Ben Gamari [Tue, 18 Dec 2018 22:38:07 +0000 (17:38 -0500)] 
gitlab-ci: Remove CircleCI configuration

Our CircleCI builds will fail anyways without large instances.

6 months agoCircleCI: Fix check for git push retry limit.
David Eichmann [Wed, 19 Dec 2018 16:46:13 +0000 (11:46 -0500)] 
CircleCI: Fix check for git push retry limit.

Test Plan: Observe CircleCI

Reviewers: bgamari

Reviewed By: bgamari

Subscribers: rwbarton, carter

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

6 months agogitlab-ci: Allow Hadrian build on Windows to fail
Ben Gamari [Wed, 19 Dec 2018 16:42:56 +0000 (11:42 -0500)] 
gitlab-ci: Allow Hadrian build on Windows to fail

Due to #16073.

6 months agoremove option
Gabor Greif [Fri, 14 Dec 2018 19:01:43 +0000 (20:01 +0100)] 
remove option

6 months agoRevert "gitlab: Drop submodules hack"
Ben Gamari [Wed, 19 Dec 2018 15:57:11 +0000 (10:57 -0500)] 
Revert "gitlab: Drop submodules hack"

It turns out that the submodules hack is useful to ensure that
CI works in forks.

This reverts commit 90ceafa8b9ad60e3c7b72cdd2dacdbeb96bdcddc.

6 months agoImprove documention of TypeInType
Simon Peyton Jones [Fri, 21 Dec 2018 16:54:26 +0000 (16:54 +0000)] 
Improve documention of TypeInType

6 months agoFix treatment of hi-boot files and dfuns
Simon Peyton Jones [Thu, 20 Dec 2018 17:49:34 +0000 (17:49 +0000)] 
Fix treatment of hi-boot files and dfuns

Trac #16038 exposed the fact that TcRnDriver.checkHiBootIface
was creating a binding, in the module being compiled, for
   $fxBlah = $fBlah

 but $fxBlah was a /GlobalId/. But all bindings should be for
 /LocalIds/ else dependency analysis goes down the tubes.

* I added a CoreLint check that an occurrence of a GlobalId
  is not bound by an binding of a LocalId.  (There is already
  a binding-site check that no binding binds a GlobalId.)

* I refactored (and actually signficantly simplified) the
  tricky code for dfuns in checkHiBootIface to ensure that
  we get LocalIds for those boot-dfuns.

Alas, I then got "duplicate instance" messages when compiling
HsExpr. It turns out that this is a long-standing, but extremely
delicate, bug: even before this patch, if you compile HsExpr
with -ddump-tc-trace, you get "duplicate instance". Without
-ddump-tc-trace, it's OK.  What a mess!

The reason for the duplicate-instance is now explained in
Note [Loading your own hi-boot file] in LoadIface.  I fixed
it by a Gross Hack in LoadIface.loadInterface. This is at
least no worse than before.

But there should be a better way. I have opened #16081 for this.

6 months agoTiny refactor to tcExtendRecEnv
Simon Peyton Jones [Thu, 20 Dec 2018 12:41:14 +0000 (12:41 +0000)] 
Tiny refactor to tcExtendRecEnv

In tcExtendRecEnv, there is no need to us setGlobalTypeEnv
(which side-effects the tcg_type_env_var).  tcExtendRecEnv
is used only when kind-checking a group of type/class decls
and no knot-tying via tcg_type_env_var is needed.

There is no change in functionality.

6 months agoComments only
Simon Peyton Jones [Mon, 10 Dec 2018 17:32:34 +0000 (17:32 +0000)] 
Comments only

6 months agoMake candidateQTvs contain tyvar with zonked kinds
Simon Peyton Jones [Fri, 21 Dec 2018 11:11:31 +0000 (11:11 +0000)] 
Make candidateQTvs contain tyvar with zonked kinds

candidateQTyVars was failing to return fully-zonked
tyvars, and that made things fall over chaotically
when we try to sort them into a well-scoped telescope.
Result: Trac #15795

So I made candidateQTvs guarantee to have fully-zonked
tyvars (i.e. with zonked kinds).  That's a bit annoying
but not really difficult.

6 months agoFix #16002 by moving a validity check to the renamer
Ryan Scott [Fri, 21 Dec 2018 04:00:21 +0000 (23:00 -0500)] 
Fix #16002 by moving a validity check to the renamer

Summary:
The validity check which rejected things like:

```lang=haskell
type family B x where
  A x = x
```

Used to live in the typechecker. But it turns out that this validity
check was //only// being run on closed type families without CUSKs!
This meant that GHC would silently accept something like this:

```lang=haskell
type family B (x :: *) :: * where
  A x = x
```

This patch fixes the issue by moving this validity check to the
renamer, where we can be sure that the check will //always// be run.

Test Plan: make test TEST=T16002

Reviewers: simonpj, bgamari

Reviewed By: simonpj

Subscribers: goldfire, rwbarton, carter

GHC Trac Issues: #16002

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

6 months agoRefine the suppression of RuntimeRep variables
Simon Peyton Jones [Thu, 20 Dec 2018 14:05:27 +0000 (14:05 +0000)] 
Refine the suppression of RuntimeRep variables

When we pretty-print types, we suppress RuntimeRep variables, but
we were being too aggressive in doing so, resulting in Trac #16074.

This patch makes the suppression a bit less aggressive.
See Note [Defaulting RuntimeRep variables]

6 months agoAdd solveLocalEqualities to tcHsPatSigType
Simon Peyton Jones [Thu, 20 Dec 2018 12:42:46 +0000 (12:42 +0000)] 
Add solveLocalEqualities to tcHsPatSigType

This call plain missing, and as a result the casts
messed up deep-skolemisation in tcSubType

Fixes Trac #16033

6 months agoRemove an old OPTIONS_GHC
Ömer Sinan Ağacan [Thu, 20 Dec 2018 12:36:54 +0000 (15:36 +0300)] 
Remove an old OPTIONS_GHC

6 months agoFix #16030 by refactoring IfaceSyn's treatment of GADT constructors
Ryan Scott [Wed, 19 Dec 2018 18:17:58 +0000 (19:17 +0100)] 
Fix #16030 by refactoring IfaceSyn's treatment of GADT constructors

Summary:
GHCi's `:info` command was pretty-printined GADT
constructors suboptimally in the following ways:

1. Sometimes, fields were parenthesized when they did not need it,
   e.g.,

```lang=haskell
data Foo a where
  MkFoo :: (Maybe a) -> Foo a
```

   I fixed this by refactoring some code in `pprIfaceConDecl` to be a
   little smarter with respect to GADT syntax. See `pprFieldArgTy`
   and `pprArgTy`.
2. With `-fprint-explicit-kinds` enabled, there would be times when
   specified arguments would be printed without a leading `@` in GADT
   return types, e.g.,

```lang=haskell
data Bar @k (a :: k) where
  MkBar :: Bar k a
```

   It turns out that `ppr_tc_app`, the function which pretty-prints
   these return types, was not using the proper machinery to print
   out the arguments, which caused the visibilities to be forgotten
   entirely. I refactored `ppr_tc_app` to do this correctly.

Test Plan: make test TEST=T16030

Reviewers: goldfire, bgamari, simonpj

Reviewed By: simonpj

Subscribers: simonpj, rwbarton, carter

GHC Trac Issues: #16030

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

6 months agoUse unicode arrows with -fprint-unicode-syntax
Krzysztof Gogolewski [Wed, 19 Dec 2018 18:17:20 +0000 (19:17 +0100)] 
Use unicode arrows with -fprint-unicode-syntax

Summary:
See #8959, this is one more place where we
can pretty-print Unicode syntax.

Test Plan: validate

Reviewers: nomeata, bgamari

Reviewed By: bgamari

Subscribers: rwbarton, carter

GHC Trac Issues: #8959

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

6 months agodon't suggest Rank2Types in error messages (Fixed #16000)
chessai [Wed, 19 Dec 2018 18:16:49 +0000 (19:16 +0100)] 
don't suggest Rank2Types in error messages (Fixed #16000)

Summary: Rank2Types is deprecated. Don't suggest to users to use it.

Reviewers: bgamari, RyanGlScott, simonpj

Reviewed By: RyanGlScott, simonpj

Subscribers: RyanGlScott, rwbarton, carter

GHC Trac Issues: #16000

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

6 months agogitlab-ci: Split build into two halves
Ben Gamari [Wed, 19 Dec 2018 16:49:25 +0000 (11:49 -0500)] 
gitlab-ci: Split build into two halves

Currently we are having quite some trouble keeping up with our build volume due
to the number of configurations we have. I've split the pipeline into two
halves:

 * build, which builds just vanilla deb9-linux with make and hadrian
 * full-build, which builds everything else

This will trade-off some latency to more efficient use of our builders.

6 months agogitlab-ci: Fix locale on Darwin only
Ben Gamari [Wed, 19 Dec 2018 14:06:01 +0000 (09:06 -0500)] 
gitlab-ci: Fix locale on Darwin only

Setting LANG causes trouble on Debian.

6 months agoFix warning that 'hugs-options' isn't supported any more
Gabor Greif [Wed, 12 Dec 2018 12:56:50 +0000 (13:56 +0100)] 
Fix warning that 'hugs-options' isn't supported any more

6 months agogitlab-ci: Ensure that locale is set
Ben Gamari [Wed, 19 Dec 2018 00:50:06 +0000 (19:50 -0500)] 
gitlab-ci: Ensure that locale is set

6 months agogitlab-ci: Make Windows PATH more robust
Ben Gamari [Tue, 18 Dec 2018 23:51:27 +0000 (18:51 -0500)] 
gitlab-ci: Make Windows PATH more robust

6 months agogitlab-ci: Remove CircleCI configuration
Ben Gamari [Tue, 18 Dec 2018 22:38:07 +0000 (17:38 -0500)] 
gitlab-ci: Remove CircleCI configuration

Our CircleCI builds will fail anyways without large instances.

6 months agogitlab-ci: Try fixing Windows build
Ben Gamari [Tue, 18 Dec 2018 22:36:55 +0000 (17:36 -0500)] 
gitlab-ci: Try fixing Windows build

For some reason curl isn't found on the new builder.

6 months agocircleci: Fix LLVM build
Ben Gamari [Tue, 18 Dec 2018 22:35:43 +0000 (17:35 -0500)] 
circleci: Fix LLVM build

Might as well make sure it works before we retire it.

6 months agoAdd some complexities to Data.List documentation (#15003)
Sven Tennie [Sun, 16 Dec 2018 16:25:24 +0000 (17:25 +0100)] 
Add some complexities to Data.List documentation (#15003)

Namely for:
- stripPrefix
- isPrefixOf
- intersperse
- tails
- map
- scanl
- scanl1
- scanl'
- scanr
- scanr1
- zip
- zipWith

Add examples to `zipWith` and `map`.

7 months agohadrian: introduce make-user-oriented docs
Alp Mestanogullari [Tue, 18 Dec 2018 04:38:20 +0000 (23:38 -0500)] 
hadrian: introduce make-user-oriented docs

This commit introduces Hadrian docs specifically
targeted at GHC devs who are used to building GHC with the make
build system, adapting a good chunk of the following quickstart
page we wrote over the last few months:

  https://ghc.haskell.org/trac/ghc/wiki/Building/Hadrian/QuickStart

Reviewers: snowleopard, bgamari

Reviewed By: snowleopard

Subscribers: rwbarton, carter

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

7 months agoAdd missing comma in 'libdw' configure check
Alec Theriault [Tue, 18 Dec 2018 04:36:31 +0000 (23:36 -0500)] 
Add missing comma in 'libdw' configure check

Fix a bug from cb882fc993b4972f7f212b291229ef9e9ade0af9. Without the
comma, all non-diverging codepaths set 'UseLibdw=NO'.

Reviewers: bgamari, nh2

Reviewed By: nh2

Subscribers: rwbarton, erikd, carter

GHC Trac Issues: #15968

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

7 months agomake QSem and QSemN newtypes
chessai [Tue, 18 Dec 2018 04:36:20 +0000 (23:36 -0500)] 
make QSem and QSemN newtypes

Reviewers: RyanGlScott, ekmett, hvr, bgamari

Reviewed By: bgamari

Subscribers: rwbarton, carter

GHC Trac Issues: #15995

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

7 months agoFix ghci crash when starting with -fno-implicit-import-qualified
Zejun Wu [Tue, 18 Dec 2018 04:35:44 +0000 (23:35 -0500)] 
Fix ghci crash when starting with -fno-implicit-import-qualified

`ghci -fno-implicit-import-qualified` didn't start with error message:

```
GHCi, version 8.6.2: http://www.haskell.org/ghc/  :? for help

<interactive>:1:6: error:
    Not in scope: ‘System.IO.hSetBuffering’
        No module named ‘System.IO’ is imported.

...
```

This change fixes it and update test T2452 to cover this.

Test Plan:
  TEST=T2452 make accept

harbormaster build runs

Reviewers: simonmar, bgamari, RyanGlScott

Reviewed By: simonmar

Subscribers: rwbarton, carter

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

7 months agogitlab-ci: Fix spelling of GIT_SUBMODULE_STRATEGY
Ben Gamari [Tue, 18 Dec 2018 03:58:43 +0000 (22:58 -0500)] 
gitlab-ci: Fix spelling of GIT_SUBMODULE_STRATEGY

7 months agocircleci: Don't use xlarge instances
Ben Gamari [Tue, 18 Dec 2018 03:38:39 +0000 (22:38 -0500)] 
circleci: Don't use xlarge instances

As discussed on ghc-devops, CircleCI is changing their billing policy to require
users of instances larger than `medium` to use a paid account. Consequently
these instances will no longer be available to us starting tomorrow.

7 months agodarwin: Build with in-tree GMP
Ben Gamari [Tue, 18 Dec 2018 00:56:08 +0000 (19:56 -0500)] 
darwin: Build with in-tree GMP

7 months agogitlab: Drop submodules hack
Ben Gamari [Tue, 18 Dec 2018 00:41:22 +0000 (19:41 -0500)] 
gitlab: Drop submodules hack

7 months agogitlab-ci/deb8-hadrian: Fix submodule paths
Ben Gamari [Tue, 18 Dec 2018 00:39:32 +0000 (19:39 -0500)] 
gitlab-ci/deb8-hadrian: Fix submodule paths

7 months agoStgCRun: Disable unwinding on Darwin
Ben Gamari [Mon, 17 Dec 2018 00:10:07 +0000 (19:10 -0500)] 
StgCRun: Disable unwinding on Darwin

See #15207.

7 months agogitlab-ci: Use cabal-install 2.4 on Darwin
Ben Gamari [Mon, 17 Dec 2018 01:32:45 +0000 (20:32 -0500)] 
gitlab-ci: Use cabal-install 2.4 on Darwin

7 months agoghci: Fix unused binder warnings when building with integer-simple
Ben Gamari [Sun, 16 Dec 2018 19:10:54 +0000 (14:10 -0500)] 
ghci: Fix unused binder warnings when building with integer-simple

7 months agogitlab-ci: Run Windows builds via make as well
Ben Gamari [Sun, 16 Dec 2018 16:30:30 +0000 (11:30 -0500)] 
gitlab-ci: Run Windows builds via make as well

7 months agogitlab-ci: Disable Hadrian linting on Windows
Ben Gamari [Sun, 16 Dec 2018 16:26:46 +0000 (11:26 -0500)] 
gitlab-ci: Disable Hadrian linting on Windows

The lint checks currently fail due to #15950.

7 months agogitlab-ci: Introduce nightly builds
Ben Gamari [Sun, 16 Dec 2018 15:13:01 +0000 (10:13 -0500)] 
gitlab-ci: Introduce nightly builds

These run slowtest and their artifacts are preserved for two years.

7 months agogitlab-ci: Expire artifacts more aggressively
Ben Gamari [Sun, 16 Dec 2018 15:12:39 +0000 (10:12 -0500)] 
gitlab-ci: Expire artifacts more aggressively

Namely after 2 weeks

7 months agoStomp a few typos and grammaros
Gabor Greif [Sat, 15 Dec 2018 11:44:59 +0000 (12:44 +0100)] 
Stomp a few typos and grammaros

Also use 'id'

7 months agoHandle :cd in external interpreter in a more robust way
Zejun Wu [Mon, 17 Dec 2018 06:16:00 +0000 (01:16 -0500)] 
Handle :cd in external interpreter in a more robust way

We used to enqueue another command to change directory in the external
interpreter subprocess, this is not as robust as:

* it can fail with -fno-implict-import-qualified;
* it doesn't work when we `setGHCiMonad` to something other than `IO`.

Neither of them works if `directory` package is hidden though.

Test Plan:
```
$ inplace/bin/ghc-stage2 --interactive # -fexternal-interpreter
GHCi, version 8.7.20181213: http://www.haskell.org/ghc/  :? for help
Prelude> :cd ..
Prelude> System.Directory.getCurrentDirectory
"/data/users/watashi"
Prelude> :!pwd
/data/users/watashi
Prelude>
Leaving GHCi.
```

  ./validate

Reviewers: simonmar, bgamari, RyanGlScott

Reviewed By: simonmar

Subscribers: rwbarton, carter

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

7 months agoHadrian: introduce userDefaultFlavour, making default flavour overridable
Alp Mestanogullari [Mon, 17 Dec 2018 06:15:45 +0000 (01:15 -0500)] 
Hadrian: introduce userDefaultFlavour, making default flavour overridable

This patch introduces the `userDefaultFlavour` user setting. It should
be the name of the default flavour to use when no --flavour argument is
passed. Before this patch, we would just always default to... the
`default` flavour. With this patch, we default to whatever Flavour whose
name is `userDefaultFlavour`, therefore providing a way for users to
"persist" their choice of flavour, not having to repeat --flavour=[...]
in every hadrian command.

Test Plan:
Set `userDefaultFlavour = "quickest"`, run `hadrian/build.sh`, check
that the quickest flavour is indeed picked.

Reviewers: snowleopard, bgamari

Reviewed By: snowleopard

Subscribers: mpickering, rwbarton, carter

GHC Trac Issues: #15890

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

7 months agogitlab-ci: Enable Windows builds
Ben Gamari [Sun, 16 Dec 2018 00:40:26 +0000 (19:40 -0500)] 
gitlab-ci: Enable Windows builds

7 months agoMerge sections in profiling .a to .p_o and use it whenever it exists
Zejun Wu [Mon, 17 Dec 2018 00:27:18 +0000 (00:27 +0000)] 
Merge sections in profiling .a to .p_o and use it whenever it exists

Summary:
We do this for vanilla way already.
Let's also merge sections for profiling way and use it instead of the .a
library when it exists.

Test Plan:
```
 $ inplace/bin/ghc-stage2 --interactive -prof -fexternal-interpreter
 GHCi, version 8.7.20180921: http://www.haskell.org/ghc/  :? for help
 Prelude> pid <- System.Posix.Process.getProcessID
 Prelude> maps <- readFile $ "/proc/" ++ show pid ++ "/maps"
 Prelude> pid
 3807346
 Prelude> putStrLn $ unlines $ take 20 $ lines maps
 00400000-02103000 r-xp 00000000 00:1a 199277344
 /data/users/watashi/ghc/inplace/lib/bin/ghc-iserv-prof
 02104000-02106000 r--p 01d03000 00:1a 199277344
 /data/users/watashi/ghc/inplace/lib/bin/ghc-iserv-prof
 02106000-02417000 rw-p 01d05000 00:1a 199277344
 /data/users/watashi/ghc/inplace/lib/bin/ghc-iserv-prof
 02417000-0280a000 rw-p 00000000 00:00 0
 [heap]
 40098000-400b0000 rwxp 000d2000 00:1a 199276023
 /data/users/watashi/ghc/libraries/bytestring/dist-install/build/HSbytestring-0.10.8.2.p_o
 400b7000-400d8000 rwxp 00000000 00:00 0
 401d1000-401d2000 rwxp 000e9000 00:1a 199276023
 /data/users/watashi/ghc/libraries/bytestring/dist-install/build/HSbytestring-0.10.8.2.p_o
 40415000-40419000 rwxp 0000b000 00:1a 199275165
 /data/users/watashi/ghc/libraries/deepseq/dist-install/build/HSdeepseq-1.4.4.0.p_o
 404f8000-40526000 rwxp 000af000 00:1a 199274234
 /data/users/watashi/ghc/libraries/ghc-prim/dist-install/build/HSghc-prim-0.5.3.p_o
```

Reviewers: simonmar, bgamari, austin, hvr

Reviewed By: simonmar

Subscribers: rwbarton, carter

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

7 months agogitlab-ci: Add aarch64 target
Ben Gamari [Sat, 15 Dec 2018 06:20:16 +0000 (01:20 -0500)] 
gitlab-ci: Add aarch64 target

7 months agohadrian: Pass integer_backend to testsuite driver
Ben Gamari [Fri, 14 Dec 2018 20:11:54 +0000 (15:11 -0500)] 
hadrian: Pass integer_backend to testsuite driver

7 months agoUse https links in user-facing startup and error messages
Ingo Blechschmidt [Fri, 14 Dec 2018 16:10:56 +0000 (11:10 -0500)] 
Use https links in user-facing startup and error messages

I consider myself lucky that in my circle of friends, `http` urls (as
opposed to `https` urls) are frowned upon in that we generally
apologize in the rase cases that we share an `http` url.

This pull request changes `http` links into their `https` analogues in
the following places:

* In the GHCI startup message (and parts of the User's Guide, where
there are verbatim transcripts of GHCi sessions).
* In a couple of error messages, asking the user to report a bug.

(I also took the liberty to change a single space before the reportabug
url into two spaces, harmonizing this occurence with the others.)

I'm not trying to start a war. I just had a moment to spare and felt
like preparing this diff. Merge or don't merge as you wish!

Reviewers: bgamari, erikd, simonmar

Subscribers: goldfire, rwbarton, carter

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

7 months agorts: Annotate fallthroughs in AArch64 linker
Ben Gamari [Fri, 14 Dec 2018 14:55:15 +0000 (09:55 -0500)] 
rts: Annotate fallthroughs in AArch64 linker

7 months agoUpdate -F RTS help:
Ömer Sinan Ağacan [Fri, 14 Dec 2018 04:31:00 +0000 (07:31 +0300)] 
Update -F RTS help:

- Add default value
- Update the help line as multiple short lines instead of one long line,
  for consistency with other lines.

Reviewers: simonmar, bgamari, erikd

Reviewed By: bgamari

Subscribers: rwbarton, carter

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

7 months agogitlab-ci: Bump Darwin boot compiler to 8.6.3
Ben Gamari [Thu, 13 Dec 2018 23:00:28 +0000 (18:00 -0500)] 
gitlab-ci: Bump Darwin boot compiler to 8.6.3

7 months agogitlab-ci: Add linters
Ben Gamari [Thu, 13 Dec 2018 18:53:27 +0000 (13:53 -0500)] 
gitlab-ci: Add linters

These are taken from our previous arcanist linters as well as the
gitolite hooks but with some heavy refactoring.

7 months agollvm-targets: Add amd64-unknown-freebsd triple
Ben Gamari [Thu, 13 Dec 2018 18:25:05 +0000 (13:25 -0500)] 
llvm-targets: Add amd64-unknown-freebsd triple

396aac4c65a47b6252e0a73d2a3066e924d53f11 added the
amd64-portbld-freebsd triple but #15718 suggests that we should rather
be using x86_64-unknown-freebsd. Not knowing which is correct I've left
the amd64-portbld- triplet in place.