3 years agoA little closer to supporting breakpoints with -fexternal-interpreter
Simon Marlow [Wed, 13 Jan 2016 09:13:14 +0000 (09:13 +0000)] 
A little closer to supporting breakpoints with -fexternal-interpreter

Summary: Moves getIdValFromApStack to the server, and removes one use of wormhole.

Test Plan: validate

Reviewers: bgamari, niteria, austin, hvr, erikd

Subscribers: thomie

Differential Revision:

GHC Trac Issues: #11100

3 years agoAdd -prof stack trace to assert
Simon Marlow [Mon, 11 Jan 2016 18:30:29 +0000 (18:30 +0000)] 
Add -prof stack trace to assert

So that assertion failures have full call stack information attached
when using `ghc -fexternal-interpreter -prof`.  Here's one I just
collected by inserting a dummy assert in Happy:

*** Exception: Assertion failed
CallStack (from ImplicitParams):
  assert, called at ./First.lhs:37:11 in main:First
CallStack (from -prof):
  First.mkFirst (First.lhs:37:11-27)
  First.mkFirst (First.lhs:37:11-93)
  Main.main2.runParserGen.first (Main.lhs:107:48-56)
  Main.main2.runParserGen.first (Main.lhs:107:27-57)
  Main.main2.runParserGen (Main.lhs:(96,9)-(276,9))
  Main.main2.runParserGen (Main.lhs:(90,9)-(276,10))
  Main.main2.runParserGen (Main.lhs:(86,9)-(276,10))
  Main.main2.runParserGen (Main.lhs:(85,9)-(276,10))
  Main.main2 (Main.lhs:74:20-43)
  Main.main2 (Main.lhs:(64,9)-(78,61))
  Main.main (Main.lhs:57:9-18)

Test Plan: validate

Reviewers: erikd, hvr, austin, bgamari

Reviewed By: bgamari

Subscribers: thomie

Differential Revision:

GHC Trac Issues: #11047

3 years agofix typo causing compilation failure on SPARC (ArchSparc -> ArchSPARC)
Karel Gardas [Tue, 12 Jan 2016 20:58:50 +0000 (21:58 +0100)] 
fix typo causing compilation failure on SPARC (ArchSparc -> ArchSPARC)

3 years agoLinker: Define ELF_64BIT for aarch64_HOST_ARCH
Erik de Castro Lopo [Sun, 10 Jan 2016 21:55:56 +0000 (08:55 +1100)] 
Linker: Define ELF_64BIT for aarch64_HOST_ARCH

Test Plan: Build on x86_64 and AArch64

Reviewers: hvr, austin, bgamari

Reviewed By: bgamari

Subscribers: thomie

Differential Revision:

3 years Use Windows_Target instead of Windows_Host
Erik de Castro Lopo [Sat, 9 Jan 2016 23:28:47 +0000 (09:28 +1000)] Use Windows_Target instead of Windows_Host

This is a step towards building a Linux to Windows cross-compiler.

Test Plan: Build on Linux and Windows

Reviewers: bgamari, hvr, austin, Phyx

Subscribers: thomie

Differential Revision:

GHC Trac Issues: #10070

3 years agoTrieMap: Minor documentation fix
Ömer Sinan Ağacan [Sat, 9 Jan 2016 21:12:42 +0000 (16:12 -0500)] 
TrieMap: Minor documentation fix

3 years agoAdd InjectiveTypeFamilies language extension
Jan Stolarek [Sat, 9 Jan 2016 19:58:52 +0000 (20:58 +0100)] 
Add InjectiveTypeFamilies language extension

Previously injective type families were part of TypeFamilies.
Now they are in a separate language extension.

Test Plan: ./validate

Reviewers: austin, bgamari, goldfire

Reviewed By: bgamari

Subscribers: goldfire, thomie

Differential Revision:

GHC Trac Issues: #11381

3 years agofix -ddump-splices to parenthesize ((\x -> x) a) correctly
Yuri de Wit [Sat, 9 Jan 2016 17:58:30 +0000 (18:58 +0100)] 
fix -ddump-splices to parenthesize ((\x -> x) a) correctly

Test Plan: ./validate

Reviewers: goldfire, austin, bgamari

Subscribers: goldfire, osa1, thomie

Differential Revision:

GHC Trac Issues: #10603

3 years agoAdd failing testcase for #10603
Ben Gamari [Sat, 9 Jan 2016 17:57:40 +0000 (18:57 +0100)] 
Add failing testcase for #10603

3 years agoParser: delete rule numbers + validate shift/reduce conlicts
Thomas Miedema [Mon, 4 Jan 2016 14:48:54 +0000 (15:48 +0100)] 
Parser: delete rule numbers + validate shift/reduce conlicts

Rule numbers tend to go out-of-date, and aren't useful.

And during validate, the actual number of shift/reduce
conflicts is now checked against the number stated in Parser.y.

Reviewed by: bgamari

Differential Revision:

3 years agoReject import declaration with semicolon in GHCi
Rik Steenkamp [Sat, 9 Jan 2016 17:15:45 +0000 (18:15 +0100)] 
Reject import declaration with semicolon in GHCi

Now GHCi rejects input containing an import declaration and semicolon,
and prints an appropriate error message. Before, the stuff after an
import declaration and semicolon got ignored (most of the time), without
telling the user about it. As the default behaviour of GHCi is to reject
multiple commands in a single input, we extend this behaviour to import

This patch fixes #10663.

(See for the introduction of
`is_import` and `is_decl`.)

Reviewers: austin, bgamari

Reviewed By: bgamari

Subscribers: thomie

Differential Revision:

GHC Trac Issues: #10663

3 years agouser-guide/safe_haskell: Fix typos
Ben Gamari [Sat, 9 Jan 2016 13:35:00 +0000 (14:35 +0100)] 
user-guide/safe_haskell: Fix typos

3 years agouser-guide: More semantic markup
Ben Gamari [Sat, 9 Jan 2016 12:58:27 +0000 (13:58 +0100)] 
user-guide: More semantic markup

3 years agodocs: Fix DeriveAnyClass reference in release notes and ANNOUNCE
Ben Gamari [Sat, 9 Jan 2016 12:48:23 +0000 (13:48 +0100)] 
docs: Fix DeriveAnyClass reference in release notes and ANNOUNCE

3 years agousers-guide: A few fixes
Ben Gamari [Sat, 9 Jan 2016 11:36:07 +0000 (12:36 +0100)] 
users-guide: A few fixes

3 years agousers_guide: Use semantic directive/role for command line options
Ben Gamari [Sat, 9 Jan 2016 03:38:16 +0000 (04:38 +0100)] 
users_guide: Use semantic directive/role for command line options

And GHCi commands. This makes cross-referencing much easier.

Also normalize markup a bit and add some missing flags.

3 years agoFix test for T9367 (Windows)
Rik Steenkamp [Fri, 8 Jan 2016 22:50:24 +0000 (23:50 +0100)] 
Fix test for T9367 (Windows)

See c8c44fd91b509b9eb644c826497ed5268e89363a.

Reviewed By: thomie, bgamari

Differential Revision:

3 years agoBuild system: fix `pwd` issues on Windows
Thomas Miedema [Fri, 8 Jan 2016 19:59:28 +0000 (20:59 +0100)] 
Build system: fix `pwd` issues on Windows

Some parts of the build system require that paths are what msys2 calls
"mixed style":
  * forwards slashes
  * absolute paths starting with a drive letter followed by a colon
    (e.g. "C:")

The removal of ghc-pwd in 4c56ad3 changed $(TOP) from mixed style to
unix style, resulting in a broken Windows build for some.

Differential Revision:

3 years agoDocs for stack traces in GHCi
Simon Marlow [Fri, 8 Jan 2016 16:15:46 +0000 (16:15 +0000)] 
Docs for stack traces in GHCi

3 years agoAdd a pointer to the relevant paper for InScopeSet
Bartosz Nitka [Fri, 8 Jan 2016 14:26:49 +0000 (15:26 +0100)] 
Add a pointer to the relevant paper for InScopeSet

This was non-obvious to me when reading the sources and the
paper provides the motivation and explores the design space.

Test Plan: just a comment

Reviewers: simonpj, austin, ezyang, bgamari

Reviewed By: bgamari

Subscribers: thomie

Differential Revision:

3 years agoRename the test-way prof_h to normal_h
Simon Marlow [Fri, 8 Jan 2016 14:11:03 +0000 (14:11 +0000)] 
Rename the test-way prof_h to normal_h

3 years agoFix +RTS -h when compiling without -prof
Simon Marlow [Thu, 7 Jan 2016 14:23:14 +0000 (06:23 -0800)] 
Fix +RTS -h when compiling without -prof

Was broken by ce1f1607ed7f8fedd2f63c8610cafefd59baaf32.  I've added a
test so that hopefully it won't break again.

Test Plan: validate & new test case

Reviewers: bgamari, austin, erikd

Subscribers: thomie

Differential Revision:

GHC Trac Issues: #11304

3 years agoImprove GHC.Event.IntTable performance
Jonas Scholl [Fri, 8 Jan 2016 10:46:42 +0000 (11:46 +0100)] 
Improve GHC.Event.IntTable performance

Speed up GHC.Event.IntTable.lookup by removing the IO context from the
go helper function. This generates a little bit better code as we can
avoid repeating the stack check.

Remove unused parameter from GHC.Event.IntTable.updateWith.go and
directly return a bool instead of a maybe and then checking that whether
it is a Nothing.

Test Plan: validate

Reviewers: austin, hvr, bgamari

Reviewed By: bgamari

Subscribers: thomie

Differential Revision:

GHC Trac Issues: #8793

3 years agoFix Template Haskell's handling of infix GADT constructors
RyanGlScott [Fri, 8 Jan 2016 10:46:10 +0000 (11:46 +0100)] 
Fix Template Haskell's handling of infix GADT constructors

This is the second (and hopefully last) fix needed to make TH handle
GADTs properly (after D1465). This Diff addresses some issues with infix
GADT constructors, specifically:

* Before, you could not determine if a GADT constructor was declared
  infix because TH did not give you the ability to determine if there is
  a //user-specified// fixity declaration for that constructor. The
  return type of `reifyFixity` was changed to `Maybe Fixity` so that it
  yields `Just` the fixity is there is a fixity declaration, and
  `Nothing` otherwise (indicating it has `defaultFixity`).
* `DsMeta`/`Convert` were changed so that infix GADT constructors are
  turned into `GadtC`, not `InfixC` (which should be reserved for
  Haskell98 datatype declarations).
* Some minor fixes to the TH pretty-printer so that infix GADT
  constructors will be parenthesized in GADT signatures.

Fixes #11345.

Test Plan: ./validate

Reviewers: goldfire, austin, bgamari, jstolarek

Reviewed By: jstolarek

Subscribers: thomie

Differential Revision:

GHC Trac Issues: #11345

3 years agoUser's Guide: injective type families section
Jan Stolarek [Fri, 8 Jan 2016 10:44:18 +0000 (11:44 +0100)] 
User's Guide: injective type families section

3 years agoSupport for qRecover in TH with -fexternal-interpreter
Simon Marlow [Thu, 7 Jan 2016 14:53:43 +0000 (14:53 +0000)] 
Support for qRecover in TH with -fexternal-interpreter

Summary: This completes the support for TH with -fexternal-interpreter.

Test Plan: validate

Reviewers: bgamari, ezyang, austin, niteria, goldfire, erikd

Subscribers: thomie

Differential Revision:

GHC Trac Issues: #11100

3 years agoEnable stack traces with ghci -fexternal-interpreter -prof
Simon Marlow [Thu, 7 Jan 2016 11:36:41 +0000 (11:36 +0000)] 
Enable stack traces with ghci -fexternal-interpreter -prof

The main goal here is enable stack traces in GHCi.  After this change,
if you start GHCi like this:

  ghci -fexternal-interpreter -prof

(which requires packages to be built for profiling, but not GHC
itself) then the interpreter manages cost-centre stacks during
execution and can produce a stack trace on request.  Call locations
are available for all interpreted code, and any compiled code that was
built with the `-fprof-auto` familiy of flags.

There are a couple of ways to get a stack trace:

* `error`/`undefined` automatically get one attached
* `Debug.Trace.traceStack` can be used anywhere, and prints the current

Because the interpreter is running in a separate process, only the
interpreted code is running in profiled mode and the compiler itself
isn't slowed down by profiling.

The GHCi debugger still doesn't work with -fexternal-interpreter,
although this patch gets it a step closer.  Most of the functionality
of breakpoints is implemented, but the runtime value introspection is
still not supported.

Along the way I also did some refactoring and added type arguments to
the various remote pointer types in `GHCi.RemotePtr`, so there's
better type safety and documentation in the bridge code between GHC
and ghc-iserv.

Test Plan: validate

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

Subscribers: thomie

Differential Revision:

GHC Trac Issues: #11047, #11100

3 years agoTypos in docs and comments
Gabor Greif [Thu, 7 Jan 2016 10:48:16 +0000 (11:48 +0100)] 
Typos in docs and comments

3 years agoTest Trac #10625
Simon Peyton Jones [Thu, 7 Jan 2016 09:03:29 +0000 (09:03 +0000)] 
Test Trac #10625

3 years agoMake demand analysis understand catch
Simon Peyton Jones [Wed, 6 Jan 2016 17:40:09 +0000 (17:40 +0000)] 
Make demand analysis understand catch

As Trac #11222, and #10712 note, the strictness analyser
needs to be rather careful about exceptions.  Previously
it treated them as identical to divergence, but that
won't quite do.

See Note [Exceptions and strictness] in Demand, which
explains the deal.

Getting more strictness in 'catch' and friends is a
very good thing.  Here is the nofib summary, keeping
only the big ones.

        Program           Size    Allocs   Runtime   Elapsed  TotalMem
          fasta          -0.1%     -6.9%     -3.0%     -3.0%     +0.0%
            hpg          -0.1%     -2.0%     -6.2%     -6.2%     +0.0%
       maillist          -0.1%     -0.3%      0.08      0.09     +1.2%
reverse-complem          -0.1%    -10.9%     -6.0%     -5.9%     +0.0%
         sphere          -0.1%     -4.3%      0.08      0.08     +0.0%
           x2n1          -0.1%     -0.0%      0.00      0.00     +0.0%
            Min          -0.2%    -10.9%    -17.4%    -17.3%     +0.0%
            Max          -0.0%     +0.0%     +4.3%     +4.4%     +1.2%
 Geometric Mean          -0.1%     -0.3%     -2.9%     -3.0%     +0.0%

On the way I did quite a bit of refactoring in Demand.hs

3 years agoTurn AThing into ATcTyCon, in TcTyThing
Simon Peyton Jones [Wed, 6 Jan 2016 17:33:42 +0000 (17:33 +0000)] 
Turn AThing into ATcTyCon, in TcTyThing

This change tidies up and simplifies (a bit) the knot-tying
when kind-checking groups of type and class declarations.

The trouble (shown by Trac #11356) was that we wanted an error message
(a kind-mismatch) that involved a type mentioned a (AThing k), which
blew up.

Since we now seem to have TcTyCons, I decided to use them here.
It's still not great, but it's easier to understand and more robust.

3 years agoUse an Implication in 'deriving' error
Simon Peyton Jones [Wed, 6 Jan 2016 17:22:02 +0000 (17:22 +0000)] 
Use an Implication in 'deriving' error

Trac #11437 showed that erroneous constraints from a 'deriving'
clause need to be wrapped in an Implication to properly scope
their skolems.

The main change is in TcDeriv.simplifyDeriv; the call to
buildImplicationFor is new.

3 years agoRefactor simpl_top
Simon Peyton Jones [Wed, 6 Jan 2016 17:17:11 +0000 (17:17 +0000)] 
Refactor simpl_top

simpl_top was being polluted with Safe Haskell stuff which was only
used in one of its four calls.  This moves the Safe Haskell stuff
to the place it is actually used

3 years agoInline solveTopConstraints
Simon Peyton Jones [Wed, 6 Jan 2016 17:15:47 +0000 (17:15 +0000)] 
Inline solveTopConstraints

It was only called in one place; easier to inline it

3 years agoComment wibble
Simon Peyton Jones [Wed, 6 Jan 2016 17:14:41 +0000 (17:14 +0000)] 
Comment wibble

3 years agoTidy up tidySkolemInfo
Simon Peyton Jones [Wed, 6 Jan 2016 17:11:34 +0000 (17:11 +0000)] 
Tidy up tidySkolemInfo

Previously tidySkolemInfo used tidyOpenType, and returned a new
TidyEnv.  But that's not needed any more, because all the skolems
should be in scope in the constraint tree.

I also removed a (now-unnecessary) field of UnifyForAllSkol

3 years agoSpelling in a comment
Simon Peyton Jones [Wed, 6 Jan 2016 17:04:47 +0000 (17:04 +0000)] 
Spelling in a comment

3 years agoTiny refactor
Simon Peyton Jones [Wed, 6 Jan 2016 08:17:01 +0000 (08:17 +0000)] 
Tiny refactor

3 years agoRemove unused export
Simon Peyton Jones [Wed, 6 Jan 2016 08:16:34 +0000 (08:16 +0000)] 
Remove unused export

3 years agousers guide: Tweak wording of RTS -Nmax description
Ben Gamari [Wed, 6 Jan 2016 23:08:52 +0000 (00:08 +0100)] 
users guide: Tweak wording of RTS -Nmax description

3 years agoRewrite announce file
Ben Gamari [Fri, 17 Jul 2015 17:47:56 +0000 (19:47 +0200)] 
Rewrite announce file

Incredibly enough this hasn't been touched since 6.10.1

3 years agousers guide: Add links to release notes
Ben Gamari [Wed, 6 Jan 2016 22:59:30 +0000 (23:59 +0100)] 
users guide: Add links to release notes

3 years agousers guide: Add documentation for custom compile-time errors
Ben Gamari [Wed, 6 Jan 2016 22:56:44 +0000 (23:56 +0100)] 
users guide: Add documentation for custom compile-time errors

3 years agoFall back on ghc-stage2 when using Windows' GHCi driver
RyanGlScott [Wed, 6 Jan 2016 22:10:54 +0000 (23:10 +0100)] 
Fall back on ghc-stage2 when using Windows' GHCi driver

Reviewers: austin, hvr, bgamari, thomie

Reviewed By: thomie

Differential Revision:

3 years agoAdd a note describing the protocol for adding a language extension
Ben Gamari [Wed, 6 Jan 2016 19:00:16 +0000 (20:00 +0100)] 
Add a note describing the protocol for adding a language extension

Reviewers: hvr, thomie, austin

Reviewed By: austin

Subscribers: duncan

Differential Revision:

GHC Trac Issues: #8176, #4437

3 years agoBump Cabal and Haddock to fix #11308
Ben Gamari [Wed, 6 Jan 2016 13:42:22 +0000 (14:42 +0100)] 
Bump Cabal and Haddock to fix #11308

Bump Cabal and Haddock submodules such that they both support GCC-style
response files on Windows.

3 years agoChange Template Haskell representation of GADTs.
Jan Stolarek [Tue, 5 Jan 2016 18:18:44 +0000 (19:18 +0100)] 
Change Template Haskell representation of GADTs.

Previous representation of GADTs in TH was not expressive enough
to express possible GADT return types. See #11341

Test Plan: ./validate

Reviewers: goldfire, austin, bgamari

Subscribers: thomie, RyanGlScott

Differential Revision:

GHC Trac Issues: #11341

3 years agoRestore old GHC generics behavior vis-à-vis Fixity
RyanGlScott [Wed, 6 Jan 2016 11:05:05 +0000 (12:05 +0100)] 
Restore old GHC generics behavior vis-à-vis Fixity

Phab:D493 accidentally changed the way GHC generics looks up `Fixity`
information when deriving `Generic` or `Generic1`. Before, a `Fixity` of
`Infix` would be given only if a data constructor was declared infix,
but now, `Infix` is given to any data constructor that has a fixity
declaration (not to be confused with being declared infix!). This commit
reverts back to the original behavior for consistency's sake.

Fixes #11358.

Test Plan: ./validate

Reviewers: kosmikus, dreixel, austin, bgamari

Reviewed By: bgamari

Subscribers: thomie

Differential Revision:

GHC Trac Issues: #11358

3 years agorelnotes: Note dropped support for Windows XP and earlier
Ben Gamari [Wed, 6 Jan 2016 11:02:32 +0000 (12:02 +0100)] 
relnotes: Note dropped support for Windows XP and earlier

3 years agoExtend ghc environment file features
Duncan Coutts [Tue, 5 Jan 2016 21:13:26 +0000 (22:13 +0100)] 
Extend ghc environment file features

A set of changes to enable local ghc env files to be useful for tools
like cabal. Ultimately it will allow cabal to maintain a ghc env file so
that users can simple run ghc or ghci in a project directory and get the
expected environment of the project.

Change the name of .ghc.environment files to include the platform and
ghc version, e.g. .ghc.environment.x86_64-linux-7.6.3, since their
content is version specific. Strictly speaking this is not backwards
compatible, but we think this feature is not widely used yet.

"Look up" for a local env file, like the behaviour of git/darcs etc. So
you can be anywhere within a project and get the expected environment.

Don't look for local env files when -hide-all-packages is given.

Extend the syntax of env files to allow specifying package dbs too.

Test Plan:
Currently completely untested. Compiles, that is all.
Sorry, have to disappear for the hols.

Reviewers: hvr, ezyang, austin, bgamari

Reviewed By: ezyang, bgamari

Subscribers: thomie

Differential Revision:

GHC Trac Issues: #11268

3 years agoStgCmmForeign: Break up long line
Ben Gamari [Sat, 2 Jan 2016 16:22:11 +0000 (17:22 +0100)] 
StgCmmForeign: Break up long line

3 years agoStgCmmForeign: Push local register creation into code generation
Ben Gamari [Tue, 5 Jan 2016 21:10:28 +0000 (22:10 +0100)] 
StgCmmForeign: Push local register creation into code generation

The interfaces to {save,load}ThreadState were quite messy due to the
need to pass in local registers (produced with draws from a unique
supply) since they were used from both FCode and UniqSM.

This, however, is entirely unnecessary as we already have an
abstraction to capture this effect: MonadUnique. Use it.

This is part of an effort to properly represent stack unwinding
for foreign calls.

Test Plan: validate

Reviewers: austin, simonmar

Reviewed By: simonmar

Subscribers: thomie

Differential Revision:

3 years agoAdd Cabal synopses and descriptions
Ben Gamari [Tue, 5 Jan 2016 21:10:01 +0000 (22:10 +0100)] 
Add Cabal synopses and descriptions

Various people (myself included) have complained about the lack of
useful descriptions for the various packages included in GHC's source
tree. Fix this.

Test Plan: Validate

Reviewers: austin, thomie

Reviewed By: thomie

Subscribers: angerman, ezyang

Differential Revision:

3 years agoRemove -Wtoo-many-guards from default flags (fixes #11316)
George Karachalias [Tue, 5 Jan 2016 14:59:49 +0000 (15:59 +0100)] 
Remove -Wtoo-many-guards from default flags (fixes #11316)

Since #11316 indicates that having flag `-Wtoo-many-guards`
enabled by default causes issues, the simplest thing is to
remove it. This patch removes it from the default list, it
updates the docs and removes the suppression flags for
`T783` and `types/OptCoercion.hs`

Test Plan: validate

Reviewers: bgamari, austin, goldfire

Subscribers: thomie

Differential Revision:

GHC Trac Issues: #11316

3 years Add reference to Trac #5987
Ben Gamari [Tue, 5 Jan 2016 14:09:57 +0000 (15:09 +0100)] Add reference to Trac #5987

3 years agoRelease notes: Mention remote GHCi
Ben Gamari [Tue, 5 Jan 2016 13:21:01 +0000 (14:21 +0100)] 
Release notes: Mention remote GHCi

3 years agoAdd (failing) test case for #11347
Joachim Breitner [Tue, 5 Jan 2016 09:56:47 +0000 (10:56 +0100)] 
Add (failing) test case for #11347

Unfortunately, I could not add the expected error message, so if someone
accidentally fixes this bug, this test will still be failing (no harm).
But maybe someone stumbles over it then and can update the expected

3 years agoAvoid generating guards for CoPats if possible (Addresses #11276)
George Karachalias [Mon, 4 Jan 2016 20:02:26 +0000 (21:02 +0100)] 
Avoid generating guards for CoPats if possible (Addresses #11276)

When translating a `CoPat` to `PmPat` check whether the wrapper
is just a hole or a cast with refl. In these cases we can safely
drop the wrapper and generate less guard patterns. Fixes T11276.

Test Plan: validate

Reviewers: bgamari, austin

Subscribers: thomie

Differential Revision:

GHC Trac Issues: #11276

3 years agoBuild system: delete ghc-pwd
Thomas Miedema [Mon, 4 Jan 2016 17:29:49 +0000 (18:29 +0100)] 
Build system: delete ghc-pwd

On Windows, with msys2, `pwd` works (as can be seen by the use of `pwd`
that slipped into the validate script), so there is really no need for
`ghc-pwd` anymore.

Test Plan: try it

Reviewers: austin, bgamari, Phyx

Reviewed By: Phyx

Subscribers: Phyx, erikd

Differential Revision:

3 years agousers_guide: Add ghci-cmd directive
Ben Gamari [Mon, 4 Jan 2016 15:43:02 +0000 (16:43 +0100)] 
users_guide: Add ghci-cmd directive

Note only does this make the markup cleaner and more semantic, but it
clears up some warnings and enables proper hyperlinks. Yay Sphinx!

While I was at it I generally cleaned up the markup

Test Plan: Read it

Reviewers: hvr, thomie, austin

Differential Revision:

3 years agoRewrite Haddocks for GHC.Base.const
Ben Gamari [Mon, 4 Jan 2016 15:42:08 +0000 (16:42 +0100)] 
Rewrite Haddocks for GHC.Base.const

Test Plan: Read it

Reviewers: austin, hvr, #core_libraries_committee

Subscribers: thomie

Differential Revision:

GHC Trac Issues: #11314

3 years agoLinker: Move helpers to #ifdef
Ben Gamari [Mon, 4 Jan 2016 15:36:33 +0000 (16:36 +0100)] 
Linker: Move helpers to #ifdef

Otherwise Clang seems to complain about unused static definitions.

3 years agoUpdate .mailmap [skip ci]
Thomas Miedema [Sat, 19 Dec 2015 10:41:44 +0000 (11:41 +0100)] 
Update .mailmap [skip ci]

3 years agoLinker: ARM: Don't change to BLX if jump needed veneer
Ben Gamari [Mon, 4 Jan 2016 00:39:39 +0000 (01:39 +0100)] 
Linker: ARM: Don't change to BLX if jump needed veneer

Since we produce ARM veneer.

3 years agoAdd test for #10379
Thomas Miedema [Sun, 3 Jan 2016 18:57:42 +0000 (19:57 +0100)] 
Add test for #10379

3 years agoOmit TEST=T10697_decided_3 WAY=ghci
Thomas Miedema [Fri, 1 Jan 2016 11:46:37 +0000 (12:46 +0100)] 
Omit TEST=T10697_decided_3 WAY=ghci

3 years agoLinker: Use contiguous mmapping on ARM
Ben Gamari [Sun, 3 Jan 2016 12:21:39 +0000 (13:21 +0100)] 
Linker: Use contiguous mmapping on ARM

ARM has a 24-bit relative jump offset just like PowerPC. Ensure that
symbols don't get too far from their symbol extras.

See #11340.

Differential Revision:

3 years agoLinker: Make debugging output a bit more readable
Ben Gamari [Sun, 3 Jan 2016 12:31:20 +0000 (13:31 +0100)] 
Linker: Make debugging output a bit more readable

Differential Revision:

3 years agoLinker: ARM: Refactor relocation handling
Ben Gamari [Sun, 3 Jan 2016 12:27:58 +0000 (13:27 +0100)] 
Linker: ARM: Refactor relocation handling

This refactors handling of R_ARM_CALL, R_ARM_JUMP24, R_ARM_MOVW_NC, and
R_ARM_MOVT relocations to follow the LLVM LLD implementation. The "ELF
for ARM"  specification is (like most documents of this type, sadly) a
bit vague in some areas, so it seems safest to follow the behavior of a
trusted implementation like LLD, which is remarkable in its clarity..

Moreover, we now throw a proper error message when a jump to a symbol
extra is out of range. This is great improvement over the previous
behavior, which ended in a segfault.

See #11340.

Differential Revision:

3 years agoLinker: ARM: Ensure that cache flush covers all symbol extras
Ben Gamari [Sun, 3 Jan 2016 12:25:37 +0000 (13:25 +0100)] 
Linker: ARM: Ensure that cache flush covers all symbol extras

Previously part of the last symbol extra wasn't covered.

Differential Revision:

3 years agoTest Trac #11336
Simon Peyton Jones [Sat, 2 Jan 2016 22:09:21 +0000 (22:09 +0000)] 
Test Trac #11336

3 years agoAnnDotDot missing for Pattern Synonym export
Alan Zimmerman [Sat, 2 Jan 2016 10:16:20 +0000 (12:16 +0200)] 
AnnDotDot missing for Pattern Synonym export

For the following code fragment

    {-# LANGUAGE PatternSynonyms #-}

    module ExportSyntax ( A(.., NoA), Q(F,..), G(T,..,U)) where

The second and third .. are missing AnnDotdot annotations.

Closes #11332

3 years agomk/ drop unused CONF_CC_OPTS for ia64
Sergei Trofimovich [Fri, 1 Jan 2016 22:43:18 +0000 (22:43 +0000)] 
mk/ drop unused CONF_CC_OPTS for ia64

thus option does not work for a while.

Signed-off-by: Sergei Trofimovich <>
3 years agoAPI Annotations: AnnTilde missing
Alan Zimmerman [Fri, 1 Jan 2016 16:59:52 +0000 (18:59 +0200)] 
API Annotations: AnnTilde missing

In T10689a.hs, the fragment

    data instance Sing (z :: [a])
      = z ~ '[] =>
      | forall (m :: a)
               (n :: [a]). z ~ (:) m n =>
        SCons (Sing m) (Sing n)

ends up with the AnnTilde annotations for the two tildes not attached to
the final AST.

This patch moves the AnnTilde to the right place.

Closes #11321

3 years agoAdd strictness for runRW#
Simon Peyton Jones [Thu, 31 Dec 2015 22:25:31 +0000 (22:25 +0000)] 
Add strictness for runRW#

runRW# isn't inlined until CorePrep, so it's good to expose its
strictness.  Moreover, if we don't we can get obscure failures
in coreToStg; see Note [runRW arg] in CorePrep.

This fixes Trac #11291, and makes DfltProb1 compile with -O
always in order to expose it more vigorously

3 years agoUpdate Cabal submodule, Fixes #11326
Alan Zimmerman [Fri, 1 Jan 2016 09:11:57 +0000 (11:11 +0200)] 
Update Cabal submodule, Fixes #11326

Troublesome commit in Cabal was reverted.

3 years agoMinor fix of MonadFail instance for `ReadPrec`
Herbert Valerio Riedel [Fri, 1 Jan 2016 00:50:07 +0000 (01:50 +0100)] 
Minor fix of MonadFail instance for `ReadPrec`

This fixes the instance to be semantically cleaner but other than that
this fix has no practical consequences as the implementations of
`Monad(fail)` and `MonadFail(fail)` for `ReadP` coincide.

3 years agoCanonicalise `MonadPlus` instances
Herbert Valerio Riedel [Fri, 1 Jan 2016 00:45:08 +0000 (01:45 +0100)] 
Canonicalise `MonadPlus` instances

This refactoring exploits the fact that since AMP, in most cases,
`instance MonadPlus` can be automatically derived from the respective
`Alternative` instance.  This is because `MonadPlus`'s default method
implementations are fully defined in terms of `Alternative(empty, (<>))`.

3 years agotravis: use GHC 7.10.3
Herbert Valerio Riedel [Thu, 31 Dec 2015 22:49:49 +0000 (23:49 +0100)] 
travis: use GHC 7.10.3

3 years agoUpdate haskeline submodule to latest snapshot
Herbert Valerio Riedel [Thu, 31 Dec 2015 22:42:59 +0000 (23:42 +0100)] 
Update haskeline submodule to latest snapshot

This pulls in a fix to suppress a `hsc2hs`-related
warning in the windows backend.

3 years agoSimplify -fcmm-sink handling for Parser.hs
Herbert Valerio Riedel [Thu, 31 Dec 2015 20:33:46 +0000 (21:33 +0100)] 
Simplify -fcmm-sink handling for Parser.hs

As we're requiring GHC >= 7.10 now, the conditional handling introduced
in 9e133b9dccec0553c6ec302d6ca0d3bc5eea06c4 for addressing #8182 can be
made unconditional, and thus simplify the build-system a little bit.

3 years agoRemove ghc-7.8 `-package-name`-compat handling
Herbert Valerio Riedel [Thu, 31 Dec 2015 20:25:26 +0000 (21:25 +0100)] 
Remove ghc-7.8 `-package-name`-compat handling

This code was introduced in 66218d15b7c27a4a38992003bd761f60bae84b1f to
use `-package-name` for GHC 7.8, whereas GHC 7.10 needs the new
`-this-package-key` flag.

3 years agoRemove some redundant definitions/constraints
Herbert Valerio Riedel [Thu, 31 Dec 2015 15:42:38 +0000 (16:42 +0100)] 
Remove some redundant definitions/constraints

Starting with GHC 7.10 and base-4.8, `Monad` implies `Applicative`,
which allows to simplify some definitions to exploit the superclass
relationship. This a first refactoring to that end.

3 years agoDrop pre-AMP compatibility CPP conditionals
Herbert Valerio Riedel [Thu, 31 Dec 2015 12:47:43 +0000 (13:47 +0100)] 
Drop pre-AMP compatibility CPP conditionals

Since GHC 8.1/8.2 only needs to be bootstrap-able by GHC 7.10 and
GHC 8.0 (and GHC 8.2), we can now finally drop all that pre-AMP
compatibility CPP-mess for good!

Reviewers: austin, goldfire, bgamari

Subscribers: goldfire, thomie, erikd

Differential Revision:

3 years agoDrop redundant/explicit `=1` in `-DFOO=1` flags
Herbert Valerio Riedel [Thu, 31 Dec 2015 21:01:26 +0000 (22:01 +0100)] 
Drop redundant/explicit `=1` in `-DFOO=1` flags

Quoting the POSIX standard for the `-D` C compiler flag:

  -D  name[=value]

      Define name as if by a C-language #define directive.
      If no `=value` is given, a value of 1 shall be used.

Removing this explicit `=1` definition from `-D` flags which are used to
define boolean macro constants makes the CLI invocation a bit more
idiomatic and reduces visual noise in debugging output
(flags containing `=`s are additionally put in single-quotes by GHC)

3 years agoUse 0/1 instead of YES/NO as `__GLASGOW_HASKELL_TH__` macro value
Herbert Valerio Riedel [Thu, 31 Dec 2015 20:02:50 +0000 (21:02 +0100)] 
Use 0/1 instead of YES/NO as `__GLASGOW_HASKELL_TH__` macro value

Using `YES`/`NO` causes all sorts of problems as CPP doesn't work on
symbolic tokens but rather on scalar values.

A use like

   {-# LANGUAGE TemplateHaskell #-}

doesn't do what one may naively expect, and neither does

   {-# LANGUAGE TemplateHaskell #-}

*unless* `YES` happens to evaluate to a non-zero scalar.

`__GLASGOW_HASKELL_TH__ was originally introduced via D396 / #9734.

Fixes #11322

Reviewed By: austin

Differential Revision:

3 years agoDrop redundant `-D__GLASGOW_HASKELL__=...` flag
Herbert Valerio Riedel [Thu, 31 Dec 2015 15:58:28 +0000 (16:58 +0100)] 
Drop redundant `-D__GLASGOW_HASKELL__=...` flag

In 3549c952b535803270872adaf87262f2df0295a4 a `include/ghcversions.h` include
file was introduced which defines `__GLASGOW_HASKELL__` as well.

So there's no need to define it twice.

3 years agoTest Trac #11245
Simon Peyton Jones [Thu, 31 Dec 2015 14:32:27 +0000 (14:32 +0000)] 
Test Trac #11245

3 years agoComments only
Simon Peyton Jones [Thu, 31 Dec 2015 09:21:58 +0000 (09:21 +0000)] 
Comments only

3 years agoImprove exprIsBottom
Simon Peyton Jones [Thu, 31 Dec 2015 09:07:33 +0000 (09:07 +0000)] 
Improve exprIsBottom

This fixes Trac #11290, by being sligthtly cleverer about finding
what expressions are bottom.  Actually this might have minor
other side benefits.

3 years agofix ghci build on ArchUnknown targets
Sergei Trofimovich [Thu, 31 Dec 2015 10:32:40 +0000 (10:32 +0000)] 
fix ghci build on ArchUnknown targets

Observed failure on ia64 as:

    "inplace/bin/hsc2hs" \
         ... \
         --cflag=-Dia64_HOST_ARCH=1 --cflag=-Dlinux_HOST_OS=1 \
         ... \
         libraries/ghci/./GHCi/InfoTable.hsc \
         -o libraries/ghci/dist-install/build/GHCi/InfoTable.hs

    InfoTable.hsc:84:2: error: #error Unknown architecture

Signed-off-by: Sergei Trofimovich <>
3 years agoVarious API Annotations fixes
Alan Zimmerman [Wed, 30 Dec 2015 16:51:53 +0000 (18:51 +0200)] 
Various API Annotations fixes

- Export unicodeAnn from GHC
- unicodeAnn for Annlarrowtail was wrong
- Use actual source for a CImport SourceText

3 years agoAddress #11245: Ensure the non-matched list is always non-empty
George Karachalias [Wed, 30 Dec 2015 15:09:29 +0000 (16:09 +0100)] 
Address #11245: Ensure the non-matched list is always non-empty

When there is an uncovered vector of length 0 (which in turn means that
it represents a guard failure) print "(incomplete guards)" instead of an
empty list of non-covered vectors.

Test Plan: validate

Reviewers: austin, bgamari

Reviewed By: bgamari

Subscribers: thomie

Differential Revision:

GHC Trac Issues: #11245

3 years agoBump GHC HEAD's Version from 7.11 to 8.1 ghc-8.1-start
Herbert Valerio Riedel [Wed, 30 Dec 2015 16:28:13 +0000 (17:28 +0100)] 
Bump GHC HEAD's Version from 7.11 to 8.1

This updates the haddock submodule

3 years agoglasgow_exts.rst: fix code block
Sergei Trofimovich [Wed, 30 Dec 2015 16:21:25 +0000 (16:21 +0000)] 
glasgow_exts.rst: fix code block

Detected by sphinx as:
    ERROR: Unexpected indentation.

Signed-off-by: Sergei Trofimovich <>
3 years agorts/Linker.c: mark ia64 as 64-bit ELF, drop unused branches
Sergei Trofimovich [Wed, 30 Dec 2015 12:40:56 +0000 (12:40 +0000)] 
rts/Linker.c: mark ia64 as 64-bit ELF, drop unused branches

Signed-off-by: Sergei Trofimovich <>
3 years agorts/PrimOps.cmm: fix UNREG profiled build
Sergei Trofimovich [Wed, 30 Dec 2015 12:35:53 +0000 (12:35 +0000)] 
rts/PrimOps.cmm: fix UNREG profiled build

Brought 'CCS_MAIN' into scope, otherwise UNREG
prof build is unhappy:

    rts_dist_HC rts/dist/build/PrimOps.p_o
  /tmp/ghc25593_0/ghc_3.hc: In function 'clB_entry':

  /tmp/ghc25593_0/ghc_3.hc:2983:24: error:
     error: 'CCS_MAIN' undeclared (first use in this function)
     *((P_)(_cly+8)) = (W_)&CCS_MAIN;

Signed-off-by: Sergei Trofimovich <>
3 years agoFix some typos
Gabor Greif [Wed, 30 Dec 2015 12:27:57 +0000 (13:27 +0100)] 
Fix some typos

3 years agoTestsuite: mark T7653 with high_memory_usage
Thomas Miedema [Sat, 26 Dec 2015 13:32:55 +0000 (14:32 +0100)] 
Testsuite: mark T7653 with high_memory_usage

3 years agousers_guide/ghci: Fix heading
Ben Gamari [Wed, 30 Dec 2015 10:21:43 +0000 (11:21 +0100)] 
users_guide/ghci: Fix heading