4 years agoMerge branch 'master' into wip/generics-propeq wip/generics-propeq
Gabor Greif [Fri, 8 Aug 2014 16:01:19 +0000 (18:01 +0200)] 
Merge branch 'master' into wip/generics-propeq


4 years agoImplement the final change to INCOHERENT from Trac #9242
Simon Peyton Jones [Fri, 8 Aug 2014 07:35:14 +0000 (08:35 +0100)] 
Implement the final change to INCOHERENT from Trac #9242

The change here is to make INCOHERENT slightly more permissive:

  if the selected candidate is incoherent
  then ignore all unifying candidates

This allows us to move the {-# INCOHERENT #-} pragma from
  from   instance Typeable (f a)
  to     Typeable (n:Nat) and Typable (s:Symbol)
where it belongs, and where Trac #9242 said it should be.

I don't think this will affect anyone.

I've updated the user manual.

4 years agoUpdate Haddock to attoparsec-0.12.1. Adjust perf.
Mateusz Kowalczyk [Fri, 8 Aug 2014 04:13:13 +0000 (06:13 +0200)] 
Update Haddock to attoparsec-0.12.1. Adjust perf.

Please adjust the perf number on your platform if/when it fails. It
should improve slightly. Updates submodule.

4 years agoUpdate perf number for T5642
Joachim Breitner [Thu, 7 Aug 2014 21:27:12 +0000 (23:27 +0200)] 
Update perf number for T5642

This  +4% increase (from -1% before) was caused by 1fc60ea. But that
commit did not cause any other regressions, so I’m not investigating

4 years agotestsuite: add signal_exit_code function to the driver
Karel Gardas [Thu, 7 Aug 2014 20:00:25 +0000 (22:00 +0200)] 
testsuite: add signal_exit_code function to the driver

New function signal_exit_code hides differences between target platforms
handling of fatal error signals and the applications' exit codes. E.g.
on Linux the application exit code which receives fatal error signal
is encoded as 128 + signal value. On the other hand on Solaris
the application exit code is signal value alone.

Test Plan: validated on Linux and tested on Solaris

Reviewers: austin, simonmar

Reviewed By: simonmar

Subscribers: phaskell, simonmar, relrod, ezyang, carter

Differential Revision:

4 years agoghci: tweak option list indentation in ':show packages'
Sergei Trofimovich [Thu, 7 Aug 2014 15:48:03 +0000 (18:48 +0300)] 
ghci: tweak option list indentation in ':show packages'

Caught by './validate --slow' in 'ghci/scripts/ghci024'.

Commit 207875293fea07aa90efe215369629b657d1875a changed indentation a bit:

    --- ./ghci/scripts/ghci024.stdout       2014-07-31 12:05:34.000000000 +0300
    +++ ./ghci/scripts/   2014-08-07 17:19:23.000000000 +0300
    @@ -33,4 +33,4 @@
     active package flags: none
     ~~~~~~~~~~ Testing :show packages, including the ghc package
     active package flags:
    -  -package ghc
    +-package ghc

Patch restores indentation.

Signed-off-by: Sergei Trofimovich <>
Test Plan: passed validate, tested manually

Reviewers: austin, ezyang

Reviewed By: ezyang

Subscribers: phaskell, simonmar, relrod, ezyang, carter

Differential Revision:

4 years ago[no-ci] Track Haddock submodule change: ignore TAGS.
Edward Z. Yang [Thu, 7 Aug 2014 13:23:57 +0000 (14:23 +0100)] 
[no-ci] Track Haddock submodule change: ignore TAGS.

Signed-off-by: Edward Z. Yang <>
4 years agoPermanently accept the Haddock performance number bump, and add some TODOs
Edward Z. Yang [Thu, 7 Aug 2014 13:15:13 +0000 (14:15 +0100)] 
Permanently accept the Haddock performance number bump, and add some TODOs

I bisected the performance difference in Haddock and found it was due to
d6aec63c009c4e57181900eb03847d7dc0fc3c7c, which I accidentally picked up
when updating Haddock 00b8f8c5b378fc679639ebe81238cf42d92aa607.  The
performance regression is justified by the fact that we are now actually
processing URLs in Haddock comments that we were not previously, so
there would be more allocation.  Time use was not affected.

The TODOs simply reflect the fact that we need updated numbers for
32-bit Linux and Windows.  Please add them when you get a chance.

Signed-off-by: Edward Z. Yang <>
4 years agoGive the Unique generated by strings a tag '$', fixes #9413.
Edward Z. Yang [Wed, 6 Aug 2014 10:55:06 +0000 (11:55 +0100)] 
Give the Unique generated by strings a tag '$', fixes #9413.

Previously, we allocated uniques for strings starting at zero, which
means the tag bits in the unique are zero, which means that printing a
Unique for a string will start with a null byte.  This is bad.  So
instead, start our numbering with the tag byte as '$' (as in $tring).
This is hard coded so we don't have to worry about the optimizer
reducing the expression.

Signed-off-by: Edward Z. Yang <>
Test Plan: validate

Reviewers: hvr, simonmar, austin

Subscribers: simonmar, relrod, ezyang, carter

Differential Revision:

GHC Trac Issues: #9413

4 years agoFix some typos in recent comments/notes
Gabor Greif [Thu, 7 Aug 2014 11:22:25 +0000 (13:22 +0200)] 
Fix some typos in recent comments/notes

4 years agoTest Trac #9390
Simon Peyton Jones [Thu, 7 Aug 2014 09:08:00 +0000 (10:08 +0100)] 
Test Trac #9390

4 years agoAdd has_side_effets to the raise# primop
Simon Peyton Jones [Thu, 7 Aug 2014 06:56:28 +0000 (07:56 +0100)] 
Add has_side_effets to the raise# primop

According to the definition of has_side_effets in PrimOp,
raise# clearly has side effects!  In practice it makes little
difference becuase the fact that it returns bottom is more
important... but still it's better to say it right.

4 years agoRefactor the handling of case-elimination
Simon Peyton Jones [Thu, 7 Aug 2014 06:47:28 +0000 (07:47 +0100)] 
Refactor the handling of case-elimination

Mainly in Simplify.rebuildCase.  The old code wasn't wrong, but I kept
mis-understanding it.  This patch cuts splits out "pure seq" from "strict
let", which makes it much easier to grok.

4 years agoExtensive Notes on can_fail and has_side_effects
Simon Peyton Jones [Thu, 7 Aug 2014 06:46:24 +0000 (07:46 +0100)] 
Extensive Notes on can_fail and has_side_effects

In fixing Trac #9390 I discovered that I *still* didn't really understand
what the can_fail and has_side_effects properties of a PrimOp mean, precisely.

The big new things I learned are

* has_side_effects needs to be true only of *write* effects,
  Reads (which are, strictly speaking, effects) don't matter here.

* has_side_effects must be true of primops that can throw a synchronous
  Haskell exception (eg raiseIO#)

* can_fail is true only of primops that can cause an *unchecked* (not
  Haskell) system exception, like divide by zero, or accessing memory
  out of range through an array read or write.

I've documented all this now.  The changes in this patch are only
in comments.

4 years agoDocument the maintenance of the let/app invariant in the simplifier
Simon Peyton Jones [Mon, 4 Aug 2014 15:37:57 +0000 (16:37 +0100)] 
Document the maintenance of the let/app invariant in the simplifier

It's not obvious why the simplifier generates code that correctly satisfies
the let/app invariant.   This patch does some minor refactoring, but the main
point is to document pre-conditions to key functions, namely that the rhs
passed in satisfies the let/app invariant.

There shouldn't be any change in behaviour.

4 years agoMake buildToArrPReprs obey the let/app invariant
Simon Peyton Jones [Mon, 4 Aug 2014 12:03:09 +0000 (13:03 +0100)] 
Make buildToArrPReprs obey the let/app invariant

Vectorise.Generic.PAMethods.buildToArrPReprs was building an expression like
   pvoids# (lengthSels2# sels)
which does not satisfy the let/app invariant.  It should be more like
  case lengthSels2# sels of l -> pvoids# l

This was caught by Core Lint (once it was taught to check for the invariant)

4 years agoWhen desugaring Use the smart mkCoreConApps and friends
Simon Peyton Jones [Fri, 1 Aug 2014 15:56:10 +0000 (16:56 +0100)] 
When desugaring Use the smart mkCoreConApps and friends

This is actually the bug that triggered Trac #9390.  We had
an unboxed tuple (# writeArray# ..., () #), and that writeArray#
argument isn't ok-for-speculation, so disobeys the invariant.

The desugaring of unboxed tuples was to blame; the fix is easy.

4 years agoDon't float into unlifted function arguments
Simon Peyton Jones [Fri, 1 Aug 2014 15:53:21 +0000 (16:53 +0100)] 
Don't float into unlifted function arguments

We were inadvertently destroying the let/app invariant,
by floating into an unlifted function argument.

4 years agoMake Core Lint check the let/app invariant
Simon Peyton Jones [Fri, 1 Aug 2014 15:41:52 +0000 (16:41 +0100)] 
Make Core Lint check the let/app invariant

If we have an invariant, Lint should jolly well check it.

(And indeed, adding this test throws up Lint errors that
are fixed in separate patches.)

4 years agoAdd Output instance for OrdList
Simon Peyton Jones [Fri, 1 Aug 2014 15:40:18 +0000 (16:40 +0100)] 
Add Output instance for OrdList

4 years agoTiny refactoring, plus comments; no change in behaviour
Simon Peyton Jones [Fri, 1 Aug 2014 15:39:47 +0000 (16:39 +0100)] 
Tiny refactoring, plus comments; no change in behaviour

4 years agoMove Outputable instance for FloatBind to the data type definition
Simon Peyton Jones [Fri, 1 Aug 2014 15:39:20 +0000 (16:39 +0100)] 
Move Outputable instance for FloatBind to the data type definition

4 years agoComments and white space
Simon Peyton Jones [Fri, 1 Aug 2014 15:38:33 +0000 (16:38 +0100)] 
Comments and white space

4 years agofix T658b/T5776 to use POSIX grep -c instead of GNU's --count
Karel Gardas [Wed, 6 Aug 2014 22:11:45 +0000 (00:11 +0200)] 
fix T658b/T5776 to use POSIX grep -c instead of GNU's --count

4 years agofix linker_unload test for ghc configurations with --with-gmp-libraries
Karel Gardas [Wed, 6 Aug 2014 21:29:46 +0000 (23:29 +0200)] 
fix linker_unload test for ghc configurations with --with-gmp-libraries

The issue is presented in Makefile logic where it attempts to start
linker_unload and pass it HSinteger-gmp library for unload,
but the library name is prefixed with two directories names. The first
is of ghc's integer-gmp/build itself and another is the directory name
passed to --with-gmp-libraries= configure parameter. The testcase then
fails on unloading integer-gmp/build directory thinking that this is
a library to unload. The issue is solved by cuting (head -1) the first
library name from the list and using this for unloading the HSinteger-gmp
library. I use head -1 instead of cut -d ' ' here since ghc may be
installed into the directory with space(s) in its name like in the case
when running validate.

4 years agofix linker_unload test _FILE_OFFSET_BITS redefined warning on Solaris/i386
Karel Gardas [Wed, 6 Aug 2014 21:22:31 +0000 (23:22 +0200)] 
fix linker_unload test _FILE_OFFSET_BITS redefined warning on Solaris/i386

4 years agoMark type-rep not as expect_broken when debugged
Joachim Breitner [Wed, 6 Aug 2014 20:29:41 +0000 (22:29 +0200)] 
Mark type-rep not as expect_broken when debugged

Thanks to slyfox for noticing this reregression.

4 years agoRevert "fix linker_unload test on Solaris/i386 platform"
Karel Gardas [Wed, 6 Aug 2014 19:52:20 +0000 (21:52 +0200)] 
Revert "fix linker_unload test on Solaris/i386 platform"

This reverts commit 65e5dbcd3971cb3ef5b9073096e5d063034b90c1.

4 years agoTemporarily bump Haddock numbers; I'm going to fix it.
Edward Z. Yang [Tue, 5 Aug 2014 18:03:58 +0000 (11:03 -0700)] 
Temporarily bump Haddock numbers; I'm going to fix it.

Signed-off-by: Edward Z. Yang <>
4 years agoFilter out null bytes from trace, and warn accordingly, fixing #9395.
Edward Z. Yang [Tue, 5 Aug 2014 16:55:00 +0000 (09:55 -0700)] 
Filter out null bytes from trace, and warn accordingly, fixing #9395.

Previously, if you ran trace "foo\0bar", the output was truncated so
that everything after the null byte was omitted.  This was terrible.
Now we filter out null bytes, and emit an extra trace saying that
null bytes were filtered out.

NB: we CANNOT fix debugBelch, because all printf variants *always*
respect null bytes, even if you're using string precision such as
%.*s.  The alternative would have been to introduce a new function
debugRawBelch which did not use format strings and took an explicit
string length, but I decided we generally should avoid putting null
bytes in our trace messages, and warn the user.

Signed-off-by: Edward Z. Yang <>
Test Plan: validate

Reviewers: hvr, austin

Subscribers: simonmar, relrod, ezyang, carter

Differential Revision:

GHC Trac Issues: #9395

4 years agoUpdate Haddock submodule to know about profiling.
Edward Z. Yang [Tue, 5 Aug 2014 16:35:53 +0000 (17:35 +0100)] 
Update Haddock submodule to know about profiling.

Signed-off-by: Edward Z. Yang <>
4 years drop unused VOID_INT_SIGNALS
Sergei Trofimovich [Tue, 5 Aug 2014 14:44:49 +0000 (17:44 +0300)] drop unused VOID_INT_SIGNALS

Another macro borrowed from hugs, gone aways in
commit 528a7d2cf1c90408d60028bb1fec85124d539476

Signed-off-by: Sergei Trofimovich <>
Test Plan: build-tested

Reviewers: simonmar, austin, ezyang

Reviewed By: austin, ezyang

Subscribers: phaskell, simonmar, relrod, ezyang, carter

Differential Revision:

4 years ago[no-ci] Minor bugfixes in Backpack docs.
Edward Z. Yang [Tue, 5 Aug 2014 13:24:45 +0000 (14:24 +0100)] 
[no-ci] Minor bugfixes in Backpack docs.

Signed-off-by: Edward Z. Yang <>
4 years agoThinning and renaming modules from packages on the command line.
Edward Z. Yang [Sat, 2 Aug 2014 12:50:00 +0000 (13:50 +0100)] 
Thinning and renaming modules from packages on the command line.

This patch set adds support for extra syntax on -package and related
arguments which allow you to thin and rename modules from a package.
For example, this argument:

    -package "base (Data.Bool as Bam, Data.List)"

adds two more modules into scope, Bam and Data.List, without adding
any of base's other modules to scope.

These flags are additive: so, for example, saying:

    -hide-all-packages -package base -package "base (Data.Bool as Bam)"

will provide both the normal bindings for modules in base, as well as
the module Bam.

There is also a new debug flag -ddump-mod-map which prints the state
of the module mapping database.  H = hidden, E = exposed (so for
example EH says the module in question is exported, but in a hidden

Module suggestions have been minorly overhauled to work better with reexports:
if you have -package "base (Data.Bool as Bam)" and mispell Bam, GHC
will suggest "Did you mean Bam (defined via package flags to be
base:Data.Bool)"; and generally you will get more accurate information.
Also, fix a bug where we suggest the -package flag when we really need
the -package-key flag.

NB: The renaming afforded here does *not* affect what wired in
symbols GHC generates.  (But it does affect implicit prelude!)

ToDo: add 'hiding' functionality, to make it easier to support the alternative
prelude use-case.

ToDo: Cabal support

Signed-off-by: Edward Z. Yang <>
Test Plan: new tests and validate

Reviewers: simonpj, simonmar, hvr, austin

Subscribers: simonmar, relrod, ezyang, carter

Differential Revision:

GHC Trac Issues: #9375

4 years agoRefactor PackageFlags so that ExposePackage is a single constructor.
Edward Z. Yang [Fri, 1 Aug 2014 18:07:03 +0000 (19:07 +0100)] 
Refactor PackageFlags so that ExposePackage is a single constructor.

You can parametrize over the different selection by using a
different PackageArg.  This helps reduce code duplication.

Signed-off-by: Edward Z. Yang <>
4 years agoRefactor package state, also fixing a module reexport bug.
Edward Z. Yang [Fri, 1 Aug 2014 17:03:20 +0000 (18:03 +0100)] 
Refactor package state, also fixing a module reexport bug.

Instead of building a multiply indirected data structure and querying
it on every import, we now have two data structures moduleToPkgConf
and moduleToPkgConfAll.  moduleToPkgConf is a single-level UniqFM that
is intended to be used for most valid imports; however, it does not
contain any information useful for error reporting.  If an error is
occurred, we then query moduleToPkgConfAll, which contains a more
comprehensive view of the package database.  This field is lazily
initialized (so this means we're retaining the package database list,
but this should be fine because we're already maintaining the entries
of the list.)  Additionally, the full view doesn't keep track of a boolean
toggle for visibility/exposure anymore, but instead tracks the *provenance*
of how the module binding came to be (the ModuleOrigin data type).

Additionally, we move the logic for determining if a module is exposed
or not from Finder.lhs and put it in Packages.lhs; this information is
communicated via the LookupResult data type.  Unfortunately, we can't
directly return a FindResult, because this data type is defined in
HscTypes which depends on Packages.  This is going to change some more
in the near future when I add thinning/renaming to package flags; the
error messages will need to be more flexible.

I've also slightly changed the semantics of error messages for package
qualified imports.  Previously, if we didn't find any package qualified
imports, but there were hidden modules in a *different* package, the error
message would prefer mentioning those as opposed to providing suggestions.
Now, if a module is hidden but in the wrong package, we won't mention it;
instead, it will get mentioned with the other module suggestions.  I
was too lazy to write a test, but I can add one if people would like.

The module reexport bug was, package q reexported p:P as Conflict,
and package r reexported p:P2 as Conflict, this was *not* reported as
a conflict, because the old logic incorrectly decided that P and P2 were
the same module on account of being from the same package.  The logic here
has been corrected.

Contains haddock submodule update.

Signed-off-by: Edward Z. Yang <>
4 years agoMake PackageState an abstract type.
Edward Z. Yang [Fri, 1 Aug 2014 11:35:15 +0000 (12:35 +0100)] 
Make PackageState an abstract type.

Summary: Signed-off-by: Edward Z. Yang <>

Test Plan: validate

Reviewers: simonpj, simonmar, hvr, austin

Subscribers: simonmar, relrod, ezyang, carter

Differential Revision:

4 years agoDisable ghc-pkg accepting multiple package IDs (differing package keys) for now.
Edward Z. Yang [Wed, 30 Jul 2014 12:54:46 +0000 (13:54 +0100)] 
Disable ghc-pkg accepting multiple package IDs (differing package keys) for now.

Duncan requested that ghc-pkg not accept duplicate package IDs (foo-0.1)
by default until the higher level tools can accommodate it.  Until then
you'll need to use the --multi-instance flag to install multiple copies in
the package database.

I think reusing the --multi-instance flag is dodgy, because that can be used
to cause duplicate package keys; but there is a mode of use of the database
where package keys are unique.

Signed-off-by: Edward Z. Yang <>
4 years agoPackage keys (for linking/type equality) separated from package IDs.
Edward Z. Yang [Fri, 18 Jul 2014 13:48:47 +0000 (14:48 +0100)] 
Package keys (for linking/type equality) separated from package IDs.

This patch set makes us no longer assume that a package key is a human
readable string, leaving Cabal free to "do whatever it wants" to allocate
keys; we'll look up the PackageId in the database to display to the user.
This also means we have a new level of qualifier decisions to make at the
package level, and rewriting some Safe Haskell error reporting code to DTRT.

Additionally, we adjust the build system to use a new ghc-cabal output
Make variable PACKAGE_KEY to determine library names and other things,
rather than concatenating PACKAGE/VERSION as before.

Adds a new `-this-package-key` flag to subsume the old, erroneously named
`-package-name` flag, and `-package-key` to select packages by package key.

RFC: The md5 hashes are pretty tough on the eye, as far as the file
system is concerned :(

ToDo: safePkg01 test had its output updated, but the fix is not really right:
the rest of the dependencies are truncated due to the fact the we're only
grepping a single line, but ghc-pkg is wrapping its output.

ToDo: In a later commit, update all submodules to stop using -package-name
and use -this-package-key.  For now, we don't do it to avoid submodule

Signed-off-by: Edward Z. Yang <>
Test Plan: validate

Reviewers: simonpj, simonmar, hvr, austin

Subscribers: simonmar, relrod, carter

Differential Revision:

4 years agoDisable package auto-hiding if -hide-all-packages is passed
Edward Z. Yang [Thu, 31 Jul 2014 17:11:22 +0000 (18:11 +0100)] 
Disable package auto-hiding if -hide-all-packages is passed

This is in preparation for thinning/renaming package arguments, which allow
users to rename modules of packages they import.  In situations like this,
it may be desirable to load multiple copies of a package at different versions
explicitly under different names.

Signed-off-by: Edward Z. Yang <>
Test Plan: validate

Reviewers: simonpj, simonmar, hvr, austin

Subscribers: simonmar, relrod, ezyang, carter

Differential Revision:

4 years agofix topHandler03 execution on Solaris where shell signals SIGTERM correctly
Karel Gardas [Mon, 4 Aug 2014 13:15:54 +0000 (08:15 -0500)] 
fix topHandler03 execution on Solaris where shell signals SIGTERM correctly

This patch fixes topHandler03 execution on Solaris where
shell correctly signals SIGTERM as exit status 15.

Test Plan: validate

Reviewers: austin

Reviewed By: austin

Subscribers: phaskell, simonmar, relrod, ezyang, carter

Differential Revision:

4 years agofix openFile003 test on Solaris/i386 (platform output is not needed anymore)
Karel Gardas [Mon, 4 Aug 2014 13:15:39 +0000 (08:15 -0500)] 
fix openFile003 test on Solaris/i386 (platform output is not needed anymore)

Test Plan: validate

Reviewers: austin

Reviewed By: austin

Subscribers: phaskell, simonmar, relrod, ezyang, carter

Differential Revision:

4 years agoghc --make: add nicer names to RTS threads (threaded IO manager, make workers)
Sergei Trofimovich [Mon, 4 Aug 2014 13:10:33 +0000 (08:10 -0500)] 
ghc --make: add nicer names to RTS threads (threaded IO manager, make workers)

The patch names most of RTS threads
and ghc (the tool) threads.

It makes nicer debug and eventlog output for ghc itself.

Signed-off-by: Sergei Trofimovich <>
Test Plan: ran debugged ghc under '+RTS -Ds'

Reviewers: simonmar, austin

Reviewed By: austin

Subscribers: phaskell, simonmar, relrod, ezyang, carter

Differential Revision:

4 years agofix linker_unload test on Solaris/i386 platform
Karel Gardas [Mon, 4 Aug 2014 13:10:11 +0000 (08:10 -0500)] 
fix linker_unload test on Solaris/i386 platform

This patch set fixes two issues in linker_unload test case
on Solaris/i386 platform. First there is an issue in linker_unload.c
which causes warning to be emitted about _FILE_OFFSET_BITS redefined.
This is solved by including ghcconfig.h as a first header file.
Another issue is that on Solaris and its builders we use to configure
ghc with --with-gmp-libraries=/usr/lib and this causes issue with
test case Makefile's logic. It attempts to start linker_unload
and pass it HSinteger-gmp library for unload, but the library
name is prefixed with two directories names. The first is of
ghc's integer-gmp/build itself and another is the directory name
passed to --with-gmp-libraries= configure parameter. In case
of Solaris this is /usr/lib. The testcase then fails on unloading
integer-gmp/build directory thinking that this is a library to unload.
This issue is solved by cuting the first library name from the list
and using this for unloading the HSinteger-gmp library.

Test Plan: validate

Reviewers: ezyang, austin

Reviewed By: ezyang, austin

Subscribers: phaskell, simonmar, relrod, ezyang, carter

Differential Revision:

4 years agoUse 'install' command for 'inplace/' install as we do in 'make install'
Sergei Trofimovich [Mon, 4 Aug 2014 13:09:44 +0000 (08:09 -0500)] 
Use 'install' command for 'inplace/' install as we do in 'make install'

On hardened gentoo ghc-stage2 does not work as-is,
as it uses runtime code generation/loading, thus
ghc0stage2 needs to be marked in a special way
(via POSIX extened attributes).

Before the patch we used 'cp -p' command, which
does not preserve that marking. It leads to buid
failure on hardened. Hardened's 'install' does
preserve POSIX xattrs, thus patch uses it instead.

'inplace/' directory can be seen the same way as target
for 'make install', thus using the same facilities
to install files to 'inplace/' sounds more consistent.

Reported-by: Jay Yang
Signed-off-by: Sergei Trofimovich <>
Test Plan: tested ghc installation on vanilla and hardened distributions

Reviewers: austin

Reviewed By: austin

Subscribers: phaskell, simonmar, relrod, ezyang, carter

Differential Revision:

4 years agodocs: fix typo: 'OVERLAPPINGP' -> 'OVERLAPPING'
Sergei Trofimovich [Mon, 4 Aug 2014 13:09:29 +0000 (08:09 -0500)] 
docs: fix typo: 'OVERLAPPINGP' -> 'OVERLAPPING'

Summary: Signed-off-by: Sergei Trofimovich <>

Test Plan: proofread

Reviewers: ezyang, austin

Reviewed By: ezyang, austin

Subscribers: phaskell, ezyang, simonmar, relrod, carter

Differential Revision:

4 years agoTerminate in forkProcess like in real_main
Edsko de Vries [Mon, 4 Aug 2014 13:09:11 +0000 (08:09 -0500)] 
Terminate in forkProcess like in real_main

Test Plan: validate

Reviewers: simonmar, austin

Reviewed By: simonmar, austin

Subscribers: phaskell, simonmar, relrod, carter

Differential Revision:

GHC Trac Issues: #9377

4 years agoAdd missing *.stderr files
Joachim Breitner [Sat, 2 Aug 2014 08:00:22 +0000 (10:00 +0200)] 
Add missing *.stderr files

which probably should have been added in commit fbd0586ea

4 years agoAdd in (disabled for now) test of a Safe Haskell bug.
David Terei [Sat, 2 Aug 2014 01:50:45 +0000 (18:50 -0700)] 
Add in (disabled for now) test of a Safe Haskell bug.

4 years agoInfer safety of modules correctly with new overlapping pragmas.
David Terei [Sat, 2 Aug 2014 01:49:43 +0000 (18:49 -0700)] 
Infer safety of modules correctly with new overlapping pragmas.

4 years agoUpdate Safe Haskell typeable test outputs.
David Terei [Thu, 31 Jul 2014 17:12:35 +0000 (10:12 -0700)] 
Update Safe Haskell typeable test outputs.

4 years agoAllow warning if could have been infered safe instead of explicit
David Terei [Tue, 18 Mar 2014 22:45:54 +0000 (15:45 -0700)] 
Allow warning if could have been infered safe instead of explicit
Trustworthy label.

4 years agoDont allow hand-written Generic instances in Safe Haskell.
David Terei [Fri, 6 Dec 2013 01:27:17 +0000 (17:27 -0800)] 
Dont allow hand-written Generic instances in Safe Haskell.

While they aren't strictly unsafe, it is a similar situation to
Typeable. There are few instances where a programmer will write their
own instance, and having compiler assurance that the Generic
implementation is correct brings a lot of benefits.

4 years agoFix-up to d4d4bef2 'Improve the desugaring of RULES'
Simon Peyton Jones [Fri, 1 Aug 2014 20:26:51 +0000 (21:26 +0100)] 
Fix-up to d4d4bef2 'Improve the desugaring of RULES'

I'd forgotten the possiblity that desugaring could generate
dead dictionary bindings; easily fixed by calling occurAnalyseExpr

4 years agoTwo new executables to ignore.
Edward Z. Yang [Fri, 1 Aug 2014 18:14:31 +0000 (19:14 +0100)] 
Two new executables to ignore.

Signed-off-by: Edward Z. Yang <>
4 years ago[backpack] More revisions to various pieces.
Edward Z. Yang [Thu, 31 Jul 2014 16:52:56 +0000 (17:52 +0100)] 
[backpack] More revisions to various pieces.

Signed-off-by: Edward Z. Yang <>
4 years agoBump haddock.base max_bytes_used
Joachim Breitner [Fri, 1 Aug 2014 17:55:52 +0000 (19:55 +0200)] 
Bump haddock.base max_bytes_used

It has reliably increased with commit 1ae5fa45, and has been stable
since then, so it does not seem to be a fluke. I did not investigate why
that commit might have increased this value.

4 years agoImprove the desugaring of RULES, esp those from SPECIALISE pragmas
Simon Peyton Jones [Fri, 1 Aug 2014 13:56:53 +0000 (14:56 +0100)] 
Improve the desugaring of RULES, esp those from SPECIALISE pragmas

In the code for Trac #8331 we were not getting a complaint, but
we *were* getting a terrible (and virtually useless) RULE, looking
   useAbstractMonad (complicated-dictionary-expresion) = $fuseAbstractMonad
where we wanted
   useAbstractMonad d = $fuseAbstractMonad

This commit improves the desugaring algorithm.  More comments
explain; see Note [Drop dictionary bindings on rule LHS]

4 years agoA panic in CmmBuildInfoTables.bundle shouldn't be a panic (#9329)
Simon Marlow [Thu, 31 Jul 2014 10:47:16 +0000 (11:47 +0100)] 
A panic in CmmBuildInfoTables.bundle shouldn't be a panic (#9329)

This code needs more comments, but I believe this is safe.  By
definition I can't have broken anything that was working by turning a
panic into a non-panic anyway.

Test Plan: validate

Reviewers: hvr, simonpj, austin

Subscribers: simonmar, relrod, ezyang, carter

Differential Revision:

GHC Trac Issues: #9329

4 years agoadd a comment
Simon Marlow [Thu, 31 Jul 2014 10:47:44 +0000 (11:47 +0100)] 
add a comment

4 years agoupdate comment
Simon Marlow [Thu, 31 Jul 2014 10:47:35 +0000 (11:47 +0100)] 
update comment

4 years agoFix reference to note
Simon Marlow [Thu, 31 Jul 2014 10:47:28 +0000 (11:47 +0100)] 
Fix reference to note

4 years agointerruptible() was not returning true for BlockedOnSTM (#9379)
Simon Marlow [Thu, 31 Jul 2014 09:00:16 +0000 (10:00 +0100)] 
interruptible() was not returning true for BlockedOnSTM (#9379)

There's an knock-on fix in HeapStackCheck.c which is potentially
scary, but I'm pretty confident is OK.  See comment for details.

Test Plan:
I've run all the STM
tests I can find, including libraries/stm/tests/stm049 with +RTS -N8
and some of the constants bumped to make it more of a stress test.

Reviewers: hvr, rwbarton, austin

Subscribers: simonmar, relrod, ezyang, carter

Differential Revision:

GHC Trac Issues: #9379

4 years agopanic message fix
Simon Marlow [Thu, 31 Jul 2014 09:33:42 +0000 (10:33 +0100)] 
panic message fix

4 years agorefactor to fix 80column overflow
Simon Marlow [Thu, 31 Jul 2014 08:30:18 +0000 (09:30 +0100)] 
refactor to fix 80column overflow

4 years agoUnbreak build.
Gabor Pali [Fri, 1 Aug 2014 08:26:53 +0000 (10:26 +0200)] 
Unbreak build.

4 years agoTypo fixes
Gabor Greif [Fri, 1 Aug 2014 00:03:08 +0000 (02:03 +0200)] 
Typo fixes

4 years agoSmall tweaks to comment
Gabor Greif [Thu, 31 Jul 2014 23:46:29 +0000 (01:46 +0200)] 
Small tweaks to comment

4 years agoMinor wordsmithing of comments
Gabor Greif [Thu, 31 Jul 2014 23:29:10 +0000 (01:29 +0200)] 
Minor wordsmithing of comments

4 years agoFix up ghci044
Simon Peyton Jones [Thu, 31 Jul 2014 20:37:01 +0000 (21:37 +0100)] 
Fix up ghci044

4 years agoTypo in comment
Gabor Greif [Thu, 31 Jul 2014 16:56:50 +0000 (18:56 +0200)] 
Typo in comment

4 years agoComplete work on new OVERLAPPABLE/OVERLAPPING pragmas (Trac #9242)
Simon Peyton Jones [Thu, 31 Jul 2014 14:49:14 +0000 (15:49 +0100)] 
Complete work on new OVERLAPPABLE/OVERLAPPING pragmas (Trac #9242)

* Deprecate -XOverlappingInstances

* Update test suite.  Several tests even had entirely unnecessary
  uses of -XOverlappingInstances

* Update user manual with a careful description of the instance
  resolution story

* Fix an outright bug in the handling of duplidate instances in GHCi,
  which are meant to silently overwrite the earlier duplicate. The
  logic was right for family instances but was both more complicated,
  and plain wrong, for class instances.  (If you are interested, the
  bug was that we were eliminating the duplicate from the InstEnv, but
  not from the [ClsInst] held in tcg_insts.)  Test is ghci044a.

4 years agoAdd comments about the {-# INCOHERENT #-} for Typeable (f a)
Simon Peyton Jones [Thu, 31 Jul 2014 13:01:32 +0000 (14:01 +0100)] 
Add comments about the {-# INCOHERENT #-} for Typeable (f a)

C.f. Trac #9242

4 years agoComments only
Simon Peyton Jones [Thu, 31 Jul 2014 12:49:47 +0000 (13:49 +0100)] 
Comments only

4 years agoAdd a fast-path in TcInteract.kickOutRewritable
Simon Peyton Jones [Thu, 31 Jul 2014 12:49:32 +0000 (13:49 +0100)] 
Add a fast-path in TcInteract.kickOutRewritable

4 years agoTest Trac #9380
Simon Peyton Jones [Thu, 31 Jul 2014 12:48:46 +0000 (13:48 +0100)] 
Test Trac #9380

4 years agoComments and white space
Simon Peyton Jones [Mon, 28 Jul 2014 13:21:04 +0000 (14:21 +0100)] 
Comments and white space

4 years ago[backpack] Package selection
Edward Z. Yang [Thu, 31 Jul 2014 13:05:02 +0000 (14:05 +0100)] 
[backpack] Package selection

Signed-off-by: Edward Z. Yang <>
4 years agoCompiler perf has improved a bit
Simon Peyton Jones [Thu, 31 Jul 2014 07:57:35 +0000 (08:57 +0100)] 
Compiler perf has improved a bit

4 years agoComments and minor refactoring
Simon Peyton Jones [Thu, 31 Jul 2014 07:57:13 +0000 (08:57 +0100)] 
Comments and minor refactoring

- Better comments about Generalised Newtype Deriving
  See Note [Bindings for Generalised Newtype Deriving]

- Refactor the interface between TcDeriv and TcGenDeriv,
  to reduce the size of the interface of the latter.

4 years agoComments and white space
Simon Peyton Jones [Tue, 29 Jul 2014 21:01:59 +0000 (22:01 +0100)] 
Comments and white space

4 years agoAllow multiple entry points when allocating recursive groups (#9303)
Simon Marlow [Tue, 22 Jul 2014 11:04:32 +0000 (12:04 +0100)] 
Allow multiple entry points when allocating recursive groups (#9303)

In this example we ended up with some code that was only reachable via
an info table, because a branch had been optimised away by the native
code generator.  The register allocator then got confused because it
was only considering the first block of the proc to be an entry point,
when actually any of the info tables are entry points.

Test Plan: validate

Reviewers: simonpj, austin

Subscribers: simonmar, relrod, carter

Differential Revision:

4 years agocomment update
Simon Marlow [Tue, 22 Jul 2014 11:02:45 +0000 (12:02 +0100)] 
comment update

4 years agoAdd .gitignore line for stage=1 testsuite generated file
Reid Barton [Thu, 31 Jul 2014 02:10:43 +0000 (22:10 -0400)] 
Add .gitignore line for stage=1 testsuite generated file

4 years agoMake mod73 test insensitive to minor variations (#9325)
Reid Barton [Thu, 31 Jul 2014 01:44:42 +0000 (21:44 -0400)] 
Make mod73 test insensitive to minor variations (#9325)

4 years agoFix variable name typo from commit 3021fb
Niklas Larsson [Wed, 30 Jul 2014 01:48:19 +0000 (03:48 +0200)] 
Fix variable name typo from commit 3021fb

Signed-off-by: Austin Seipp <>
4 years agoAdd user documentation for explicitly-bidirectional pattern synonyms
Dr. ERDI Gergo [Tue, 29 Jul 2014 09:33:57 +0000 (11:33 +0200)] 
Add user documentation for explicitly-bidirectional pattern synonyms

4 years agoAdd note about renaming of pattern synonym wrappers
Dr. ERDI Gergo [Tue, 29 Jul 2014 09:28:33 +0000 (11:28 +0200)] 
Add note about renaming of pattern synonym wrappers

4 years agoRefactor PatSynBind so that we can pass around PSBs instead of several arguments
Dr. ERDI Gergo [Tue, 29 Jul 2014 09:27:26 +0000 (11:27 +0200)] 
Refactor PatSynBind so that we can pass around PSBs instead of several arguments

4 years agoAdd test cases for explicitly-bidirectional pattern synonym
Dr. ERDI Gergo [Tue, 29 Jul 2014 06:25:40 +0000 (08:25 +0200)] 
Add test cases for explicitly-bidirectional pattern synonym

4 years agoWhen computing minimal recursive sets of bindings, don't include references in wrappe...
Dr. ERDI Gergo [Sun, 27 Jul 2014 19:06:44 +0000 (21:06 +0200)] 
When computing minimal recursive sets of bindings, don't include references in wrapper definitions
for explicitly-bidirectional pattern synonyms

4 years agoTypecheck the wrapper definition of a pattern synonym,
Dr. ERDI Gergo [Sun, 27 Jul 2014 16:46:50 +0000 (18:46 +0200)] 
Typecheck the wrapper definition of a pattern synonym,
after everything in the same scope is typechecked

4 years agotcLookupPatSyn: look up the PatSyn record for a given Id
Dr. ERDI Gergo [Sun, 27 Jul 2014 19:00:15 +0000 (21:00 +0200)] 
tcLookupPatSyn: look up the PatSyn record for a given Id

4 years agoAdd renamer support for explicitly-bidirectional pattern synonyms
Dr. ERDI Gergo [Mon, 7 Jul 2014 11:25:29 +0000 (19:25 +0800)] 
Add renamer support for explicitly-bidirectional pattern synonyms

4 years agoTypechecker support for explicitly-bidirectional pattern synonyms
Dr. ERDI Gergo [Sun, 6 Jul 2014 15:49:43 +0000 (23:49 +0800)] 
Typechecker support for explicitly-bidirectional pattern synonyms

4 years agoAdd parser support for explicitly bidirectional pattern synonyms
Dr. ERDI Gergo [Sun, 6 Jul 2014 14:13:50 +0000 (22:13 +0800)] 
Add parser support for explicitly bidirectional pattern synonyms

4 years agoNew parser for pattern synonym declarations:
Dr. ERDI Gergo [Sun, 6 Jul 2014 09:33:00 +0000 (17:33 +0800)] 
New parser for pattern synonym declarations:

Like splitCon for constructor definitions, the left-hand side of a
pattern declaration is parsed as a single pattern which is then split
into a ConName and argument variable names

4 years agogetCoerbileInsts: Move the two NT-unwrapping instances together
Joachim Breitner [Tue, 29 Jul 2014 07:49:34 +0000 (09:49 +0200)] 
getCoerbileInsts: Move the two NT-unwrapping instances together

and fix the numbering in the comments. Thank to SPJ for noticing.
Nothing deep in here, just a insufficent copy’n’pasting in revision
7e78faf0. Incidentially, 7e78faf0 did a better job updating the comments
than the code :-).

4 years agorts: Detab OSThreads.c
Austin Seipp [Mon, 28 Jul 2014 14:34:02 +0000 (09:34 -0500)] 
rts: Detab OSThreads.c

Signed-off-by: Austin Seipp <>
4 years agoFix validate fallout
Austin Seipp [Mon, 28 Jul 2014 14:29:08 +0000 (09:29 -0500)] 
Fix validate fallout

Signed-off-by: Austin Seipp <>