ghc.git
10 months agoplugins10 no longer broken
Christiaan Baaij [Thu, 22 Nov 2018 16:49:37 +0000 (11:49 -0500)] 
plugins10 no longer broken

Reviewers: bgamari, tdammers

Reviewed By: tdammers

Subscribers: rwbarton, carter

GHC Trac Issues: #15216

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

10 months agorts.cabal.in: force inclusion of findPtr/_findPtr symbol only with debug flag
Alp Mestanogullari [Thu, 22 Nov 2018 16:47:48 +0000 (11:47 -0500)] 
rts.cabal.in: force inclusion of findPtr/_findPtr symbol only with debug flag

The previous strategy caused problems on Windows, as pointed out
at [1]

[1]: https://phabricator.haskell.org/rGHC900c47f88784#133905

Reviewers: Phyx, bgamari, erikd, simonmar

Reviewed By: Phyx

Subscribers: rwbarton, carter

GHC Trac Issues: #15671

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

10 months agoHadrian: work around Cabal's/GHC's different Arch/OS strings
Alec Theriault [Thu, 22 Nov 2018 16:47:27 +0000 (11:47 -0500)] 
Hadrian: work around Cabal's/GHC's different Arch/OS strings

The path to the 'include' subdirectory of 'rts' includes a folder that
whose name is generated by Cabal and mentiones the architecture and OS.
For example:

    _build/stage1/lib/x86_64-osx-ghc-8.7.20181120/rts-1.0/include

Hadrian needs to be aware that Cabal renders architectures and OSes in
a slightly different way than GHC. There is already symmetric logic in
Cabal (for working with GHC environment files, which follow GHC's naming
conventions).

Test Plan: ./hadrian/build.sh -c "binary-dist" # on mac

Reviewers: snowleopard, alpmestan, bgamari

Reviewed By: snowleopard

Subscribers: rwbarton, carter

GHC Trac Issues: #15922

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

10 months agorts: fix Windows megablock allocator
Tamar Christina [Thu, 22 Nov 2018 16:47:10 +0000 (11:47 -0500)] 
rts: fix Windows megablock allocator

The megablock allocator does not currently check that after aligning the
free region if it still has enough space to actually do the allocation.

This causes it to return a memory region which it didn't fully allocate
itself.  Even worse, it can cause it to return a block with a region
that will be present in two allocation pools.

This causes if you're lucky an error from the OS that you're committing
memory that has never been reserved, or causes random heap corruption.

This change makes it consider the alignment as well.

Test Plan: ./validate , testcase testmblockalloc

Reviewers: bgamari, erikd, simonmar

Reviewed By: simonmar

Subscribers: rwbarton, carter

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

10 months agoDon't reverse explicit export lists during renaming
Simon Jakobi [Thu, 22 Nov 2018 16:45:35 +0000 (11:45 -0500)] 
Don't reverse explicit export lists during renaming

This will be useful for Hi Haddock / D5067.

Previously any export list in 'tcg_rn_exports' would be in reverse
order.

Also remove a redundant setSrcSpan.

Test Plan: ./validate

Reviewers: bgamari

Subscribers: rwbarton, carter

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

10 months agoFixup the new code layout patch for SplitObjs.
klebinger.andreas@gmx.at [Thu, 22 Nov 2018 16:43:53 +0000 (11:43 -0500)] 
Fixup the new code layout patch for SplitObjs.

When splitting objects we sometimes generate
dummy CmmProcs containing bottom in some fields.

Code introduced in the new code layout patch looked
at these which blew up the compiler. Now we instead
check first if the function actually contains code.

Reviewers: bgamari

Subscribers: simonpj, rwbarton, carter

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

10 months agotestuite: update more windows tests outputs
Tamar Christina [Thu, 22 Nov 2018 16:43:37 +0000 (11:43 -0500)] 
testuite: update more windows tests outputs

Test Plan: ./validate

Reviewers: bgamari, simonmar

Subscribers: rwbarton, carter

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

10 months agorts: Fix bss initialization on Windows
Tamar Christina [Thu, 22 Nov 2018 16:43:15 +0000 (11:43 -0500)] 
rts: Fix bss initialization on Windows

This patch fixes BSS initialization such that it is
initialized to 0 as you'd expect.

Test Plan: ./validate, test T7040_ghci

Reviewers: bgamari, erikd, simonmar

Reviewed By: bgamari

Subscribers: rwbarton, carter

GHC Trac Issues: #15669

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

10 months agorts/M32Alloc: Abort if m32 linker mmap fails
Ben Gamari [Sat, 10 Nov 2018 20:35:37 +0000 (15:35 -0500)] 
rts/M32Alloc: Abort if m32 linker mmap fails

Previously we should just blinding dereference a NULL pointer.

10 months agoAdd test for #15437
Matthew Pickering [Thu, 22 Nov 2018 16:38:10 +0000 (11:38 -0500)] 
Add test for #15437

Reviewers: bgamari

Subscribers: rwbarton, carter

GHC Trac Issues: #15437

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

10 months agobase: Mention openFile throwing does-not-exist-errors on FIFOs
Ben Gamari [Thu, 22 Nov 2018 16:33:39 +0000 (11:33 -0500)] 
base: Mention openFile throwing does-not-exist-errors on FIFOs

As discussed in #15715, the POSIX specification specifies that
attempting to open a FIFO in write-only mode when the FIFO has no
readers will fail with -ENOENT.

[skip ci]

Test Plan: Read it

Reviewers: hvr

Subscribers: rwbarton, carter

GHC Trac Issues: #15715

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

10 months agoFix GhostScript detection (Trac #15856)
Krzysztof Gogolewski [Thu, 22 Nov 2018 16:32:55 +0000 (11:32 -0500)] 
Fix GhostScript detection (Trac #15856)

The option `confdir` (used in GhostScript test) was set correctly
via `--config` in `test.mk` and incorrectly via `config/ghc`.
AFAICT, some time ago this was working because the
incorrect assignment was done first, and later it broke.

Hardian doesn't pass `confdir`. I removed `confdir` and use
`config.top` to determine the directory of the
`good.ps` and `bad.ps` files. This is simpler.

I also removed some redundant assignments in `config/ghc`.

Test Plan: manually set config.have_profiling and make test

Reviewers: bgamari

Subscribers: rwbarton, carter

GHC Trac Issues: #15856

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

10 months agoRename literal constructors
Sylvain Henry [Thu, 22 Nov 2018 16:31:16 +0000 (11:31 -0500)] 
Rename literal constructors

In a previous patch we replaced some built-in literal constructors
(MachInt, MachWord, etc.) with a single LitNumber constructor.

In this patch we replace the `Mach` prefix of the remaining constructors
with `Lit` for consistency (e.g., LitChar, LitLabel, etc.).

Sadly the name `LitString` was already taken for a kind of FastString
and it would become misleading to have both `LitStr` (literal
constructor renamed after `MachStr`) and `LitString` (FastString
variant). Hence this patch renames the FastString variant `PtrString`
(which is more accurate) and the literal string constructor now uses the
least surprising `LitString` name.

Both `Literal` and `LitString/PtrString` have recently seen breaking
changes so doing this kind of renaming now shouldn't harm much.

Reviewers: hvr, goldfire, bgamari, simonmar, jrtc27, tdammers

Subscribers: tdammers, rwbarton, thomie, carter

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

10 months agousers guide: We no longer build libraries with -split-objs
Ben Gamari [Thu, 22 Nov 2018 00:17:41 +0000 (19:17 -0500)] 
users guide: We no longer build libraries with -split-objs

We now generally use split-sections instead.

10 months agoMinor performance optimisation
Gabor Greif [Wed, 21 Nov 2018 17:30:49 +0000 (18:30 +0100)] 
Minor performance optimisation

only concat once

10 months agoanother minor refactoring
Gabor Greif [Tue, 20 Nov 2018 15:35:08 +0000 (16:35 +0100)] 
another minor refactoring

10 months agoFix heap corruption during stable name allocation
Ömer Sinan Ağacan [Wed, 21 Nov 2018 17:03:38 +0000 (20:03 +0300)] 
Fix heap corruption during stable name allocation

See #15906 for the problem. To fix we simply call `allocate()` instead of
`ALLOC_PRIM()`. `allocate()` does not trigger GC when the nursery is full,
instead it extends it.

Test Plan:
This validates. memo001 now passes with `-debug` compile parameter. I'll add
another test that runs memo001 with `-debug` once I figure out how to use
stdout files for multiple tests.

Reviewers: simonmar, bgamari, erikd

Reviewed By: simonmar

Subscribers: rwbarton, carter

GHC Trac Issues: #15906

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

10 months agoRemove redundant check in cgCase
Ömer Sinan Ağacan [Tue, 20 Nov 2018 13:30:15 +0000 (16:30 +0300)] 
Remove redundant check in cgCase

D5339 (part of D5324) removed the dead case binder analysis done during
CoreToStg so this condition always holds now.

Test Plan: Validated locally.

Reviewers: sgraf, bgamari, simonmar

Subscribers: rwbarton, carter

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

10 months agoDon't track free variables in STG syntax by default
Sebastian Graf [Mon, 19 Nov 2018 16:48:44 +0000 (17:48 +0100)] 
Don't track free variables in STG syntax by default

Summary:
Currently, `CoreToStg` annotates `StgRhsClosure`s with their set of non-global
free variables.  This free variable information is only needed in the final
code generation step (i.e. `StgCmm.codeGen`), which leads to transformations
such as `StgCse` and `StgUnarise` having to maintain this information.

This is tiresome and unnecessary, so this patch introduces a trees-to-grow-like
approach that only introduces the free variable set into the syntax tree in the
code gen pass, along with a free variable analysis on STG terms to generate
that information.

Fixes #15754.

Reviewers: simonpj, osa1, bgamari, simonmar

Reviewed By: osa1

Subscribers: rwbarton, carter

GHC Trac Issues: #15754

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

11 months agohadrian: make it possible to run the testsuite with quickest and quick
Alp Mestanogullari [Mon, 19 Nov 2018 15:12:56 +0000 (16:12 +0100)] 
hadrian: make it possible to run the testsuite with quickest and quick

More generally, we so far assumed that the testsuite would be executed
with a flavour that's as comprehensive as perf in terms of available RTS
and library flavours (at least vanilla + dynamic + prof). This would
manifest itself concretely by needing 3 "ways" of the iserv program,
unconditionally.

We now only require the ways among vanilla, dynamic and prof that we
can find in our current Flavour's rtsWays.

Test Plan:
hadrian/build.sh --flavour={quick, quickest} test now goes through
(with a few failing tests, of course).

Reviewers: bgamari, tdammers

Reviewed By: tdammers

Subscribers: mpickering, RyanGlScott, rwbarton, carter

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

11 months agoeventlog: Log the current stack size when stack overflows
Matthew Pickering [Mon, 19 Nov 2018 11:34:13 +0000 (11:34 +0000)] 
eventlog: Log the current stack size when stack overflows

Reviewers: maoe, bgamari, erikd, simonmar

Reviewed By: simonmar

Subscribers: rwbarton, carter, sjorn3

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

11 months agoTiny refactor in exitScheduler
Ömer Sinan Ağacan [Mon, 19 Nov 2018 07:28:57 +0000 (10:28 +0300)] 
Tiny refactor in exitScheduler

11 months agoFix typo in docs
Chris Done [Sun, 18 Nov 2018 11:44:53 +0000 (11:44 +0000)] 
Fix typo in docs

I've been reading this line of docs for years and it ruffles my feathers.

11 months agoIntroduce Int16# and Word16#
Abhiroop Sarkar [Mon, 5 Nov 2018 17:06:58 +0000 (12:06 -0500)] 
Introduce Int16# and Word16#

This builds off of D4475.

Bumps binary submodule.

Reviewers: carter, AndreasK, hvr, goldfire, bgamari, simonmar

Subscribers: rwbarton, thomie

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

11 months agoFix trac #15702, as a followon to fix for #13704.
Chris Smith [Sat, 17 Nov 2018 11:40:23 +0000 (12:40 +0100)] 
Fix trac #15702, as a followon to fix for #13704.

Summary:
The effect of this change is that -main-is changes the default
export list for the main module, but does not apply the same
change to non-main modules.  This fixes some cases where -main-is
was used to wrap a module that expected that default behavior
(exporting `main`, even when that wasn't the main entry point
name).

Reviewers: mpickering, monoidal, bgamari

Subscribers: rwbarton, carter

GHC Trac Issues: #13704, #15702

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

11 months agoMinor refactoring
Gabor Greif [Thu, 8 Feb 2018 14:54:20 +0000 (15:54 +0100)] 
Minor refactoring

PR: https://github.com/ghc/ghc/pull/223/

11 months agoRemove -Wamp flag (#11477)
roland [Sat, 17 Nov 2018 11:33:00 +0000 (12:33 +0100)] 
Remove -Wamp flag (#11477)

Summary:
Add line
  "The deprecated ghc-flag -Wamp has been removed."
to the release notes for 8.8.1

Reviewers: bgamari, monoidal

Reviewed By: monoidal

Subscribers: rwbarton, carter

GHC Trac Issues: #11477

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

11 months agoMore compact Outputable instance for `Uniq(D)Set`
Sebastian Graf [Sat, 17 Nov 2018 11:31:29 +0000 (12:31 +0100)] 
More compact Outputable instance for `Uniq(D)Set`

Summary:
Until now, `UniqSet` and `UniqDSet` inherited their `Outputable`
instances from `UniqFM` and `UniqDFM`.

That made for verbose and redundant output. This patch rectifies
that by pretty-printing these sets in common math notation.
E.g., previously, we would render `UniqSet`s like this:

    [s2fE :-> x_s2fE, s2fF :-> y_s2fF, s2fG :-> z_s2fG, s2fH :-> g_s2fH]

Now, they're are printed like this:

    {x_s2fE, y_s2fF, z_s2fG, g_s2fH}

Reviewers: simonpj, bgamari, AndreasK, dfeuer, osa1

Reviewed By: osa1

Subscribers: osa1, rwbarton, carter

GHC Trac Issues: #15879

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

11 months agoSpeed up MonadUtils.mapMaybeM
Simon Jakobi [Sat, 17 Nov 2018 11:30:12 +0000 (12:30 +0100)] 
Speed up MonadUtils.mapMaybeM

Summary: This version is nearly 2x faster according to a few small benchmarks.

Reviewers: bgamari, monoidal

Reviewed By: monoidal

Subscribers: rwbarton, carter

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

11 months agoFix #12906: GHC fails to typecheck Main module without main
Roland Senn [Sat, 17 Nov 2018 11:24:27 +0000 (12:24 +0100)] 
Fix #12906: GHC fails to typecheck Main module without main

Summary: The function fail is no longer called immediately
after adding the no-main error message to the TcM monad.
The rest of the module will be typechecked.

Test Plan: make test TEST=T12906

Reviewers: dfeuer, RyanGlScott, ezyang, mpickering, bgamari

Reviewed By: RyanGlScott

Subscribers: rwbarton, carter

GHC Trac Issues: #12906

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

11 months agoFix #12525: Remove derived bindings from the TyThings from getBindings
Roland Senn [Sat, 17 Nov 2018 11:22:23 +0000 (12:22 +0100)] 
Fix #12525: Remove derived bindings from the TyThings from getBindings

Summary:
Remove derived OccNames from the list of TyThings returned by the function GHC.getBindings.
Therefore the output of the `:show bindings `command will not contain names generated by GHC.

Test Plan: make test TEST=T12525

Reviewers: austin, hvr, alanz, angerman, thomie, bgamari, osa1

Reviewed By: osa1

Subscribers: simonpj, osa1, rwbarton, carter

GHC Trac Issues: #12525

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

11 months agoBuilding GHC with hadrian on FreeBSD
Krzysztof Gogolewski [Sat, 17 Nov 2018 11:21:51 +0000 (12:21 +0100)] 
Building GHC with hadrian on FreeBSD

Summary: I'm currently trying to make `hadrian` work as a build system
on FreeBSD (https://ghc.haskell.org/trac/ghc/ticket/15860).
I'm still having some issues with `libgmp` but one can get a working
`ghc` using `--integer-simple` and this patch.

Reviewers: bgamari, erikd, alpmestan

Reviewed By: alpmestan

Subscribers: rwbarton, carter

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

11 months agofix T15898
Alp Mestanogullari [Sat, 17 Nov 2018 10:34:07 +0000 (11:34 +0100)] 
fix T15898

Summary:
validate is currently broken [1] on master, this patches addresses
the failure by removing an expected stdout file for T15898 since no output
is generated there.

[1]: https://circleci.com/gh/ghc/ghc/11416

Test Plan: TEST=T15898 ./validate

Reviewers: bgamari

Subscribers: rwbarton, carter

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

11 months agoNCG: New code layout algorithm.
Andreas Klebinger [Sat, 17 Nov 2018 10:20:36 +0000 (11:20 +0100)] 
NCG: New code layout algorithm.

Summary:
This patch implements a new code layout algorithm.
It has been tested for x86 and is disabled on other platforms.

Performance varies slightly be CPU/Machine but in general seems to be better
by around 2%.
Nofib shows only small differences of about +/- ~0.5% overall depending on
flags/machine performance in other benchmarks improved significantly.

Other benchmarks includes at least the benchmarks of: aeson, vector, megaparsec, attoparsec,
containers, text and xeno.

While the magnitude of gains differed three different CPUs where tested with
all getting faster although to differing degrees. I tested: Sandy Bridge(Xeon), Haswell,
Skylake

* Library benchmark results summarized:
  * containers: ~1.5% faster
  * aeson: ~2% faster
  * megaparsec: ~2-5% faster
  * xml library benchmarks: 0.2%-1.1% faster
  * vector-benchmarks: 1-4% faster
  * text: 5.5% faster

On average GHC compile times go down, as GHC compiled with the new layout
is faster than the overhead introduced by using the new layout algorithm,

Things this patch does:

* Move code responsilbe for block layout in it's own module.
* Move the NcgImpl Class into the NCGMonad module.
* Extract a control flow graph from the input cmm.
* Update this cfg to keep it in sync with changes during
  asm codegen. This has been tested on x64 but should work on x86.
  Other platforms still use the old codelayout.
* Assign weights to the edges in the CFG based on type and limited static
  analysis which are then used for block layout.
* Once we have the final code layout eliminate some redundant jumps.

  In particular turn a sequences of:
      jne .foo
      jmp .bar
    foo:
  into
      je bar
    foo:
      ..

Test Plan: ci

Reviewers: bgamari, jmct, jrtc27, simonmar, simonpj, RyanGlScott

Reviewed By: RyanGlScott

Subscribers: RyanGlScott, trommler, jmct, carter, thomie, rwbarton

GHC Trac Issues: #15124

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

11 months agoFix a typo in the description of -fabstract-refinement-hole-fits
Dmitry Ivanov [Thu, 15 Nov 2018 09:36:09 +0000 (10:36 +0100)] 
Fix a typo in the description of -fabstract-refinement-hole-fits

11 months agouser's guide: typo in ViewPatterns example
Ben Price [Sun, 11 Nov 2018 17:19:57 +0000 (17:19 +0000)] 
user's guide: typo in ViewPatterns example

11 months agoSome assertions and comments in scheduler
Ömer Sinan Ağacan [Sat, 17 Nov 2018 04:59:15 +0000 (07:59 +0300)] 
Some assertions and comments in scheduler

Test Plan:
I can't validate this because of existing errors with the debug runtime. I'll
see if this introduces any new failures.

Reviewers: simonmar, bgamari, erikd

Reviewed By: simonmar

Subscribers: rwbarton, carter

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

11 months agoAdd missing stderr file for Trac #15898
Simon Peyton Jones [Fri, 16 Nov 2018 11:39:09 +0000 (11:39 +0000)] 
Add missing stderr file for Trac #15898

11 months agoMore efficient, non-allocating unsafeLookupStaticPtr
Ömer Sinan Ağacan [Fri, 16 Nov 2018 10:52:11 +0000 (13:52 +0300)] 
More efficient, non-allocating unsafeLookupStaticPtr

We now allocate the key to spt on C stack rather than in Haskell heap,
avoiding allocating in `unsafeLookupStaticPtr`. This should be slightly
more efficient.

Test Plan: Validated locally

Reviewers: simonmar, hvr, bgamari, erikd

Reviewed By: simonmar

Subscribers: rwbarton, carter

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

11 months agobump haddock submodule
Alp Mestanogullari [Fri, 16 Nov 2018 08:50:27 +0000 (09:50 +0100)] 
bump haddock submodule

Summary:
ae2c9b40f5b6bf272251d1f4107c60003f541b62 introduced some changes that
broke haddock, [1] fixed them and this patch bumps the haddock submodule
to include the fixes.

[1]: https://github.com/haskell/haddock/pull/970

Test Plan: build haddock (make or hadrian)

Reviewers: bgamari, AndreasK

Reviewed By: AndreasK

Subscribers: osa1, AndreasK, rwbarton, carter

GHC Trac Issues: #15900

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

11 months agoSmarter HsType pretty-print for promoted datacons
Simon Peyton Jones [Thu, 15 Nov 2018 09:02:11 +0000 (09:02 +0000)] 
Smarter HsType pretty-print for promoted datacons

Fix Trac #15898, by being smarter about when to print
a space before a promoted data constructor, in a HsType.
I had to implement a mildly tiresome function
    HsType.lhsTypeHasLeadingPromotionQuote
It has multiple cases, of course, but it's very simple.

The patch improves the error-message output in a bunch of
cases, and (to my surprise) actually fixes a bug in the
output of T14343 (Trac #14343), thus

  -  In the expression: _ :: Proxy '('( 'True,  'False),  'False)
  +  In the expression: _ :: Proxy '( '( 'True, 'False), 'False)

I discovered that there were two copies of the PromotionFlag
type (a boolean, with helpfully named data cons), one in
IfaceType and one in HsType.  So I combined into one,
PromotionFlag, and moved it to BasicTypes.  That's why
quite a few files are touched, but it's all routine.

11 months agoComments adding to the fix for Trac #15859
Simon Peyton Jones [Tue, 6 Nov 2018 09:10:30 +0000 (09:10 +0000)] 
Comments adding to the fix for Trac #15859

11 months agoComments only, about polykinded TyConApps
Simon Peyton Jones [Mon, 5 Nov 2018 13:48:27 +0000 (13:48 +0000)] 
Comments only, about polykinded TyConApps

See Trac #15704 comment:8ff

11 months agoFix a bug in SRT generation (#15892)
Simon Marlow [Thu, 15 Nov 2018 03:31:35 +0000 (06:31 +0300)] 
Fix a bug in SRT generation (#15892)

Summary:
The logic in `Note [recursive SRTs]` was correct. However, my
implementation of it wasn't: I got the associativity of
`Set.difference` wrong, which led to an extremely subtle and difficult
to find bug.

Fortunately now we have a test case. I was able to cut down the code
to something manageable, and I've added it to the test suite.

Test Plan:
Before (using my stage 1 compiler without the fix):

```
====> T15892(normal) 1 of 1 [0, 0, 0]
cd "T15892.run" &&  "/home/smarlow/ghc/inplace/bin/ghc-stage1" -o T15892
T15892.hs -dcore-lint -dcmm-lint -no-user-package-db -rtsopts
-fno-warn-missed-specialisations -fshow-warning-groups
-fdiagnostics-color=never -fno-diagnostics-show-caret -Werror=compat
-dno-debug-output  -O
cd "T15892.run" && ./T15892  +RTS -G1 -A32k -RTS
Wrong exit code for T15892(normal)(expected 0 , actual 134 )
Stderr ( T15892 ):
T15892: internal error: evacuate: strange closure type 0
    (GHC version 8.7.20181113 for x86_64_unknown_linux)
    Please report this as a GHC bug:  http://www.haskell.org/ghc/reportabug
Aborted (core dumped)
*** unexpected failure for T15892(normal)
=====> T15892(g1) 1 of 1 [0, 1, 0]
cd "T15892.run" &&  "/home/smarlow/ghc/inplace/bin/ghc-stage1" -o T15892
T15892.hs -dcore-lint -dcmm-lint -no-user-package-db -rtsopts
-fno-warn-missed-specialisations -fshow-warning-groups
-fdiagnostics-color=never -fno-diagnostics-show-caret -Werror=compat
-dno-debug-output  -O
cd "T15892.run" && ./T15892 +RTS -G1 -RTS +RTS -G1 -A32k -RTS
Wrong exit code for T15892(g1)(expected 0 , actual 134 )
Stderr ( T15892 ):
T15892: internal error: evacuate: strange closure type 0
    (GHC version 8.7.20181113 for x86_64_unknown_linux)
    Please report this as a GHC bug:  http://www.haskell.org/ghc/reportabug
Aborted (core dumped)
```

After (using my stage 2 compiler with the fix):

```
=====> T15892(normal) 1 of 1 [0, 0, 0]
cd "T15892.run" &&  "/home/smarlow/ghc/inplace/test   spaces/ghc-stage2"
-o T15892 T15892.hs -dcore-lint -dcmm-lint -no-user-package-db -rtsopts
-fno-warn-missed-specialisations -fshow-warning-groups
-fdiagnostics-color=never -fno-diagnostics-show-caret -Werror=compat
-dno-debug-output
cd "T15892.run" && ./T15892  +RTS -G1 -A32k -RTS
=====> T15892(g1) 1 of 1 [0, 0, 0]
cd "T15892.run" &&  "/home/smarlow/ghc/inplace/test   spaces/ghc-stage2"
-o T15892 T15892.hs -dcore-lint -dcmm-lint -no-user-package-db -rtsopts
-fno-warn-missed-specialisations -fshow-warning-groups
-fdiagnostics-color=never -fno-diagnostics-show-caret -Werror=compat
-dno-debug-output
cd "T15892.run" && ./T15892 +RTS -G1 -RTS +RTS -G1 -A32k -RTS
```

Reviewers: bgamari, osa1, erikd

Reviewed By: osa1

Subscribers: rwbarton, carter

GHC Trac Issues: #15892

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

11 months agohadrian: build ghc-iserv-dyn
David Eichmann [Wed, 14 Nov 2018 14:43:57 +0000 (15:43 +0100)] 
hadrian: build ghc-iserv-dyn

... in addition to ghc-iserv and ghc-iserv-prof, as it is required
to get 10+ tests to pass

Reviewers: bgamari, alpmestan

Reviewed By: alpmestan

Subscribers: alpmestan, rwbarton, carter

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

11 months agoMake `UniqDSet` a newtype
Sebastian Graf [Tue, 13 Nov 2018 13:54:54 +0000 (14:54 +0100)] 
Make `UniqDSet` a newtype

Summary:
This brings the situation of `UniqDSet` in line with `UniqSet`.

@dfeuer said in D3146#92820 that he would do this, but probably
never got around to it.

Validated locally.

Reviewers: AndreasK, mpickering, bgamari, dfeuer, simonpj

Reviewed By: simonpj

Subscribers: simonpj, rwbarton, carter, dfeuer

GHC Trac Issues: #15879, #13114

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

11 months agocircleci: Disable pushing of test metrics if not validating upstream
Ben Gamari [Mon, 12 Nov 2018 19:11:05 +0000 (14:11 -0500)] 
circleci: Disable pushing of test metrics if not validating upstream

11 months agoCorrect link to GHC API in docs index.
Shao Cheng [Mon, 12 Nov 2018 10:45:06 +0000 (18:45 +0800)] 
Correct link to GHC API in docs index.

11 months agocompareByPreference: handle the integer-gmp vs -simple case
Alp Mestanogullari [Mon, 12 Nov 2018 14:38:46 +0000 (15:38 +0100)] 
compareByPreference: handle the integer-gmp vs -simple case

Currently, it assumes the package names are identical and this
breaks in the case where integer-gmp is in one package db and
integer-simple in another. This became a problem with
the commit: fc2ff6dd7496a33bf68165b28f37f40b7d647418.

Instead of following the precedence information, leading to
the right choice, the current code would compare the
integer-gmp and integer-simple versions and pick integer-gmp
because it happened to have a greater version, despite having
a lower precedence. See
https://github.com/snowleopard/hadrian/issues/702 for
a comprehensive report about the problem.

This effectively un-breaks integer-simple builds with hadrian.

Test Plan: hadrian/build.sh --integer-simple

Reviewers: snowleopard, bgamari

Reviewed By: bgamari

Subscribers: snowleopard, rwbarton, carter

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

11 months agoRemove StgBinderInfo and related computation in CoreToStg
Ömer Sinan Ağacan [Mon, 12 Nov 2018 03:50:54 +0000 (06:50 +0300)] 
Remove StgBinderInfo and related computation in CoreToStg

- The StgBinderInfo type was never used in the code gen, so the type, related
  computation in CoreToStg, and some comments about it are removed. See #15770
  for more details.

- Simplified CoreToStg after removing the StgBinderInfo computation: removed
  StgBinderInfo arguments and mfix stuff.

The StgBinderInfo values were not used in the code gen, but I still run nofib
just to make sure: 0.0% change in allocations and binary sizes.

Test Plan: Validated locally

Reviewers: simonpj, simonmar, bgamari, sgraf

Reviewed By: sgraf

Subscribers: AndreasK, sgraf, rwbarton, carter

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

11 months agoFix #15594 (--abi-hash with Backpack sometimes fails)
Edward Z. Yang [Mon, 12 Nov 2018 03:39:29 +0000 (22:39 -0500)] 
Fix #15594 (--abi-hash with Backpack sometimes fails)

Summary:
For holes, its necessary to "see through" the instantiation
of the hole to get accurate family instance dependencies.
For example, if B imports <A>, and <A> is instantiated with
F, we must grab and include all of the dep_finsts from
F to have an accurate transitive dep_finsts list.

However, we MUST NOT do this for regular modules.
First, for efficiency reasons, doing this
bloats the the dep_finsts list, because we *already* had
those modules in the list (it wasn't a hole module, after
all). But there's a second, more important correctness
consideration: we perform module renaming when running
--abi-hash.  In this case, GHC's contract to the user is that
it will NOT go and read out interfaces of any dependencies
(https://github.com/haskell/cabal/issues/3633); the point of
--abi-hash is just to get a hash of the on-disk interfaces
for this *specific* package.  If we go off and tug on the
interface for /everything/ in dep_finsts, we're gonna have a
bad time.  (It's safe to do do this for hole modules, though,
because the hmap for --abi-hash is always trivial, so the
interface we request is local.  Though, maybe we ought
not to do it in this case either...)

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

Reviewers: alexbiehl, goldfire, bgamari

Subscribers: ppk, shlevy, rwbarton, carter

GHC Trac Issues: #15594

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

11 months agoRespect naming conventions in module RnUnbound.hs in fix for #15611
Roland Senn [Sun, 11 Nov 2018 10:21:26 +0000 (11:21 +0100)] 
Respect naming conventions in module RnUnbound.hs in fix for #15611

Summary:
The patch https://phabricator.haskell.org/D5284
didn't respect the local naming conventions in module
compiler/rename/RnUnbound.hs:

  - Top level functions names are written in camelCase.
  -  Local function names in where clauses are written as names_with_underscores.

This patch restores these conventions.

Test Plan: make test TESTS="T15611a T15611b"

Reviewers: DavidEichmann, monoidal, hvr, mpickering, bgamari

Reviewed By: mpickering

Subscribers: rwbarton, carter

GHC Trac Issues: #15611

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

11 months agoIgnore .gdb_history files
Ben Gamari [Sun, 11 Nov 2018 10:20:57 +0000 (11:20 +0100)] 
Ignore .gdb_history files

Summary: I tend to accumulate these and they are often quite useful to keep around.

Reviewers: monoidal

Reviewed By: monoidal

Subscribers: rwbarton, carter

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

11 months agoiserv: Fix typo in cabal file
Matthew Pickering [Sun, 11 Nov 2018 10:20:19 +0000 (11:20 +0100)] 
iserv: Fix typo in cabal file

Reviewers: bgamari, RyanGlScott

Reviewed By: RyanGlScott

Subscribers: RyanGlScott, rwbarton, carter

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

11 months agoGHCi does not need a main function
roland [Sun, 11 Nov 2018 10:19:30 +0000 (11:19 +0100)] 
GHCi does not need a main function

Summary: In GHCi we don't check anymore, whether a main function is exported.

Test Plan: make test TEST=T11647

Reviewers: hvr, osa1, monoidal, mpickering, bgamari

Reviewed By: osa1, mpickering

Subscribers: rwbarton, carter

GHC Trac Issues: #11647

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

11 months agoFix #15845 by defining etaExpandFamInstLHS and using it
Ryan Scott [Thu, 8 Nov 2018 15:26:48 +0000 (10:26 -0500)] 
Fix #15845 by defining etaExpandFamInstLHS and using it

Summary:
Both #9692 and #14179 were caused by GHC being careless
about using eta-reduced data family instance axioms. Each of those
tickets were fixed by manually whipping up some code to eta-expand
the axioms. The same sort of issue has now caused #15845, so I
figured it was high time to factor out the code that each of these
fixes have in common.

This patch introduces the `etaExpandFamInstLHS` function, which takes
a family instance's type variables, LHS types, and RHS type, and
returns type variables and LHS types that have been eta-expanded if
necessary, in the case of a data family instance. (If it's a type
family instance, `etaExpandFamInstLHS` just returns the supplied type
variables and LHS types unchanged).

Along the way, I noticed that many references to
`Note [Eta reduction for data families]` (in `FamInstEnv`) had
slightly bitrotted (they either referred to a somewhat different
name, or claimed that the Note lived in a different module), so
I took the liberty of cleaning those up.

Test Plan: make test TEST="T9692 T15845"

Reviewers: goldfire, bgamari

Reviewed By: goldfire

Subscribers: rwbarton, carter

GHC Trac Issues: #15845

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

11 months agotestsuite: Save performance metrics in git notes.
David Eichmann [Wed, 7 Nov 2018 17:02:47 +0000 (12:02 -0500)] 
testsuite: Save performance metrics in git notes.

This patch makes the following improvement:
  - Automatically records test metrics (per test environment) so that
    the programmer need not supply nor update expected values in *.T
    files.
    - On expected metric changes, the programmer need only indicate the
      direction of change in the git commit message.
  - Provides a simple python tool "perf_notes.py" to compare metrics
    over time.

Issues:
  - Using just the previous commit allows performance to drift with each
    commit.
    - Currently we allow drift as we have a preference for minimizing
      false positives.
    - Some possible alternatives include:
      - Use metrics from a fixed commit per test: the last commit that
        allowed a change in performance (else the oldest metric)
      - Or use some sort of aggregate since the last commit that allowed
        a change in performance (else all available metrics)
      - These alternatives may result in a performance issue (with the
        test driver) having to heavily search git commits/notes.
  - Run locally, performance tests will trivially pass unless the tests
    were run locally on the previous commit. This is often not the case
    e.g.  after pulling recent changes.

Previously, *.T files contain statements such as:
```
stats_num_field('peak_megabytes_allocated', (2, 1))
compiler_stats_num_field('bytes allocated',
                         [(wordsize(64), 165890392, 10)])
```
This required the programmer to give the expected values and a tolerance
deviation (percentage). With this patch, the above statements are
replaced with:
```
collect_stats('peak_megabytes_allocated', 5)
collect_compiler_stats('bytes allocated', 10)
```
So that programmer must only enter which metrics to test and a tolerance
deviation. No expected value is required. CircleCI will then run the
tests per test environment and record the metrics to a git note for that
commit and push them to the git.haskell.org ghc repo. Metrics will be
compared to the previous commit. If they are different by the tolerance
deviation from the *.T file, then the corresponding test will fail. By
adding to the git commit message e.g.
```
 # Metric (In|De)crease <metric(s)> <options>: <tests>
Metric Increase ['bytes allocated', 'peak_megabytes_allocated'] \
         (test_env='linux_x86', way='default'):
    Test012, Test345
Metric Decrease 'bytes allocated':
    Test678
Metric Increase:
    Test711
```
This will allow the noted changes (letting the test pass). Note that by
omitting metrics or options, the change will apply to all possible
metrics/options (i.e. in the above, an increase for all metrics in all
test environments is allowed for Test711)

phabricator will use the message in the description

Reviewers: bgamari, hvr

Reviewed By: bgamari

Subscribers: rwbarton, carter

GHC Trac Issues: #12758

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

11 months agoRevert "CircleCI: Build DWARF-enabled Linux bindists"
Ben Gamari [Wed, 7 Nov 2018 14:17:59 +0000 (09:17 -0500)] 
Revert "CircleCI: Build DWARF-enabled Linux bindists"

This reverts commit 406978c478e4b14e677f396499420d7b8e5d21fd.

11 months agoRevert "Multiple fixes / improvements for LLVM backend"
Ben Gamari [Wed, 7 Nov 2018 13:06:18 +0000 (08:06 -0500)] 
Revert "Multiple fixes / improvements for LLVM backend"

This reverts commit adcb5fb47c0942671d409b940d8884daa9359ca4.

11 months agoRevert "Fix for T14251 on ARM"
Ben Gamari [Wed, 7 Nov 2018 13:05:34 +0000 (08:05 -0500)] 
Revert "Fix for T14251 on ARM"

This reverts commit d8495549ba9d194815c2d0eaee6797fc7c00756a.

11 months ago[LlvmCodeGen] Fixes for Int8#/Word8#
Michal Terepeta [Wed, 7 Nov 2018 13:03:16 +0000 (08:03 -0500)] 
[LlvmCodeGen] Fixes for Int8#/Word8#

This fixes two isssues:

- Using bitcast for MO_XX_Conv
  Arguments to a bitcast must be of the same size. We should be using
  `trunc` and `zext` instead.

- Using unsupported MO_*_QuotRem for LLVM
  The two primops `MO_*_QuotRem` are not supported by the LLVM backend,
so
  we shouldn't use them for `Int8#`/`Word8#` (just as we do not use
them for
  `Int#`/`Word#`).

Signed-off-by: Michal Terepeta <michal.terepeta@gmail.com>
Test Plan: manually run tests with WAY=llvm

Reviewers: bgamari, simonmar

Reviewed By: bgamari

Subscribers: rwbarton, carter

GHC Trac Issues: #15864

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

11 months agoCircleCI: Build DWARF-enabled Linux bindists
Ben Gamari [Mon, 5 Nov 2018 18:45:59 +0000 (13:45 -0500)] 
CircleCI: Build DWARF-enabled Linux bindists

11 months agoBump directory submodule to 1.3.3.1
Ben Gamari [Mon, 5 Nov 2018 17:06:58 +0000 (12:06 -0500)] 
Bump directory submodule to 1.3.3.1

11 months agointeger-gmp: Fix TBA in changelog
Ben Gamari [Fri, 2 Nov 2018 15:48:05 +0000 (11:48 -0400)] 
integer-gmp: Fix TBA in changelog

11 months agoActually add test for #15859.
Richard Eisenberg [Tue, 6 Nov 2018 03:51:58 +0000 (22:51 -0500)] 
Actually add test for #15859.

Oops. Forgot to `git add`.

11 months agoFix #15859 by checking, not assuming, an ArgFlag
Richard Eisenberg [Mon, 5 Nov 2018 16:01:47 +0000 (11:01 -0500)] 
Fix #15859 by checking, not assuming, an ArgFlag

We thought that visible dependent quantification was impossible
in terms, but Iceland Jack discovered otherwise in #15859. This fixes an
ASSERT failure that arose.

test case: dependent/should_fail/T15859

11 months agoFix for Trac #15611: Scope errors lie about what modules are imported.
roland [Sun, 4 Nov 2018 15:45:29 +0000 (16:45 +0100)] 
Fix for Trac #15611: Scope errors lie about what modules are imported.

Summary:
For the error message:
    Not in scope X.Y
    Module X does not export Y
    No module named ‘X’ is imported:
there are 2 cases, where we don't show the last "no module named is imported" line:
1. If the module X has been imported.
2. If the module X is the current module. There are 2 subcases:

   2.1 If the unknown module name is in a input source file,
       then we can use the getModule function to get the current module name.

   2.2 If the unknown module name has been entered by the user in GHCi,
       then the getModule function returns something like "interactive:Ghci1",
       and we have to check the current module in the last added entry of
       the HomePackageTable.

Test Plan: make test TESTS="T15611a T15611b"

Reviewers: monoidal, hvr, thomie, dfeuer, bgamari, DavidEichmann

Reviewed By: monoidal, DavidEichmann

Subscribers: rwbarton, carter

GHC Trac Issues: #15611

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

11 months agoAdd Int8# and Word8#
Michal Terepeta [Fri, 2 Nov 2018 18:27:03 +0000 (14:27 -0400)] 
Add Int8# and Word8#

This is the first step of implementing:
https://github.com/ghc-proposals/ghc-proposals/pull/74

The main highlights/changes:

    primops.txt.pp gets two new sections for two new primitive types for
    signed and unsigned 8-bit integers (Int8# and Word8 respectively) along
    with basic arithmetic and comparison operations. PrimRep/RuntimeRep get
    two new constructors for them. All of the primops translate into the
    existing MachOPs.

    For CmmCalls the codegen will now zero-extend the values at call
    site (so that they can be moved to the right register) and then truncate
    them back their original width.

    x86 native codegen needed some updates, since it wasn't able to deal
    with the new widths, but all the changes are quite localized. LLVM
    backend seems to just work.

This is the second attempt at merging this, after the first attempt in
D4475 had to be backed out due to regressions on i386.

Bumps binary submodule.

Signed-off-by: Michal Terepeta <michal.terepeta@gmail.com>
Test Plan: ./validate (on both x86-{32,64})

Reviewers: bgamari, hvr, goldfire, simonmar

Subscribers: rwbarton, carter

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

11 months agorts: Add FALLTHROUGH macro
Ben Gamari [Fri, 2 Nov 2018 18:25:27 +0000 (14:25 -0400)] 
rts: Add FALLTHROUGH macro

Instead of using the GCC `/* fallthrough */` syntax we now use the
`__attribute__((fallthrough))`, which Phyx says should be more portable
than the former.

Also adds a missing fallthrough annotation in the MachO linker,
fixing #14613.

Reviewers: erikd, simonmar

Reviewed By: simonmar

Subscribers: rwbarton, carter

GHC Trac Issues: #14613

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

11 months agorts: Allow output filename of eventlog to be given by command-line
Ben Gamari [Fri, 2 Nov 2018 18:24:12 +0000 (14:24 -0400)] 
rts: Allow output filename of eventlog to be given by command-line

This introduces the `+RTS -ol` flag, which allows user to specify the
destination file for eventlog output.

Test Plan: Validate with included test

Reviewers: simonmar, erikd

Reviewed By: simonmar

Subscribers: rwbarton, carter

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

11 months agobase: Improve haddocks for Functor
Simon Jakobi [Wed, 24 Oct 2018 10:40:36 +0000 (12:40 +0200)] 
base: Improve haddocks for Functor

11 months agobase: Misc haddock fixes
Simon Jakobi [Tue, 23 Oct 2018 14:29:13 +0000 (16:29 +0200)] 
base: Misc haddock fixes

(cherry picked from commit ee545ff44e0ba9a165de40807548c75bf181dda3)

11 months agoBump time submodule
Ben Gamari [Mon, 29 Oct 2018 21:15:40 +0000 (17:15 -0400)] 
Bump time submodule

11 months agousers-guide: Update link to Safe Coercions paper
Ben Gamari [Fri, 2 Nov 2018 16:43:25 +0000 (12:43 -0400)] 
users-guide: Update link to Safe Coercions paper

Fixes #15841.

11 months agoMove eta-reduced coaxiom compatibility handling quirks into FamInstEnv.
mniip [Thu, 1 Nov 2018 22:33:10 +0000 (18:33 -0400)] 
Move eta-reduced coaxiom compatibility handling quirks into FamInstEnv.

The quirk caused an issue where GHC concluded that 'D' is possibly
unifiable with 'D a' (the two types could have the same kind if D is a
data family).

Test Plan:
Ensure T9371 stays fixed.
Introduce T15704

Reviewers: goldfire, bgamari

Reviewed By: goldfire

Subscribers: RyanGlScott, rwbarton, carter

GHC Trac Issues: #15704

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

11 months agoAdd built-in syntax suggestions, and refactor to allow library use
Matthías Páll Gissurarson [Thu, 1 Nov 2018 22:32:32 +0000 (18:32 -0400)] 
Add built-in syntax suggestions, and refactor to allow library use

Summary:
This change to the valid hole fits adds built-in syntax candidates (like (:) and []),
so that they are checked in addition to what is in scope.

The rest is merely a refactor and export of the functions used to find the valid
hole fits, since there was interest at ICFP to use the valid hole fit machinery for
additional uses. By exporting the `tcFilterHoleFits` function, this can now be done
without having to rely on parsing the actual error message.

Test Plan: Test for built-in syntax included

Reviewers: bgamari

Reviewed By: bgamari

Subscribers: RyanGlScott, rwbarton, carter

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

11 months agohadrian: build ghc-iserv-prof in addition to ghc-iserv
Alp Mestanogullari [Thu, 1 Nov 2018 22:31:46 +0000 (18:31 -0400)] 
hadrian: build ghc-iserv-prof in addition to ghc-iserv

As it is required for 10+ tests.

Hadrian didn't give us a chance to build a given executable in vanilla
and profiling, simultaneously, under two different names. This patch
implements support for this in general and applies it to
ghc-iserv[-prof].

Test Plan: scc001 fails without this patch, passes with it.

Reviewers: snowleopard, bgamari

Reviewed By: bgamari

Subscribers: simonpj, ndmitchell, simonmar, rwbarton, carter

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

11 months agousers-guide: Fix formatting of eventlog format documentation
Ben Gamari [Thu, 1 Nov 2018 22:31:33 +0000 (18:31 -0400)] 
users-guide: Fix formatting of eventlog format documentation

Test Plan: Read it

Reviewers: mpickering

Reviewed By: mpickering

Subscribers: rwbarton, carter

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

11 months agoData.Maybe: add callstack for fromJust (Trac #15559)
Fangyi Zhou [Thu, 1 Nov 2018 22:21:23 +0000 (18:21 -0400)] 
Data.Maybe: add callstack for fromJust (Trac #15559)

Per feature request, add `HasCallStack` to `fromJust` in `Data.Maybe`
and use `error` instead of `errorWithoutStackTrace`. This allows
`fromJust` to print call stacks when throwing the error.

Also add a new test case for the behaviour, modify existing test cases
for new signature

Test Plan: New test cases

Reviewers: hvr, bgamari

Reviewed By: bgamari

Subscribers: ulysses4ever, rwbarton, carter

GHC Trac Issues: #15559

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

11 months agoLower precedence for {-# UNPACK #-}
Vladislav Zavialov [Thu, 1 Nov 2018 22:20:57 +0000 (18:20 -0400)] 
Lower precedence for {-# UNPACK #-}

Test Plan: Validate

Reviewers: goldfire, bgamari

Subscribers: osa1, mpickering, rwbarton, carter

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

11 months agoDon't lint erroneous programs.
Richard Eisenberg [Thu, 1 Nov 2018 22:03:21 +0000 (18:03 -0400)] 
Don't lint erroneous programs.

newFamInst lints its types. This is good. But it's not so good
when there have been errors and thus recovery tycons are about.
So we now don't.

Fixes #15796.

Test case: typecheck/should_fail/T15796

11 months agoActually fail in failIfEmitsConstraints
Richard Eisenberg [Thu, 1 Nov 2018 19:37:58 +0000 (15:37 -0400)] 
Actually fail in failIfEmitsConstraints

The function TcHsType.failIfEmitsConstraints says that it fails.
It even does so in its name. But it didn't! It *reported* constraints
but didn't fail. Now it does.

This is important in tcHsClsInstType; see the comments therein.

This was discovered while looking at #15797, but that ticket
requires visible kind application to exhibit the bug; the test
case will come with the patch for #12045.

11 months agoFix embarrassing, egregious bug in roles of (->)
Richard Eisenberg [Thu, 1 Nov 2018 19:07:36 +0000 (15:07 -0400)] 
Fix embarrassing, egregious bug in roles of (->)

Previously, I had inexplicably decided that (->)'s roles
were all Representational. But, of course, its first two
parameters are *dependent* RuntimeReps. All dependent parameters
have a Nominal role, because all roles in kinds are Nominal.

Fix is easy, but I have no idea how the world hasn't come
crashing down before now.

This was found while investigating #15801, which requires
visible type application in types to observe. Hence, the test
case will come with the main patch for #12045.

11 months agoRevert "Add a RTS option -xp to load PIC object anywhere in address space"
Ben Gamari [Wed, 31 Oct 2018 00:38:24 +0000 (20:38 -0400)] 
Revert "Add a RTS option -xp to load PIC object anywhere in address space"

This reverts commit 5403a8636fe82f971234873564f3a05393b89b7a.

11 months agoRevert "Allocate bss section within proper range of other sections"
Ben Gamari [Tue, 30 Oct 2018 18:47:53 +0000 (14:47 -0400)] 
Revert "Allocate bss section within proper range of other sections"

This reverts commit e019ec94f12268dd92ea5d5204e9e57e7ebf10ca.

This sadly breaks the external interpreter on i386.

For instance, see https://circleci.com/gh/ghc/ghc/10925.

11 months agoFix docs typo in Bitraversable composition law
Mark Seemann [Tue, 30 Oct 2018 09:02:42 +0000 (10:02 +0100)] 
Fix docs typo in Bitraversable composition law

(cherry picked from commit 7c2bcc00e22ca8cebd9ffb2ee1741a86a5c4ebb9)

11 months agocircleci: Store test results of slow validation builds
Ben Gamari [Tue, 30 Oct 2018 17:47:53 +0000 (13:47 -0400)] 
circleci: Store test results of slow validation builds

11 months agoAdd second test case for #15592
Ryan Scott [Tue, 30 Oct 2018 14:49:59 +0000 (10:49 -0400)] 
Add second test case for #15592

This adds a program from
https://ghc.haskell.org/trac/ghc/ticket/15592#comment:9 (which
briefly refused to typecheck on GHC HEAD) as a test case.

11 months agoRevert "Bump time submodule"
Ben Gamari [Tue, 30 Oct 2018 14:03:49 +0000 (10:03 -0400)] 
Revert "Bump time submodule"

This reverts commit 0bdbbd4a637b169aa7043e0d9898ad1ecd5d14ef.

11 months agoBump time submodule
Ben Gamari [Mon, 29 Oct 2018 21:15:40 +0000 (17:15 -0400)] 
Bump time submodule

11 months agoCorrectly detect GIT in a subtree
Sylvain Henry [Mon, 29 Oct 2018 18:02:45 +0000 (19:02 +0100)] 
Correctly detect GIT in a subtree

When we use a git subtree, .git is a file, not a directory.
The script was already fixed for the commit ID but not for its date.

PR: https://github.com/ghc/ghc/pull/212/

11 months agocircleci: Build with in-tree GMP on Darwin
Ben Gamari [Wed, 17 Oct 2018 19:31:36 +0000 (15:31 -0400)] 
circleci: Build with in-tree GMP on Darwin

Fixes #15404.

(cherry picked from commit 578012be13eb1548050d51c0a23bd1a98423f03e)

11 months agoImprove documentation for warning options
Nathan Collins [Fri, 19 Oct 2018 21:44:19 +0000 (14:44 -0700)] 
Improve documentation for warning options

My main goal was to make it easy to discover how to reverse `-Werror`,
since `Wno-error` doesn't work, and the fact that `-Wwarn` negates
`-Werror` was only mentioned in the `-Wwarn` docs before.

Other changes:
- explain at the outset that some options control individual warnings
  while others control warning families.
- explain at the outset that `-Wno-<wflag>` can be used to reverse
  `-W<wflag>`. This is no mentioned in two places, but I don't think
  that's a bad thing.

11 months agoDocs: clarify the interaction between throwSTM and catchSTM.
Ian Denhardt [Fri, 26 Oct 2018 22:05:05 +0000 (18:05 -0400)] 
Docs: clarify the interaction between throwSTM and catchSTM.

The previous doc comments were not terribly clear on what was or wasn't
rolled back when an exception was caught in STM. This misunderstanding
was the source of a bug in another project of mine, and folks on
`#haskell` found it confusing as well.

11 months agoFix sample code of -fprint-explicit-kinds, plus sample when disabling PolyKinds
Yuji Yamamoto [Thu, 25 Oct 2018 01:59:29 +0000 (10:59 +0900)] 
Fix sample code of -fprint-explicit-kinds, plus sample when disabling PolyKinds

- Although the sample is for `-fprint-explicit-kinds`, the sample code
  uses `-fprint-explicit-foralls` (but perhaps the output used to be
  correct one of `-fprint-explicit-kinds`).
- Update the output with the recent version of GHC (ver. 8.4.3. I guess
  it doesn't change in GHC 8.6...)
- Add more samples to clarify the difference of kinds, which tells
  effect of `-fprint-explicit-kinds` more clearly.

11 months agousers guide: Introduce :pragma: directive
Ben Gamari [Tue, 17 Jan 2017 19:43:52 +0000 (14:43 -0500)] 
users guide: Introduce :pragma: directive

11 months agousers guide: Mention :since: in editing-guide
Ben Gamari [Tue, 17 Jan 2017 18:51:56 +0000 (13:51 -0500)] 
users guide: Mention :since: in editing-guide

11 months agoFix #15815 by parenthesizing the arguments to infix ~
Ryan Scott [Sun, 28 Oct 2018 20:08:11 +0000 (16:08 -0400)] 
Fix #15815 by parenthesizing the arguments to infix ~

An unfortunate consequence of commit
b9483981d128f55d8dae3f434f49fa6b5b30c779 (`Remove HsEqTy and XEqTy`)
is infix uses of `~` in TH quotes now desugar differently than
before. In particular, we have that:

```haskell
a ~ (Int -> Int)
```

Now desugars to:

```haskell
HsOpTy a (~) (HsOpTy Int (->) Int)
```

Which GHC interprets as being:

```haskell
a ~ Int -> Int
```

Or, equivalently:

```haskell
(a ~ Int) -> Int
```

Which is different than what was intended! This is the cause
of #15815.

All of this has revealed that we likely need to renovate the way we
desugar infix type operators to be more consistent with the treatment
for infix expressions (see
https://ghc.haskell.org/trac/ghc/ticket/15815#comment:5 for more on
this.) Doing so would constitute a breaking change, however, so we
will likely want to wait until another major GHC release to do this.

In the meantime, this patch offers a non-invasive change to the way
that infix uses of `~` are desugared. This makes the program
in #15815 compile again by inserting extra `HsParTy`s around the
arguments to `~` if they are lacking them.

Test Plan: make test TEST=T15815

Reviewers: int-index, goldfire, bgamari

Reviewed By: int-index

Subscribers: int-e, rwbarton, carter

GHC Trac Issues: #15815

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

11 months agoAdd a test case for #15829
Ryan Scott [Mon, 29 Oct 2018 16:59:46 +0000 (12:59 -0400)] 
Add a test case for #15829

This happened to get fixed as a consequence of commit
5e45ad10ffca1ad175b10f6ef3327e1ed8ba25f3. This adds a test case
to ensure that it stays fixed.

11 months agoRevert "Remove kind generalisation from tcRnType"
Richard Eisenberg [Mon, 29 Oct 2018 16:15:58 +0000 (12:15 -0400)] 
Revert "Remove kind generalisation from tcRnType"

This reverts commit 3a51abd04432ea3d13e4ea3c5a592f038bd57432.

I had hit the wrong button when trying to validate the original
commit... and ended up committing it prematurely instead.
This reversion commit
also updates the comments to explain why we kind-generalise.