ghc.git
18 months agoSet arity for absentError
David Feuer [Thu, 3 May 2018 03:43:13 +0000 (23:43 -0400)] 
Set arity for absentError

* The note on how to prevent stable unfoldings from leading to
  `case` on `absentError` was wrong. Make it reflect reality.

* Reviewing the above change, Simon noticed that we didn't
  set an arity for `absentError`, which definitely has arity 1.
  It may not matter much, since `absentError` usually vanishes
  quickly, but we might as well set it properly, so now we do.

Reviewers: simonpj, bgamari

Reviewed By: simonpj

Subscribers: thomie, carter

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

18 months agostorageAddCapabilities: fix bug in updating nursery pointers
Simon Marlow [Fri, 27 Apr 2018 18:31:19 +0000 (11:31 -0700)] 
storageAddCapabilities: fix bug in updating nursery pointers

Summary:
We were unconditionally updating the nursery pointers to be
`nurseries[cap->no]`, but when using nursery chunks this might be
wrong. This manifested as a later assertion failure in allocate().

Test Plan: new test case

Reviewers: bgamari, niteria, erikd

Subscribers: thomie, carter

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

18 months agoerrorWithoutStackTrace: omit profiling stack trace (#14970)
Simon Marlow [Sat, 21 Apr 2018 11:22:18 +0000 (12:22 +0100)] 
errorWithoutStackTrace: omit profiling stack trace (#14970)

Test Plan: validate

Reviewers: hvr, bgamari, erikd

Subscribers: thomie, carter

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

18 months agoExitify: Do not trip over shadowing (fixes #15110)
Joachim Breitner [Wed, 2 May 2018 02:33:01 +0000 (22:33 -0400)] 
Exitify: Do not trip over shadowing (fixes #15110)

18 months agorts: Allow profiling by closure type in prof way
Ben Gamari [Tue, 1 May 2018 17:10:13 +0000 (13:10 -0400)] 
rts: Allow profiling by closure type in prof way

Previously we inexplicably disabled support for `-hT` profiling in the profiled
way. Admittedly, there are relatively few cases where one would prefer -hT to
`-hd`, but the option should nevertheless be available for the sake of
consistency.

Note that this does mean that there is a bit of an inconsistency in the behavior
of `-h`: in the profiled way `-h` behaves like `-hc` whereas in the non-profiled
way it defaults to `-hT`.

18 months agorts: Add -hT to the rts usage message
Ben Gamari [Tue, 1 May 2018 18:57:31 +0000 (14:57 -0400)] 
rts: Add -hT to the rts usage message

Reviewers: erikd, simonmar

Subscribers: thomie, carter

GHC Trac Issues: #15086

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

18 months agotestsuite: Bump performance meterics due to 3d38e8284b73
Ben Gamari [Mon, 30 Apr 2018 22:01:12 +0000 (18:01 -0400)] 
testsuite: Bump performance meterics due to 3d38e8284b73

This commit bumped T12425, T12234 and T12150 over their expected metrics on OS
X.

18 months agorts: Don't disable formatting warning in RetainerSet.c
Ben Gamari [Wed, 25 Apr 2018 14:46:48 +0000 (10:46 -0400)] 
rts: Don't disable formatting warning in RetainerSet.c

This really shouldn't be necessary.

18 months agoPreserve join-point arity in CoreOpt
Simon Peyton Jones [Tue, 1 May 2018 11:16:28 +0000 (12:16 +0100)] 
Preserve join-point arity in CoreOpt

Trac #15108 showed that the simple optimiser in CoreOpt
was accidentally eta-reducing a join point, so it didn't meet
its arity invariant.

This patch fixes it.  See Note [Preserve join-binding arity].

18 months agoDon't crash when pretty-printing bad joins
Simon Peyton Jones [Tue, 1 May 2018 10:11:46 +0000 (11:11 +0100)] 
Don't crash when pretty-printing bad joins

Trac #15108 showed that the Core pretty-printer would
crash if it found a join-point binding with too few lambda
on the RHS.  That is super-unhelpful!  Lint will find it,
but pretty-printing should not crash.

This patch just makes the pretty printer behave more robustly;
it leaves the job of error reporting to Lint.

18 months agoAdd test case for #15108
Joachim Breitner [Tue, 1 May 2018 02:13:38 +0000 (22:13 -0400)] 
Add test case for #15108

thanks to cdisselkoen for the nicely minimized test case.

18 months agoBetter linting for types
Simon Peyton Jones [Fri, 27 Apr 2018 15:32:02 +0000 (16:32 +0100)] 
Better linting for types

Trac #15057 described deficiencies in the linting for types
involving type synonyms.  This patch fixes an earlier attempt.

The moving parts are desrcribed in
  Note [Linting type synonym applications]

Not a big deal.

18 months agoMake out-of-scope errors more prominent
Simon Peyton Jones [Fri, 27 Apr 2018 15:15:25 +0000 (16:15 +0100)] 
Make out-of-scope errors more prominent

Generally, when the type checker reports an error, more serious
ones suppress less serious ones.

A "variable out of scope" error is arguably the most serious of all,
so this patch moves it to the front of the list instead of the end.

This patch also fixes Trac #14149, which had
-fdefer-out-of-scope-variables, but also had a solid type error.
As things stood, the type error was not reported at all, and
compilation "succeeded" with error code 0.  Yikes.

Note that

- "Hole errors" (including out of scope) are never suppressed.
  (maybeReportHoleError vs maybeReportError in TcErorrs)
  They can just get drowned by the noise.

- But with the new orientation, out of scope errors will suppress
  type errors.  That would be easy to change.

18 months agoRefactor tcExtendLocalFamInst a bit
Simon Peyton Jones [Thu, 26 Apr 2018 13:04:29 +0000 (14:04 +0100)] 
Refactor tcExtendLocalFamInst a bit

This patch just pulls out FamInst.loadDependentFamInstModules
as a separate function, and adds better comments.

Provoked by Trac #14759, comment:10.

18 months agoComments only: the FVAnn invariant
Simon Peyton Jones [Fri, 20 Apr 2018 16:51:58 +0000 (17:51 +0100)] 
Comments only: the FVAnn invariant

18 months agoMinor refactoring in Exitify
Simon Peyton Jones [Fri, 20 Apr 2018 16:50:56 +0000 (17:50 +0100)] 
Minor refactoring in Exitify

No change in behaviour here, just some modest
refactoring as I tried to understand the code
better.

18 months agoAdd missing stdout file for T14955
Simon Peyton Jones [Fri, 27 Apr 2018 15:54:22 +0000 (16:54 +0100)] 
Add missing stdout file for T14955

Accidentally omitted from Trac #14955 commit.

18 months agoTTG : complete for balance of hsSyn AST
Alan Zimmerman [Wed, 18 Apr 2018 21:55:14 +0000 (23:55 +0200)] 
TTG : complete for balance of hsSyn AST

Summary:
- remove PostRn/PostTc fields
- remove the HsVect In/Out distinction for Type, Class and Instance
- remove PlaceHolder in favour of NoExt
- Simplify OutputableX constraint

Updates haddock submodule

Test Plan: ./validate

Reviewers: goldfire, bgamari

Subscribers: goldfire, thomie, mpickering, carter

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

18 months agoRename a local variable
Simon Peyton Jones [Fri, 20 Apr 2018 16:13:31 +0000 (17:13 +0100)] 
Rename a local variable

18 months agoRefactor in OccurAnal
Simon Peyton Jones [Fri, 12 Jan 2018 17:34:49 +0000 (17:34 +0000)] 
Refactor in OccurAnal

* (+++)                    -->  andUDs
* combineAltsUsageDetails  -->  orUDs
* combineUsageDetailsList  -->  andUDsList
* Change some andUDsList to a fold for efficiency

No change in behaviour

18 months agoComments only
Simon Peyton Jones [Fri, 12 Jan 2018 17:31:06 +0000 (17:31 +0000)] 
Comments only

18 months agoDo not unpack class dictionaries with INLINABLE
Simon Peyton Jones [Thu, 26 Apr 2018 14:59:13 +0000 (15:59 +0100)] 
Do not unpack class dictionaries with INLINABLE

Matthew Pickering uncovered a bad performance hole in the way
that single-method dictionaries work, described in Trac #14955.

See Note [Do not unpack class dictionaries] in WwLib.

I tried to fix this 6 years ago, but got it slightly wrong.  This patch
fixes it, which makes a dramatic improvement in the test case.

Nofib highlights: not much happening:

  Program           Size    Allocs   Runtime   Elapsed  TotalMem
-----------------------------------------------------------------
      VSM          -0.3%     +2.7%     -7.4%     -7.4%      0.0%
cacheprof          -0.0%     +0.1%     +0.3%     +0.7%      0.0%
  integer          -0.0%     +1.1%     +7.5%     +7.5%      0.0%
      tak          -0.1%     -0.2%     0.024     0.024      0.0%
-----------------------------------------------------------------
      Min          -4.4%     -0.2%     -7.4%     -7.4%     -8.0%
      Max          +0.6%     +2.7%     +7.5%     +7.5%      0.0%
Geom Mean          -0.1%     +0.0%     +0.1%     +0.1%     -0.2%

I investigated VSM.  The patch unpacks class dictionaries a bit more
than before (i.e. does so if there is no INLINABLE pragma). And that
gives better code in VSM (less dictionary selection etc), but one closure
gets one word bigger.

I'll accept these changes in exchange for more robust performance.

Some ghci.debugger output wobbled around (order of bindings
being displayed). I have no idea why; but I accepted the changes.

18 months agoUpdate Hadrian submodule
Andrey Mokhov [Wed, 25 Apr 2018 22:57:28 +0000 (23:57 +0100)] 
Update Hadrian submodule

  * Link to Quick Start guide
  * Update README.md (hadrian/578)
  * Fix AppVeyor (hadrian/577)
  * Fix CircleCI
  * Generic library rules (hadrian/571)
  * Fix lint error (hadrian/575)
  * Fix missing libHSghc-8.5-0.a (hadrian/574)
  * Fix the path to touchy (hadrian/572)
  * Fix integer-gmp build (hadrian/568)
  * Undo fs*.h workaround
  * Fix copying of fs*.h files during RTS registration (hadrian/566)
  * Fix Windows build, improve error reporting (hadrian/565)
  * Fix Windows build (hadrian/563)
  * Fix boot and configure on AppVeyor (hadrian/561)
  * Preliminary bindist (hadrian/558, hadrian/555)
  * Unregister stage0 package first if it needs to be
    cloned (hadrian/552)
  * Fix Circle CI (hadrian/553)
  * Fix warnings (hadrian/547)
  * Merge pull request hadrian/542 from Mistuke/fix-specific-file
  * Use Cabal directly in place of ghc-cabal + make build root
    configurable (hadrian/531)
  * Add user-defined flavour example for turning off dynamic
    linking (hadrian/535)
  * Add clean routines for fs (hadrian/533)
  * Add 'git' to nativeBuildInputs in shell.nix (hadrian/530)
  * Add extra include paths when invoking ghc-cabal (hadrian/526)
  * Merge pull request hadrian/528 from snowleopard/bump-cabal
  * Merge pull request hadrian/521 from snowleopard/drop-chmod
  * Change permission bits for build.cabal.sh,
    fixes hadrian/517 (hadrian/520)
  * Pin nixpkgs and all-cabal-hashes in shell.nix (hadrian/511)
  * Add troubleshooting section

18 months agoStable.c: minor refactoring, add/update some comments
Ömer Sinan Ağacan [Wed, 25 Apr 2018 17:42:26 +0000 (20:42 +0300)] 
Stable.c: minor refactoring, add/update some comments

Test Plan: Passes validate

Reviewers: simonmar, bgamari, erikd

Subscribers: thomie, carter

GHC Trac Issues: #10296

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

18 months agotestsuite: Fix T4442 on 32-bit architectures
Ben Gamari [Mon, 23 Apr 2018 14:42:17 +0000 (10:42 -0400)] 
testsuite: Fix T4442 on 32-bit architectures

This relied on Int# being 64-bits. This is nothing a bit of CPP can't
fix, but I think the right solution would be to make out treatment of
word-size dependent types more consistent, as suggested by #11953.

Test Plan: Validate on i386

Subscribers: thomie, carter

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

18 months agotestsuite: Fix overflow in T13623 on 32-bit machines
Ben Gamari [Mon, 23 Apr 2018 14:41:38 +0000 (10:41 -0400)] 
testsuite: Fix overflow in T13623 on 32-bit machines

We simply truncate the result to 32-bits to ensure that the test passed
under both environments.

Test Plan: Validate on 32-bit

Subscribers: thomie, carter

GHC Trac Issues: #13623

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

18 months agoghc-prim: Refactor and document __sync_fetch_and_nand workaround
Ben Gamari [Mon, 23 Apr 2018 14:40:34 +0000 (10:40 -0400)] 
ghc-prim: Refactor and document __sync_fetch_and_nand workaround

ed6f9fb9d5a684d2159c29633159c3254cf04deb reduced the scope of this hack
to only include Clangs which actually lack __sync_fetch_and_nand.
However, this causes GHC to fail to build with -Werror on Clang due to
the lack of the -Wsync-nand warning flag. As it turns out a flag
controlling the warning is available under a different name, however.

Test Plan: Validate with Clang, GCC

Subscribers: thomie, carter

GHC Trac Issues: #9678

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

19 months agoAdd testcase for #15050
Joachim Breitner [Mon, 23 Apr 2018 17:02:50 +0000 (13:02 -0400)] 
Add testcase for #15050

so that we notice if someone accidentially implements this...

19 months agocoercion: Improve debugging output
Simon Peyton Jones [Mon, 23 Apr 2018 13:38:35 +0000 (09:38 -0400)] 
coercion: Improve debugging output

* Improve assertion-failure message
* Add HasDebugCallStack to decomposeFunCo

Reviewers: goldfire, bgamari

Subscribers: thomie, carter

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

19 months agousers-guide: Fix up formatting in 8.6 release notes
Ben Gamari [Sun, 22 Apr 2018 22:32:53 +0000 (18:32 -0400)] 
users-guide: Fix up formatting in 8.6 release notes

19 months agoTypo fix in scavenge_one comment [skip ci]
Ömer Sinan Ağacan [Sun, 22 Apr 2018 07:27:17 +0000 (10:27 +0300)] 
Typo fix in scavenge_one comment [skip ci]

19 months agoRemove a outdated comment [skip ci]
Ömer Sinan Ağacan [Sat, 21 Apr 2018 19:21:29 +0000 (22:21 +0300)] 
Remove a outdated comment [skip ci]

19 months agorts: Use g0 for &generations[0]
Ömer Sinan Ağacan [Sat, 21 Apr 2018 16:09:15 +0000 (19:09 +0300)] 
rts: Use g0 for &generations[0]

[skip ci]

19 months agos/traverse_weak_ptr_list/traverseWeakPtrList in comments [skip ci]
Ömer Sinan Ağacan [Sat, 21 Apr 2018 11:26:34 +0000 (14:26 +0300)] 
s/traverse_weak_ptr_list/traverseWeakPtrList in comments [skip ci]

19 months agoRemove unnecessary check in simplCast
Tobias Dammers [Fri, 20 Apr 2018 20:38:34 +0000 (16:38 -0400)] 
Remove unnecessary check in simplCast

The coercion optimizer will take care of it anyway, and the check is
prohibitively expensive.

See Trac #14737.

Reviewers: bgamari

Subscribers: simonpj, thomie, carter

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

19 months agobase: Add a test for T10412
Ben Gamari [Fri, 20 Apr 2018 17:54:04 +0000 (13:54 -0400)] 
base: Add a test for T10412

Expects the current behavior, will be updated by D4593 to reflect
desired behavior.

Reviewers: hvr

Subscribers: thomie, carter

GHC Trac Issues: #10412

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

19 months agoFix implementation of rnIfaceBndr
Matthew Pickering [Fri, 20 Apr 2018 17:32:30 +0000 (13:32 -0400)] 
Fix implementation of rnIfaceBndr

Reviewers: ezyang, bgamari

Reviewed By: bgamari

Subscribers: thomie, carter

GHC Trac Issues: #15041

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

19 months agoRemove broken top-level shell.nix
Matthew Pickering [Fri, 20 Apr 2018 17:31:49 +0000 (13:31 -0400)] 
Remove broken top-level shell.nix

There is a maintained shell.nix file in the hadrian submodule. This
has long since been broken anyway.

Reviewers: bgamari

Reviewed By: bgamari

Subscribers: thomie, carter

GHC Trac Issues: #15045

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

19 months agocomments only
Simon Peyton Jones [Fri, 20 Apr 2018 12:58:38 +0000 (13:58 +0100)] 
comments only

19 months agoInline wrappers earlier
Simon Peyton Jones [Fri, 20 Apr 2018 12:57:16 +0000 (13:57 +0100)] 
Inline wrappers earlier

This patch has a single significant change:

  strictness wrapper functions are inlined earlier,
  in phase 2 rather than phase 0.

As shown by Trac #15056, this gives a better chance for RULEs to fire.
Before this change, a function that would have inlined early without
strictness analyss was instead inlining late. Result: applying
"optimisation" made the program worse.

This does not make too much difference in nofib, but I've stumbled
over the problem more than once, so even a "no-change" result would be
quite acceptable.  Here are the headlines:

--------------------------------------------------------------------------------
        Program           Size    Allocs   Runtime   Elapsed  TotalMem
--------------------------------------------------------------------------------
      cacheprof          -0.5%     -0.5%     +2.5%     +2.5%      0.0%
         fulsom          -1.0%     +2.6%     -0.1%     -0.1%      0.0%
           mate          -0.6%     +2.4%     -0.9%     -0.9%      0.0%
        veritas          -0.7%    -23.2%     0.002     0.002      0.0%
--------------------------------------------------------------------------------
            Min          -1.4%    -23.2%    -12.5%    -15.3%      0.0%
            Max          +0.6%     +2.6%     +4.4%     +4.3%    +19.0%
 Geometric Mean          -0.7%     -0.2%     -1.4%     -1.7%     +0.2%

* A worthwhile reduction in binary size.

* Runtimes are not to be trusted much but look as if they
  are moving the right way.

* A really big win in veritas, described in comment:1 of
  Trac #15056; more fusion rules fired.

* I investigated the losses in 'mate' and 'fulsom'; see #15056.

19 months agoCaching coercion roles in NthCo and coercionKindsRole refactoring
Tobias Dammers [Fri, 20 Apr 2018 13:11:14 +0000 (09:11 -0400)] 
Caching coercion roles in NthCo and coercionKindsRole refactoring

While addressing nonlinear behavior related to coercion roles,
particularly `NthCo`, we noticed that coercion roles are recalculated
often even though they should be readily at hand already in most cases.
This patch adds a `Role` to the `NthCo` constructor so that we can cache
them rather than having to recalculate them on the fly.
https://ghc.haskell.org/trac/ghc/ticket/11735#comment:23 explains the
approach.

Performance improvement over GHC HEAD, when compiling Grammar.hs (see below):

GHC 8.2.1:
```
ghc Grammar.hs  176.27s user 0.23s system 99% cpu 2:56.81 total
```

before patch (but with other optimizations applied):
```
ghc Grammar.hs -fforce-recomp  175.77s user 0.19s system 100% cpu 2:55.78 total
```

after:
```
../../ghc/inplace/bin/ghc-stage2 Grammar.hs  10.32s user 0.17s system 98% cpu 10.678 total
```

Introduces the following regressions:

- perf/compiler/parsing001 (possibly false positive)
- perf/compiler/T9872
- perf/compiler/haddock.base

Reviewers: goldfire, bgamari, simonpj

Reviewed By: simonpj

Subscribers: rwbarton, thomie, carter

GHC Trac Issues: #11735

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

19 months agoBump transformers submodule
Ryan Scott [Fri, 20 Apr 2018 14:14:31 +0000 (10:14 -0400)] 
Bump transformers submodule

This brings in a commit which migrates Contravariant instances from
base to transformers.

19 months agoFixes isAlphaNum re. isAlpha/isNumber and doc fix (trac issue #10412)
ARJANEN Loïc Jean David [Fri, 20 Apr 2018 00:48:28 +0000 (20:48 -0400)] 
Fixes isAlphaNum re. isAlpha/isNumber and doc fix (trac issue #10412)

Corrects the inconsistency between Data.Char.isAlphaNum,
Data.Char.isAlpha and Data.Char.isNumber. Indeed, isAlphaNum was
returning True not only when isAlpha or isNumber returned True but
also when isMark did. The selectors for the Mn, Mc and Me general
categories where removed from the macro generating u_iswalnum in
ubconfc.

Also, Data.Char.isAlphaNum's documentation was changed to state that
isAlphaNum returns true not only for Unicode number digits but for
Unicode numbers in general in Unicode.hs.

Signed-off-by: ARJANEN Loïc Jean David <arjanen.loic@gmail.com>
Reviewers: hvr, ekmett, lelf, bgamari

Reviewed By: bgamari

Subscribers: thomie, carter

GHC Trac Issues: #10412

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

19 months agoLint types in newFamInst
Ryan Scott [Fri, 20 Apr 2018 00:47:48 +0000 (20:47 -0400)] 
Lint types in newFamInst

We weren't linting the types used in `newFamInst`, which
might have been why #15012 went undiscovered for so long. Let's fix
that.

One has to be surprisingly careful with expanding type synonyms in
`lintType`, since in the offending program (simplified):

```lang=haskell
type FakeOut a = Int

type family TF a
type instance TF Int = FakeOut a
```

If one expands type synonyms, then `FakeOut a` will expand to
`Int`, which masks the issue (that `a` is unbound). I added an
extra Lint flag to configure whether type synonyms should be
expanded or not in Lint, and disabled this when calling `lintTypes`
from `newFamInst`.

As evidence that this works, I ran it on the offending program
from #15012, and voilà:

```
$ ghc3/inplace/bin/ghc-stage2 Bug.hs -dcore-lint
[1 of 1] Compiling Foo              ( Bug.hs, Bug.o )
ghc-stage2: panic! (the 'impossible' happened)
  (GHC version 8.5.20180417 for x86_64-unknown-linux):
        Core Lint error
  <no location info>: warning:
      In the type ‘... (Rec0 (FakeOut b_a1Qt))))’
      @ b_a1Qt is out of scope
```

Test Plan: make test TEST=T15057

Reviewers: simonpj, goldfire, bgamari

Reviewed By: bgamari

Subscribers: thomie, carter

GHC Trac Issues: #15057

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

19 months agoboot: Fix computation of TOP
Ben Gamari [Thu, 19 Apr 2018 19:07:57 +0000 (15:07 -0400)] 
boot: Fix computation of TOP

Test Plan: Run `./boot`, check to make sure that
`libraries/ghc-prim/GNUmakefile` is sane

Subscribers: thomie, carter, sjakobi

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

19 months agoconfigure: Use -Werror to check for existence of -no-pie
Ben Gamari [Thu, 19 Apr 2018 19:05:50 +0000 (15:05 -0400)] 
configure: Use -Werror to check for existence of -no-pie

Clang throws a warning instead of an error when it is passed -no-pie,

    clang: warning: argument unused during compilation: '-nopie'
    [-Wunused-command-line-argument]

Consequently configure concludes that it supports -no-pie. However, this
will fail when used with -Werror. The solution is to simply use -Werror
in the configure check.

Thanks to @goldfire for reporting this.

Reviewers: hvr

Subscribers: thomie, carter, goldfire

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

19 months agoparsec: Make version hack compatible with Windows
Ben Gamari [Thu, 19 Apr 2018 19:42:26 +0000 (15:42 -0400)] 
parsec: Make version hack compatible with Windows

Fixes D4609 on Windows by bumping parsec submodule.

19 months agotestsuite: Fix `./validate --slow`
Alp Mestanogullari [Thu, 19 Apr 2018 16:40:21 +0000 (12:40 -0400)] 
testsuite: Fix `./validate --slow`

This fixes all unexpected passes and unexpected failures from a
`./validate --slow` run I did last week. I commented on many
tickets and created a few more as I was going through the failing
tests. A summary of the entire process is available at:

  https://gist.github.com/alpmestan/c371840968f086c8dc5b56af8325f0a9

This is part of an attempt to have `./validate --slow` pass,
tracked in #14890. Another patch will be necessary for the unexpected
stats failures.

Test Plan: ./validate --slow (not green yet)

Reviewers: bgamari, simonmar

Subscribers: thomie, carter

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

19 months agoBump base to version 4.12.0.0
Ryan Scott [Thu, 19 Apr 2018 16:38:17 +0000 (12:38 -0400)] 
Bump base to version 4.12.0.0

Summary: Bumps several submodules.

Test Plan: ./validate

Reviewers: hvr, bgamari

Reviewed By: bgamari

Subscribers: thomie, carter

GHC Trac Issues: #15018

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

19 months agoFix #15012 with a well-placed use of Any
Ryan Scott [Thu, 19 Apr 2018 16:36:42 +0000 (12:36 -0400)] 
Fix #15012 with a well-placed use of Any

Previously, derived `Generic1` instances could have associated `Rep1`
type family instances with unbound variables, such as in the following
example:

```lang=haskell
data T a = MkT (FakeOut a) deriving Generic1
type FakeOut a = Int

==>

instance Generic1 T where
  type Rep1 T = ... (Rec0 (FakeOut a))
```

Yikes! To avoid this, we simply map the last type variable in a
derived `Generic1` instance to `Any`.

Test Plan: make test TEST=T15012

Reviewers: bgamari

Reviewed By: bgamari

Subscribers: simonpj, thomie, carter

GHC Trac Issues: #15012

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

19 months agoBetter error message for empty character literal, for Trac #13450.
HE, Tao [Thu, 19 Apr 2018 16:31:09 +0000 (12:31 -0400)] 
Better error message for empty character literal, for Trac #13450.

For empty character literal, the `''`, report error message properly
rather than just throw a "parser error" with wrong error location.

Test Plan: make test TEST="T13450 T13450TH"

Reviewers: goldfire, bgamari

Reviewed By: bgamari

Subscribers: thomie, mpickering, carter

GHC Trac Issues: #13450

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

19 months agoAdd a test for #14815:
Ömer Sinan Ağacan [Thu, 19 Apr 2018 15:32:26 +0000 (11:32 -0400)] 
Add a test for #14815:

Because the program doesn't have any binders that -XStrict can make
strict, the desugarer output should be identical when it's compiled with
and without -XStrict. This wasn't the case with GHC 8.2.2, but
apparently it was fixed some time between 8.2.2 and 8.4.1. We now add a
test case to make sure it stays fixed.

Reviewers: bgamari

Reviewed By: bgamari

Subscribers: simonpj, rwbarton, thomie, carter

GHC Trac Issues: #14815

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

19 months agorts: fix format arguments for debugBelch calls on 32-bit systems
Sergei Trofimovich [Thu, 19 Apr 2018 15:28:46 +0000 (11:28 -0400)] 
rts: fix format arguments for debugBelch calls on 32-bit systems

This change fixes build failure like this:
```
  rts/Stats.c:1467:14: error:
     error: format '%u' expects argument of type 'unsigned int',
         but argument 4 has type 'long unsigned int' [-Werror=format=]
       debugBelch("%51s%9" FMT_Word " %9" FMT_Word "\n",
                  ^~~~~~~~
                  "",tot_live*sizeof(W_),tot_slop*sizeof(W_));
                                         ~~~~~~~~~~~~~~~~~~~
```

The fix is to cast sizeof() result to Word (W_).

Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
Test Plan: build for 32-bit target

Reviewers: bgamari, erikd, simonmar

Reviewed By: simonmar

Subscribers: thomie, carter

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

19 months agousers-guide: Override mathjax_path
Ben Gamari [Thu, 19 Apr 2018 15:28:19 +0000 (11:28 -0400)] 
users-guide: Override mathjax_path

The Mathjax CDN no longer exists. Use CDNJS instead.

See #15006.

Test Plan: Build HTML users guide, see whether math is rendered.

Reviewers: alpmestan

Reviewed By: alpmestan

Subscribers: thomie, carter

GHC Trac Issues: #15006

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

19 months agoAdd a test case from the nested CPR work
Ben Gamari [Tue, 17 Apr 2018 16:46:13 +0000 (12:46 -0400)] 
Add a test case from the nested CPR work

Reviewers: bgamari

Reviewed By: bgamari

Subscribers: thomie, carter

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

19 months agoBump unix submodule to version 2.8.0.0
Ryan Scott [Thu, 19 Apr 2018 12:31:08 +0000 (08:31 -0400)] 
Bump unix submodule to version 2.8.0.0

Summary: Requires bumping several submodules.

Test Plan: ./validate

Reviewers: hvr, bgamari

Subscribers: thomie, carter

GHC Trac Issues: #15042

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

19 months agoFix #14710 with more validity checks during renaming
Ryan Scott [Thu, 19 Apr 2018 12:30:53 +0000 (08:30 -0400)] 
Fix #14710 with more validity checks during renaming

Summary:
#14710 revealed two unfortunate regressions related to kind
polymorphism that had crept in in recent GHC releases:

1. While GHC was able to catch illegal uses of kind polymorphism
   (i.e., if `PolyKinds` wasn't enabled) in limited situations, it
   wasn't able to catch kind polymorphism of the following form:

```lang=haskell
f :: forall a. a -> a
f x = const x g
  where
    g :: Proxy (x :: a)
    g = Proxy
```

Note that the variable `a` is being used as a kind variable in the
type signature of `g`, but GHC happily accepts it, even without
the use of `PolyKinds`.

2. If you have `PolyKinds` (but not `TypeInType`) enabled, then GHC
   incorrectly accepts the following definition:

```lang=haskell
f :: forall k (a :: k). Proxy a
f = Proxy
```

Even though `k` is explicitly bound and then later used as a kind
variable within the same telescope.

This patch fixes these two bugs as follows:

1. Whenever we rename any `HsTyVar`, we check if the following three
   criteria are met:

   (a) It's a type variable
   (b) It's used at the kind level
   (c) `PolyKinds` is not enabled

   If so, then we have found an illegal use of kind polymorphism, so
   throw an error.

   This check replaces the `checkBadKindBndrs` function, which could
   only catch illegal uses of kind polymorphism in very limited
   situations (when the bad kind variable happened to be implicitly
   quantified in the same type signature).

2. In `extract_hs_tv_bndrs`, we must error if `TypeInType` is not
   enabled and either of the following criteria are met:

   (a) An explicitly bound type variable is used in kind position
       in the body of a `forall` type.
   (b) An explicitly bound type variable is used in kind position
       in the kind of a bound type variable in a `forall` type.

   `extract_hs_tv_bndrs` was checking (a), but not (b). Easily fixed.

Test Plan: ./validate

Reviewers: goldfire, simonpj, bgamari, hvr

Reviewed By: simonpj

Subscribers: thomie, carter

GHC Trac Issues: #14710

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

19 months agoIntroduce a $tooldir variable for nicer toolchain detection on Windows
Alp Mestanogullari [Tue, 17 Apr 2018 22:04:11 +0000 (23:04 +0100)] 
Introduce a $tooldir variable for nicer toolchain detection on Windows

Summary:
This patch affects several files that affect how we detect mingw and perl
on Windows. The initial motivation is:

    https://github.com/snowleopard/hadrian/issues/564

where, with Hadrian building relocatable (non-inplace) GHCs, the current
detection mechanism falls short by e.g only trying $topdir/../mingw. But
in Hadrian, for reasons given in that issue, we would need to store e.g mingw
under $topdir/../../mingw except for binary distributions, where we want
to follow the existing structure, in which case $topdir/../mingw is correct. So
we need to support both, which is what this patch hopefully implements.

Test Plan: ./validate

Reviewers: Phyx, hvr, bgamari, erikd

Reviewed By: Phyx

Subscribers: snowleopard, thomie, carter

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

19 months agoProper safe coercions paper link
Kirill Zaborsky [Tue, 17 Apr 2018 07:29:19 +0000 (10:29 +0300)] 
Proper safe coercions paper link

19 months agoFix markup in the UNPACK pragma section of the user's guide.
theindigamer [Sat, 14 Apr 2018 23:17:04 +0000 (19:17 -0400)] 
Fix markup in the UNPACK pragma section of the user's guide.

The ticket 5252 wasn't linked earlier.

19 months agoComments only
Simon Peyton Jones [Tue, 17 Apr 2018 12:19:40 +0000 (13:19 +0100)] 
Comments only

Deleting misleading comments, to fix Trac #15047

19 months agoMinor comments in CSE
Simon Peyton Jones [Mon, 16 Apr 2018 12:56:08 +0000 (13:56 +0100)] 
Minor comments in CSE

19 months agoRemove markSignalHandlers
Ömer Sinan Ağacan [Mon, 16 Apr 2018 18:58:21 +0000 (21:58 +0300)] 
Remove markSignalHandlers

It's no-op on all platforms

Reviewers: bgamari, simonmar, erikd, dfeuer

Reviewed By: dfeuer

Subscribers: dfeuer, thomie, carter

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

19 months agorts: Comment wibbles
Ben Gamari [Mon, 16 Apr 2018 18:35:41 +0000 (14:35 -0400)] 
rts: Comment wibbles

19 months agoRevert "Enhanced constant folding"
Ben Gamari [Mon, 16 Apr 2018 18:36:11 +0000 (14:36 -0400)] 
Revert "Enhanced constant folding"

I need to upgrade GHC on the CI builders before landing this due to a
bug in 8.2.1 triggered by this patch.

This reverts commit fea04defa64871caab6339ff3fc5511a272f37c7.

19 months agousers guide: Note improved constant folding in 8.6 release notes
Ben Gamari [Fri, 13 Apr 2018 22:10:39 +0000 (18:10 -0400)] 
users guide: Note improved constant folding in 8.6 release notes

19 months agoEnhanced constant folding
Sylvain Henry [Fri, 13 Apr 2018 17:29:07 +0000 (13:29 -0400)] 
Enhanced constant folding

Until now GHC only supported basic constant folding (lit op lit, expr op
0, etc.).

This patch uses laws of +/-/* (associativity, commutativity,
distributivity) to support some constant folding into nested
expressions.

Examples of new transformations:

   - simple nesting: (10 + x) + 10 becomes 20 + x
   - deep nesting: 5 + x + (y + (z + (t + 5))) becomes 10 + (x + (y + (z + t)))
   - distribution: (5 + x) * 6 becomes 30 + 6*x
   - simple factorization: 5 + x + (x + (x + (x + 5))) becomes 10 + (4 *x)
   - siblings: (5 + 4*x) - (3*x + 2) becomes 3 + x

Test Plan: validate

Reviewers: simonpj, austin, bgamari

Reviewed By: bgamari

Subscribers: thomie

GHC Trac Issues: #9136

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

19 months agoConfigure option to disable dtrace
Ben Gamari [Fri, 13 Apr 2018 18:18:03 +0000 (14:18 -0400)] 
Configure option to disable dtrace

Reviewers: hvr, bgamari

Subscribers: lelf, thomie, carter

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

19 months agoOmit ways depending on rts flags for #12870 related tests.
Andreas Klebinger [Fri, 13 Apr 2018 17:27:36 +0000 (13:27 -0400)] 
Omit ways depending on rts flags for #12870 related tests.

Some of these tests instruct the RTS to ignore all RTS flags being
passed.  While this is intended it causes test failures for some ways
like profiling which depend on passing RTS flags. So we skip these ways.

Test Plan: testsuite/tests/rts/flags$ make slow

Reviewers: bgamari, simonmar, alpmestan

Reviewed By: alpmestan

Subscribers: alpmestan, thomie, carter

GHC Trac Issues: #12870

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

19 months agoMake shortcutting at the asm stage toggleable and default for O2.
Andreas Klebinger [Fri, 13 Apr 2018 17:23:13 +0000 (13:23 -0400)] 
Make shortcutting at the asm stage toggleable and default for O2.

Shortcutting during the asm stage of codegen is often redundant as most
cases get caught during the Cmm passes.  For example during compilation
of all of nofib only 508 jumps are eleminated.

For this reason I moved the pass from -O1 to -O2. I also made it
toggleable with -fasm-shortcutting.

Test Plan: ci

Reviewers: bgamari

Reviewed By: bgamari

Subscribers: thomie, carter

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

19 months agoDeclare `catchRetry#` lazy in its first argument
Ben Gamari [Fri, 13 Apr 2018 17:22:55 +0000 (13:22 -0400)] 
Declare `catchRetry#` lazy in its first argument

As per the results on item 1 in T14998, declaring `catchRetry#` lazy in
its first argument opens the possibility to remove `ExnStr` complexity
from strictness demands at virtually no regressions in NoFib.

This brings `catchRetry#` in line with other primops from the `catch*`
family.

Reviewers: bgamari, simonpj, nomeata

Reviewed By: bgamari

Subscribers: thomie, carter

GHC Trac Issues: #14998, #11222

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

19 months agoCorrect FixIOException's @since annotation retroactively
Ryan Scott [Fri, 13 Apr 2018 16:54:31 +0000 (12:54 -0400)] 
Correct FixIOException's @since annotation retroactively

Summary:
In D4113, a `FixIOException` data type was added with a
`@since TODO` annotation, but it seems that `TODO` made it out into
`base-4.11` itself. I've (retroactively) fixed this and added an
entry to the `base-4.11` entry in the `changelog`.

Test Plan: Read it

Reviewers: dfeuer, hvr, bgamari

Reviewed By: dfeuer

Subscribers: thomie, carter

GHC Trac Issues: #14356, #15025

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

19 months agoRevert "Fix processHeapClosureForDead CONSTR_NOCAF case:"
Ben Gamari [Fri, 13 Apr 2018 16:10:45 +0000 (12:10 -0400)] 
Revert "Fix processHeapClosureForDead CONSTR_NOCAF case:"

This reverts commit a303584e58b3f4791bc5881cb722e7f498e14554.

19 months agoUse newtype deriving for Hoopl code
U-Maokai\andi [Fri, 13 Apr 2018 15:34:03 +0000 (11:34 -0400)] 
Use newtype deriving for Hoopl code

Hoopl.Collections/.Label has newtype containers which derive
Functor/Traversable.
Enabling GeneralizedNewtypeDeriving improves allocation count and
compile time when building these files for GHC.

```
Vanilla, O1
<<ghc: 378555664 bytes, 76 GCs, 8663140/18535016 avg/max bytes
residency (5 samples), 63M in use, 0.000 INIT (0.000 elapsed), 0.219
MUT (0.354 elapsed), 0.141 GC (0.138 elapsed) :ghc>>

GeneralizedNewtypeDeriving , O1
<<ghc: 301026536 bytes, 78 GCs, 8392886/17181088 avg/max bytes
residency (5 samples), 63M in use, 0.000 INIT (0.000 elapsed), 0.156
MUT (0.230 elapsed), 0.094 GC (0.106 elapsed) :ghc>>
```

Test Plan: ci

Reviewers: bgamari, simonmar, RyanGlScott

Reviewed By: RyanGlScott

Subscribers: mpickering, RyanGlScott, thomie, carter

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

19 months agoFix #9438 by converting a panic to an error message
Ryan Scott [Fri, 13 Apr 2018 15:33:54 +0000 (11:33 -0400)] 
Fix #9438 by converting a panic to an error message

Previously, GHC was quite eager to panic whenever it was fed
an archive file when `DYNAMIC_GHC_PROGRAMS=YES`. This ought to be an
explicit error message instead, so this patch accomplishes just that.

Test Plan: make test TEST=T14708

Reviewers: Phyx, hvr, bgamari

Reviewed By: Phyx

Subscribers: thomie, carter

GHC Trac Issues: #9438, #14708, #15032

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

19 months agoRemove unused function: mkFunCos
Matthew Pickering [Fri, 13 Apr 2018 15:33:40 +0000 (11:33 -0400)] 
Remove unused function: mkFunCos

Reviewers: goldfire, bgamari, dfeuer

Reviewed By: dfeuer

Subscribers: dfeuer, thomie, carter

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

19 months agoFix rts.cabal.in
Andrey Mokhov [Fri, 13 Apr 2018 15:33:30 +0000 (11:33 -0400)] 
Fix rts.cabal.in

On Windows the FFI library is called `libCffi-6` instead of `libCffi`.
This needs to be reflected in `rts.cabal.in` as otherwise we cannot
properly `copy` and `register` the RTS package on Windows.

See https://github.com/snowleopard/hadrian/issues/567

Test Plan: Build GHC using Hadrian. Make build system does not use
`rts.cabal.in`.

Reviewers: bgamari, erikd, simonmar, Phyx

Reviewed By: Phyx

Subscribers: thomie, carter

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

19 months agoUpdate JMP_TBL targets during shortcutting in X86 NCG.
Andreas Klebinger [Fri, 13 Apr 2018 15:32:23 +0000 (11:32 -0400)] 
Update JMP_TBL targets during shortcutting in X86 NCG.

Without updating the JMP_TBL information the block list in
JMP_TBL contained blocks which were eliminated in some circumstances.

The actual assembly generation doesn't look at these fields so this
didn't cause any bugs yet. However as long as we carry this information
around we should make an effort to keep it correct.

Especially since it's useful for debugging purposes and can be used
for passes near the end of the codegen pipeline.
In particular it's used by jumpDestsOfInstr which without these changes
returns the wrong destinations.

Test Plan: ci

Reviewers: bgamari

Subscribers: thomie, carter

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

19 months agoFix processHeapClosureForDead CONSTR_NOCAF case:
Ömer Sinan Ağacan [Fri, 13 Apr 2018 15:31:56 +0000 (11:31 -0400)] 
Fix processHeapClosureForDead CONSTR_NOCAF case:

CONSTR_NOCAF was introduced with 55d535da10d as a replacement for
CONSTR_STATIC and CONSTR_NOCAF_STATIC, however, as explained in Note
[static constructors], we copy CONSTR_NOCAFs (which can also be seen in
evacuate) during GC, and they can become dead, like other CONSTR_X_Ys.
processHeapClosureForDead is updated to reflect this.

Reviewers: bgamari, simonmar, erikd

Subscribers: thomie, carter

GHC Trac Issues: #7836

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

19 months agoRevert "CmmPipeline: add a second pass of CmmCommonBlockElim"
Michal Terepeta [Fri, 13 Apr 2018 15:31:38 +0000 (11:31 -0400)] 
Revert "CmmPipeline: add a second pass of CmmCommonBlockElim"

This reverts commit d5c4d46a62ce6a0cfa6440344f707136eff18119.

Please see #14989 for details.

Test Plan: ./validate

Reviewers: bgamari, simonmar

Subscribers: thomie, carter

GHC Trac Issues: #14989

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

19 months agousers-guide: Update release notes and language extensions
Takenobu Tani [Fri, 13 Apr 2018 15:31:23 +0000 (11:31 -0400)] 
users-guide: Update release notes and language extensions

Update release notes and language extensions for GHC 8.6.1.

* Add `BlockArguments` and `NumericUndescores` in release note
* Fix directive for `HexFloatLiterals` and `NumericUndescores`

Test Plan: build

Reviewers: bgamari

Reviewed By: bgamari

Subscribers: thomie, carter

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

19 months agoBump version numbers: base-4.11.1.0, integer-gmp-1.0.2.0
Ryan Scott [Fri, 13 Apr 2018 15:31:09 +0000 (11:31 -0400)] 
Bump version numbers: base-4.11.1.0, integer-gmp-1.0.2.0

This takes care of bumping the `base` and `integer-gmp`
minor version numbers in anticipation of a GHC 8.4.2 release.

While I was in town, I also filled in a `@since TODO` Haddock
annotation for `powModSecInteger` in `integer-gmp` with
`1.0.2.0`, and updated the changelog accordingly.

Test Plan: ./validate

Reviewers: hvr, goldfire, bgamari

Reviewed By: bgamari

Subscribers: thomie, carter

GHC Trac Issues: #15025

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

19 months agoTTG for HsBinds and Data instances Plan B
Alan Zimmerman [Sun, 1 Apr 2018 19:33:53 +0000 (21:33 +0200)] 
TTG for HsBinds and Data instances Plan B

Summary:
- Add the balance of the TTG extensions for hsSyn/HsBinds

- Move all the (now orphan) data instances into hsSyn/HsInstances and
use TTG Data instances Plan B
https://ghc.haskell.org/trac/ghc/wiki/ImplementingTreesThatGrow/Instances#PLANB

Updates haddock submodule.

Illustrative numbers

Compiling HsInstances before using Plan B.

Max residency ~ 5G
<<ghc: 629,864,691,176 bytes, 5300 GCs,
       321075437/1087762592 avg/max bytes residency (23 samples),
       2953M in use, 0.000 INIT (0.000 elapsed),
       383.511 MUT (384.986 elapsed), 37.426 GC (37.444 elapsed) :ghc>>

Using Plan B

Max residency 1.1G

<<ghc: 78,832,782,968 bytes, 2884 GCs,
       222140352/386470152 avg/max bytes residency (34 samples),
       1062M in use, 0.001 INIT (0.001 elapsed),
       56.612 MUT (62.917 elapsed), 32.974 GC (32.923 elapsed) :ghc>>

Test Plan: ./validate

Reviewers: shayan-najd, goldfire, bgamari

Subscribers: goldfire, thomie, mpickering, carter

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

19 months agoRemove fs files from rts install-includes.
Tamar Christina [Thu, 12 Apr 2018 20:40:43 +0000 (21:40 +0100)] 
Remove fs files from rts install-includes.

Summary:
They don't really need to be installed and will fix Hadrian installs.
Skipping review because change is trivial.

THis should be safe, but running it through CI to be sure.

Test Plan: ./validate

Reviewers: bgamari, erikd, simonmar

Subscribers: thomie, carter

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

19 months agoRevert "Remove fs files from rts install-includes."
Tamar Christina [Thu, 12 Apr 2018 06:50:28 +0000 (07:50 +0100)] 
Revert "Remove fs files from rts install-includes."

This reverts commit 111556f9e809962a91666c99d96cf80db361ee32.

There is a mismatch between Hadrian and Make on these install-includes.
but the reachability analysis forces these headers to be exported even
through they can't vven be used.

19 months agoRemove fs files from rts install-includes.
Tamar Christina [Thu, 12 Apr 2018 03:06:11 +0000 (04:06 +0100)] 
Remove fs files from rts install-includes.

They don't really need to be installed and will fix Hadrian installs.
Skipping review because change is trivial.

19 months agoNo need for sortQuantVars in Exitify after all
Joachim Breitner [Wed, 11 Apr 2018 15:24:01 +0000 (11:24 -0400)] 
No need for sortQuantVars in Exitify after all

because `captured :: [Var]` is always in dependency order.

I added a comment in the crucial point so that this does not trip us up
again.

19 months agoSchedule.c: remove some unused parameters
Ömer Sinan Ağacan [Wed, 11 Apr 2018 08:35:43 +0000 (11:35 +0300)] 
Schedule.c: remove some unused parameters

19 months agoSchedule.c: remove unused code
Ömer Sinan Ağacan [Wed, 11 Apr 2018 07:50:11 +0000 (10:50 +0300)] 
Schedule.c: remove unused code

19 months agoMove T14925.stdout to its correct location, remove expect_broken
Ömer Sinan Ağacan [Wed, 11 Apr 2018 07:44:00 +0000 (10:44 +0300)] 
Move T14925.stdout to its correct location, remove expect_broken

19 months agoIn Exitify, zap idInfo of abstracted variables (fixes #15005)
Joachim Breitner [Tue, 10 Apr 2018 13:36:08 +0000 (09:36 -0400)] 
In Exitify, zap idInfo of abstracted variables (fixes #15005)

as helpfully outlined by SPJ.

This commit copies a small bit code from `SetLevels` which could
reasonably be put in `Id` as `zapAllIdinfo`; I did not do this to make
merging this commmit into `ghc-8.4` easier.

If this commit gets merged, then presumably after commit
3f59d3802170f495702674b4f8e4e80247803654 (test case) and
ae0cff0a1834d8b041b06d0e1ab6ce969aac44c8 (other fixes to Exitify.hs).

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

19 months agoDiscard reflexive casts during Simplify
Richard Eisenberg [Tue, 10 Apr 2018 14:23:42 +0000 (10:23 -0400)] 
Discard reflexive casts during Simplify

Trac #14735 (derived from Trac #11735) found that 75% of compile
time was being spent in simplCast. This patch is the first in a series
to deal with that problem.

This particular patch actually has very little effect on performance; it
just refactors simplCast so that it builds Refl coercions less often.
Refl coercions require us to compute the type to put inside them, and
even if that's done lazily it is still work and code. Instead we use
Maybe Coercion with Nothing for Refl. This change also percolates to
pushCoTyArg and pushValArg.

Reviewers: goldfire, bgamari, simonpj

Reviewed By: simonpj

Subscribers: rwbarton, thomie, carter

GHC Trac Issues: #14737

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

19 months agoRevert "Fix #14838 by marking TH-spliced code as FromSource"
Ben Gamari [Sat, 7 Apr 2018 17:32:58 +0000 (13:32 -0400)] 
Revert "Fix #14838 by marking TH-spliced code as FromSource"

This reverts commit ffb2738f86c4e4c3f0eaacf0a95d7326fdd2e383.

Due to #14987.

Reviewers: goldfire, RyanGlScott

Reviewed By: RyanGlScott

Subscribers: RyanGlScott, thomie, carter

GHC Trac Issues: #14987, #14838

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

19 months agoMove gmp/config.mk.in to config.mk.in, fix #14972
Edward Z. Yang [Sat, 7 Apr 2018 17:32:47 +0000 (13:32 -0400)] 
Move gmp/config.mk.in to config.mk.in, fix #14972

Here's how the rube goldberg machine triggered the old bug:

1. If you have a file gmp/config.mk.in, then Cabal will
create a generated file in $DIST/build/gmp/config.mk

2. When you attempt to load inplace integer-gmp via GHCi, it will
ask gcc (aka clang on OS X) for the file name of 'gmp', with
base directory set to $DIST/build

3. There is a folder named 'gmp', and so this folder is returned
as the 'library' for gmp

4. GHCi loadArchive chokes to death trying to open a library
that is actually a folder

This patch solves the problem by breaking the chain at (1): if we
don't put config.mk in a folder named gmp, NO PROBLEM.

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

Reviewers: angerman, hvr, bgamari

Reviewed By: angerman

Subscribers: erikd, thomie, carter

GHC Trac Issues: #14972

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

19 months agoMinor typofix in LoadArchive.c
Edward Z. Yang [Sat, 7 Apr 2018 17:32:31 +0000 (13:32 -0400)] 
Minor typofix in LoadArchive.c

Test Plan: none

Reviewers: bgamari, erikd, simonmar

Reviewed By: bgamari

Subscribers: thomie, carter

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

19 months agorts/RetainerProfile: Handle BLOCKING_QUEUES
Ben Gamari [Sat, 7 Apr 2018 17:32:04 +0000 (13:32 -0400)] 
rts/RetainerProfile: Handle BLOCKING_QUEUES

push() considers BLOCKING_QUEUES to be an invalid closure type which
should never be present on the stack. However, retainClosure made no
accomodation for this and ended up pushing such a closure. This lead
to #14947.

Test Plan: Validate

Reviewers: simonmar, erikd

Reviewed By: simonmar

Subscribers: thomie, carter, RyanGlScott

GHC Trac Issues: #14947

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

19 months agotestsuite: Add test for negative sqrts (#10010)
Ben Gamari [Sat, 7 Apr 2018 17:31:42 +0000 (13:31 -0400)] 
testsuite: Add test for negative sqrts (#10010)

Reviewers: hvr, alpmestan

Reviewed By: alpmestan

Subscribers: thomie, carter

GHC Trac Issues: #10010

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

19 months agoRemove PARALLEL_HASKELL comments
Ömer Sinan Ağacan [Tue, 10 Apr 2018 14:06:27 +0000 (17:06 +0300)] 
Remove PARALLEL_HASKELL comments

PARALLEL_HASKELL was long gone, remove references

[skip ci]

19 months agoAdd test case for #15005
Joachim Breitner [Tue, 10 Apr 2018 13:26:09 +0000 (09:26 -0400)] 
Add test case for #15005

this succeeds on `master` right now, but I confirmed that it fails on
ghc-8.4.1-release.

19 months agoFix GHC collector flavor for Fedora job (Circle CI)
mrkkrp [Tue, 10 Apr 2018 10:50:39 +0000 (17:50 +0700)] 
Fix GHC collector flavor for Fedora job (Circle CI)