ghc.git
4 years agoexprIsBottom: Make use of isEmptyTy (#10186)
Joachim Breitner [Mon, 23 Mar 2015 21:25:24 +0000 (22:25 +0100)] 
exprIsBottom: Make use of isEmptyTy (#10186)

Any expression with of empty type is necessary bottom, so we can use
that here. No effects known, but it is the right thing to do and
validate, so lets do it.

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

4 years agoFix bug in hs-libraries field munging.
Edward Z. Yang [Wed, 18 Mar 2015 22:28:29 +0000 (15:28 -0700)] 
Fix bug in hs-libraries field munging.

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
Test Plan: validate with 7.8 stage0 and HEAD stage0

Reviewers: austin, kgardas

Subscribers: thomie

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

4 years agoDo version specific detection of LLVM tools (#10170).
Erik de Castro Lopo [Fri, 20 Mar 2015 01:16:23 +0000 (12:16 +1100)] 
Do version specific detection of LLVM tools (#10170).

The LLVM developers seem to make breaking changes in the LLVM IR
language between major releases. As a consumer of the LLVM tools
GHC now needs to be locked more tightly to a single version of
the LLVM tools.

GHC HEAD currently only supports LLVM version 3.6. This commit
changes the configure script to look for `llc-3.6` and `opt-3.6`
before looking for `llc` and `opt`. If the former are not found,
but the later are, check that they actually are version 3.6.

At the same time, when detecting known problems with the LLVM
tools (ie #9439) test for it using the versions of the LLVM tools
retrieved from the bootstrap compiler's settings file.

Test Plan: Manual testing.

Reviewers: thomie, rwbarton, nomeata, austin

Subscribers: thomie

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

GHC Trac Issues: #10170

4 years agoisEmptyTy: Improve comment
Joachim Breitner [Mon, 23 Mar 2015 21:19:21 +0000 (22:19 +0100)] 
isEmptyTy: Improve comment

[skip ci]

4 years agoAdd Note [No alternatives lint check]
Joachim Breitner [Mon, 23 Mar 2015 21:16:08 +0000 (22:16 +0100)] 
Add Note [No alternatives lint check]

in a follow up to #10180.

4 years agoNew lint check: Check idArity invariants (#10181)
Joachim Breitner [Sun, 22 Mar 2015 16:51:51 +0000 (17:51 +0100)] 
New lint check: Check idArity invariants (#10181)

The arity of an id should not be larger than what the type allows, and
it should also not contradict the strictness signature. This adds a lint
check for that.

This broke test T8743, uncovering a bug in the SOURCE import machinery,
which is now filed as #10182.

4 years agoNew Lint check: no alternatives implies bottoming expression
Joachim Breitner [Sun, 22 Mar 2015 16:32:26 +0000 (17:32 +0100)] 
New Lint check: no alternatives implies bottoming expression

detected either by exprIsBottom or by an empty type.

This was suggested by SPJ and fixes #10180.

4 years agoexprIsBottom should look through type lambdas
Joachim Breitner [Mon, 23 Mar 2015 09:17:25 +0000 (10:17 +0100)] 
exprIsBottom should look through type lambdas

as evaluting (\ (@ a) -> e) diverges if and only if evaluating e
diverges. This was found in the context of #10180.

4 years agoDo proper depth checking in the flattener to avoid looping.
Richard Eisenberg [Mon, 23 Mar 2015 14:30:19 +0000 (10:30 -0400)] 
Do proper depth checking in the flattener to avoid looping.

This implements (roughly) the plan put forward in comment:14:ticket:7788,
fixing #7788, #8550, #9554, #10139, and addressing concerns raised in #10079.
There are some regressions w.r.t. GHC 7.8, but only with pathological type
families (like F a = F a). This also (hopefully -- don't have a test case)
fixes #10158. Unsolved problems include #10184 and #10185, which are both
known deficiencies of the approach used here.

As part of this change, the plumbing around detecting infinite loops has
changed. Instead of -fcontext-stack and -ftype-function-depth, we now have
one combined -freduction-depth parameter. Setting it to 0 disbales the
check, which is now the recommended way to get (terminating) code to
typecheck in releases. (The number of reduction steps may well change between
minor GHC releases!)

This commit also introduces a new IntWithInf type in BasicTypes
that represents an integer+infinity. This type is used in a few
places throughout the code.

Tests in
  indexed-types/should_fail/T7788
  indexed-types/should_fail/T8550
  indexed-types/should_fail/T9554
  indexed-types/should_compile/T10079
  indexed-types/should_compile/T10139
  typecheck/should_compile/T10184  (expected broken)
  typecheck/should_compile/T10185  (expected broken)

This commit also changes performance testsuite numbers, for the better.

4 years agoMake testsuite driver Python 2.6 compatible again
Thomas Miedema [Mon, 23 Mar 2015 12:56:22 +0000 (13:56 +0100)] 
Make testsuite driver Python 2.6 compatible again

Another bug in the #10164 series. Only Python 2.7 and up allow you to
omit the positional argument specifiers in format strings.

Test Plan: this fixes the Solaris builders

Reviewed By: kgardas

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

GHC Trac Issues: #10164

4 years agoUpdate base changelog regarding 4.8.1 changes
Herbert Valerio Riedel [Mon, 23 Mar 2015 10:19:50 +0000 (11:19 +0100)] 
Update base changelog regarding 4.8.1 changes

Turns out we've been a bit too lazy and quite a few undocumented changes have
accumulated in `base` relative to GHC 7.10's `base-4.8.0.0`...

[skip ci]

4 years agoMinor bump `base` version to 4.8.1.0
Herbert Valerio Riedel [Mon, 23 Mar 2015 10:22:36 +0000 (11:22 +0100)] 
Minor bump `base` version to 4.8.1.0

We've accumulated enough to justify a minor version bump to 4.8.1.0,
but not enough to justify a major version bump yet as far as I can see.

4 years agoFix quasiquotation test (#4150)
Thomas Miedema [Mon, 23 Mar 2015 09:41:22 +0000 (10:41 +0100)] 
Fix quasiquotation test (#4150)

4 years agoMinor fix to Note [Trimming arity]
Joachim Breitner [Mon, 23 Mar 2015 09:12:34 +0000 (10:12 +0100)] 
Minor fix to Note [Trimming arity]

[ci skip]

4 years agoFix integer-gmp source tarball distribution
Herbert Valerio Riedel [Mon, 23 Mar 2015 07:11:32 +0000 (08:11 +0100)] 
Fix integer-gmp source tarball distribution

The `configure` script checks for presence of `install-sh` even if
it's not used, so we simply add it to the distribution to make `configure`
happy.

4 years agoUpdate integer-gmp2's changelog for release
Herbert Valerio Riedel [Fri, 20 Mar 2015 17:52:28 +0000 (18:52 +0100)] 
Update integer-gmp2's changelog for release

[skip ci]

(cherry picked from commit 7bd3efe3ccc6dc0a3ec84008285b4e03b48d8f41)

4 years agorts: check arguments to flags that don't have any
Carlos Tomé [Sun, 22 Mar 2015 23:53:42 +0000 (00:53 +0100)] 
rts: check arguments to flags that don't have any

There were some flags of the RTS that when given an argument (which they
don't have) were not firing an error.
e.g -Targument when the flag -T has no argument.
Now this is an error and affects the following flags:
-B -w -T -Z -P -Pa -c -t

Signed-off-by: Carlos Tomé <carlostome1990@gmail.com>
Reviewed By: austin, thomie, hvr

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

GHC Trac Issues: #9839

4 years agofix bus error (misaligned data access) on SPARC in __decodeDouble_Int64
Karel Gardas [Sun, 22 Mar 2015 20:58:03 +0000 (21:58 +0100)] 
fix bus error (misaligned data access) on SPARC in __decodeDouble_Int64

Reviewers: austin

Subscribers: thomie

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

4 years agodocs: make gen_contents_index --verbose more verbose
Austin Seipp [Sun, 22 Mar 2015 19:11:22 +0000 (14:11 -0500)] 
docs: make gen_contents_index --verbose more verbose

Signed-off-by: Austin Seipp <austin@well-typed.com>
4 years agoTrim Call Arity
Joachim Breitner [Sat, 21 Mar 2015 14:58:38 +0000 (15:58 +0100)] 
Trim Call Arity

to not accidentially invalidate a strictness signature with a Diverges
result info. This seems to fix #10176.

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

4 years agoTest case for #10176
Joachim Breitner [Sat, 21 Mar 2015 14:08:16 +0000 (15:08 +0100)] 
Test case for #10176

originally provided by Neil Mitchell. Despite what he observed, I can
observe the bug even with all in one module.

4 years agoNew lint check: exprIsHNF = True and alts = [] is bogus
Joachim Breitner [Sat, 21 Mar 2015 14:02:07 +0000 (15:02 +0100)] 
New lint check: exprIsHNF = True and alts = [] is bogus

4 years agoClarify meaning of the RTS `taskCount` variable
Thomas Miedema [Sun, 22 Mar 2015 11:04:18 +0000 (12:04 +0100)] 
Clarify meaning of the RTS `taskCount` variable

In #9261, there was some confusion about the meaning of the taskCount
stats variable in the rts.

It turns out that taskCount is not decremented when a worker task is
stopped (i.e. from workerTaskStop), but only when freeMyTask is called,
which frees the task bound to the current thread. So taskCount is the
current number of bound tasks + the total number of worker tasks.

This makes the calculation of the current number of bound tasks in
rts/Stats.c correct _as is_.

[skip ci]

Reviewed By: austin

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

4 years agoUpdate haskeline submodule to 0.7.2.1 release tag
Herbert Valerio Riedel [Sun, 22 Mar 2015 07:22:03 +0000 (08:22 +0100)] 
Update haskeline submodule to 0.7.2.1 release tag

This fixes compilation under windows with pre-AMP GHCs
although it's not clear if bootstrapping GHC was affected.
(see https://github.com/judah/haskeline/issues/20 for details)

4 years agotestsuite: add test for #10177
Austin Seipp [Sun, 22 Mar 2015 01:12:55 +0000 (20:12 -0500)] 
testsuite: add test for #10177

Signed-off-by: Austin Seipp <austin@well-typed.com>
4 years agoCorrect documentation in `Parser`.
Matthew Pickering [Sat, 21 Mar 2015 11:57:18 +0000 (12:57 +0100)] 
Correct documentation in `Parser`.

Removed a trailing `in` from the final line which caused a compilation
error. [skip ci]

Reviewed by: thomie

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

4 years agoUpdate Cabal submodule to Cabal-v1.22.2.0 rls tag
Herbert Valerio Riedel [Sat, 21 Mar 2015 09:04:02 +0000 (10:04 +0100)] 
Update Cabal submodule to Cabal-v1.22.2.0 rls tag

this submdoule updates pulls in only meta-data changes

4 years agoUpdate bytestring submodule to 0.10.6.0 release tag
Herbert Valerio Riedel [Fri, 20 Mar 2015 19:37:41 +0000 (20:37 +0100)] 
Update bytestring submodule to 0.10.6.0 release tag

4 years agoTry to reconstruct a changelog for TH 2.10
Herbert Valerio Riedel [Fri, 20 Mar 2015 12:33:19 +0000 (13:33 +0100)] 
Try to reconstruct a changelog for TH 2.10

[skip ci]

(cherry picked from commit 9d15af88b9b5cbf9dd4a4d072aa94540074cc4b3)

4 years agoBump ghc-prim to 0.4.0.0
Herbert Valerio Riedel [Fri, 20 Mar 2015 11:23:41 +0000 (12:23 +0100)] 
Bump ghc-prim to 0.4.0.0

This major version bump was made necessary by
f44333eae7bc7dc7b6003b75874a02445f6b633b which changed the type
signatures of prefetch primops, as well as other changes
such as 051d694fc978ad28ac3043d296cafddd3c2a7050 turning `Any` into
an abstract closed type family.

Reviewed By: ekmett

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

4 years agoModify test th/T10019 to wobble less
Simon Peyton Jones [Thu, 19 Mar 2015 23:17:21 +0000 (23:17 +0000)] 
Modify test th/T10019 to wobble less

The TH output contains uniques which change too much.
So I took the length of the string instead. Crude,
perhaps too crude, but it'll still show up most significant
output changes

4 years agoUpdate deepseq submodule to 1.4.1.1 tag
Herbert Valerio Riedel [Fri, 20 Mar 2015 09:37:33 +0000 (10:37 +0100)] 
Update deepseq submodule to 1.4.1.1 tag

This deepseq update drops the redundant ghc-prim dependency for GHC>=7.6

4 years agotestsuite: add a regression test for #10011
Austin Seipp [Thu, 19 Mar 2015 22:41:08 +0000 (17:41 -0500)] 
testsuite: add a regression test for #10011

Signed-off-by: Austin Seipp <austin@well-typed.com>
4 years agoRemove unused parameter to `EvTypeableTyCon`
Iavor S. Diatchki [Thu, 19 Mar 2015 22:33:50 +0000 (15:33 -0700)] 
Remove unused parameter to `EvTypeableTyCon`

4 years agoMerge branch 'master' of git://git.haskell.org/ghc
Iavor S. Diatchki [Thu, 19 Mar 2015 21:35:30 +0000 (14:35 -0700)] 
Merge branch 'master' of git://git.haskell.org/ghc

4 years agolibraries: update win32 submodule
Austin Seipp [Thu, 19 Mar 2015 21:20:26 +0000 (16:20 -0500)] 
libraries: update win32 submodule

This update fixes #10165.

Signed-off-by: Austin Seipp <austin@well-typed.com>
4 years agowin32/base: Remove redundant import
Austin Seipp [Thu, 19 Mar 2015 20:59:20 +0000 (15:59 -0500)] 
win32/base: Remove redundant import

This causes ./validate to trip -Werror on Windows.

Signed-off-by: Austin Seipp <austin@well-typed.com>
4 years agoImprove `Typeable` solver.
Iavor S. Diatchki [Thu, 19 Mar 2015 20:40:34 +0000 (13:40 -0700)] 
Improve `Typeable` solver.

4 years agoRefactor: follow hlint suggestions in Linker.hs
Thomas Miedema [Thu, 19 Mar 2015 18:13:09 +0000 (19:13 +0100)] 
Refactor: follow hlint suggestions in Linker.hs

Reviewed By: austin

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

4 years agoRefactor Linker.hs: use System.Directory.findFile
Thomas Miedema [Thu, 19 Mar 2015 18:12:32 +0000 (19:12 +0100)] 
Refactor Linker.hs: use System.Directory.findFile

Use System.Directory.findFile instead of a custom implementation. Also change
FilePath concatenation with ++ by </>. Refactoring only.

Reviewed By: austin

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

4 years agoRemove comments and flag for GranSim
Thomas Miedema [Thu, 19 Mar 2015 18:11:09 +0000 (19:11 +0100)] 
Remove comments and flag for GranSim

The GranSim code was removed in dd56e9ab and 297b05a9 in 2009, and perhaps
other commits I couldn't find.

Reviewed By: austin

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

4 years agoUpdate Cabal submodule to 1.22 branch tip
Herbert Valerio Riedel [Thu, 19 Mar 2015 16:41:48 +0000 (17:41 +0100)] 
Update Cabal submodule to 1.22 branch tip

4 years agoUpdate filepath/hpc/process submodules
Herbert Valerio Riedel [Thu, 19 Mar 2015 15:44:51 +0000 (16:44 +0100)] 
Update filepath/hpc/process submodules

These updates these 3 submodules to their respective released tagged
commits. No source-code changes are involved with this update.

4 years agoRemove mention of `-unreg` in error message
Thomas Miedema [Wed, 18 Mar 2015 09:21:18 +0000 (10:21 +0100)] 
Remove mention of `-unreg` in error message

The `-unreg` flag was removed in commit dade8ab (2007), see #1008.

[skip-ci]

4 years agoComments only
Simon Peyton Jones [Mon, 19 Jan 2015 16:44:25 +0000 (16:44 +0000)] 
Comments only

4 years agoTypos in comments
Gabor Greif [Wed, 18 Mar 2015 01:25:13 +0000 (02:25 +0100)] 
Typos in comments

4 years agohpc: use System.FilePath.(</>) instead of (++)
Thomas Miedema [Tue, 17 Mar 2015 17:09:18 +0000 (18:09 +0100)] 
hpc: use System.FilePath.(</>) instead of (++)

Summary:
BAD: "." ++ "/" ++ "/absolute/path" == ".//absolute/path"
GOOD: "." </> "/absolute/path" == "/absolute path"

Also replace `++ ".ext"` with `<.> "ext"`. Although it doesn't fix any
bugs in this instance, it might in some other. As a general rule it's
better not to use (++) on FilePaths.

Reviewed By: austin, hvr

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

GHC Trac Issues: #10138

4 years agoExpose listPackageConfigMap
Edsko de Vries [Tue, 17 Mar 2015 16:12:51 +0000 (11:12 -0500)] 
Expose listPackageConfigMap

This is useful for code that needs to search the package config map for
packages satisfying a certain condition.

Reviewed By: ezyang

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

4 years agoAdd release note entry for D716
Austin Seipp [Tue, 17 Mar 2015 16:07:15 +0000 (11:07 -0500)] 
Add release note entry for D716

Signed-off-by: Austin Seipp <austin@well-typed.com>
4 years agoAdd more MonadZip instances
Oleg Grenrus [Tue, 17 Mar 2015 16:03:44 +0000 (11:03 -0500)] 
Add more MonadZip instances

Summary: Add MonadZip Alt and MonadFix Alt instances

Reviewers: ekmett, dfeuer, hvr, austin

Reviewed By: austin

Subscribers: thomie

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

GHC Trac Issues: #10107

4 years agoMove declaration of Rulebase from Rules to CoreSyn
Simon Peyton Jones [Tue, 17 Mar 2015 00:00:31 +0000 (00:00 +0000)] 
Move declaration of Rulebase from Rules to CoreSyn

This allow HscTypes to import CoreSyn rather than Rules, which makes
module loops easier to avoid.  At one point in my recent travels this
was important; I'm not sure it's so important now, but it's a good
thing anyway.

In any case CoreRule is defined in CoreSyn, so this move make sense.

4 years agoComments, white space, and small refactoring
Simon Peyton Jones [Mon, 16 Mar 2015 23:53:14 +0000 (23:53 +0000)] 
Comments, white space, and small refactoring

The only real change is a new type synonym ImpRuleEdges
No significant changes at all

4 years agoRefactor the extra-deps stuff for hs-boot
Simon Peyton Jones [Wed, 11 Mar 2015 22:58:15 +0000 (22:58 +0000)] 
Refactor the extra-deps stuff for hs-boot

See Note [Extra dependencies from .hs-boot files] in RnSource

No change in behaviour

4 years agoFix Windows testsuite driver
Thomas Miedema [Tue, 17 Mar 2015 11:08:59 +0000 (12:08 +0100)] 
Fix Windows testsuite driver

This got broken in commit 5258566.

4 years agoFix build on amd64/solaris.
Erik de Castro Lopo [Fri, 13 Mar 2015 20:38:13 +0000 (20:38 +0000)] 
Fix build on amd64/solaris.

Summary:
Commit 71fcc4c096ec0 breaks the 64bit build on Solaris 11. Solaris
is a multi-lib OS so both 32bit and 64bit binaries may  be run, but
by default it compiles to 32bit so that -m64 needs to be added in
the appropriate place when compiling for 64 bits.

Patch-from: Karel Gardas <karel.gardas@centrum.cz>

Reviewers: kgardas, austin

Subscribers: thomie

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

4 years agoDont call unsafeGlobalDynFlags if it is not set
Thomas Miedema [Mon, 16 Mar 2015 17:36:59 +0000 (18:36 +0100)] 
Dont call unsafeGlobalDynFlags if it is not set

Parsing of static and mode flags happens before any session is started,
i.e., before the first call to 'GHC.withGhc'. Therefore, to report
errors for invalid usage of these two types of flags, we can not call
any function that needs DynFlags, as there are no DynFlags available yet
(unsafeGlobalDynFlags is not set either). So we always print "on the
commandline" as the location, which is true except for Api users, which
is probably ok.

When reporting errors for invalid usage of dynamic flags we /can/ make
use of DynFlags, and we do so explicitly in
DynFlags.parseDynamicFlagsFull.

Before, we called unsafeGlobalDynFlags when an invalid (combination of)
flag(s) was given on the commandline, resulting in panics (#9963). This
regression was introduced in 1d6124de.

Also rename showSDocSimple to showSDocUnsafe, to hopefully prevent this
from happening again.

Reviewed By: austin

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

GHC Trac Issues: #9963

4 years agoFix testsuite driver for a profiling compiler
Thomas Miedema [Sun, 15 Mar 2015 20:06:39 +0000 (21:06 +0100)] 
Fix testsuite driver for a profiling compiler

This should have been part of commit 5258566ee5c8, to allow expansion of
'{hp2ps}' in a command string to `config.hp2ps`.

Reviewed by: austin

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

4 years agoTest Trac #10156
Simon Peyton Jones [Mon, 16 Mar 2015 14:54:50 +0000 (14:54 +0000)] 
Test Trac #10156

4 years agolibraries/win32: update submodule
Austin Seipp [Mon, 16 Mar 2015 06:59:16 +0000 (01:59 -0500)] 
libraries/win32: update submodule

Signed-off-by: Austin Seipp <austin@well-typed.com>
4 years agoUpdate Cabal submodule to latest 1.22.1.2 snapshot
Herbert Valerio Riedel [Sun, 15 Mar 2015 06:14:32 +0000 (07:14 +0100)] 
Update Cabal submodule to latest 1.22.1.2 snapshot

This addresses the Cabal side of #10115 as this pulls in the following two
commits:

> Make sure to pass the package key to ghc
> Haddock: Use --package-{name|version} when available

4 years agoUpdate Haddock submodule
Herbert Valerio Riedel [Sun, 15 Mar 2015 07:36:49 +0000 (08:36 +0100)] 
Update Haddock submodule

This pulls in a cherry-picked commit adding support for
the new `--package-name` and `--package-version` flags and thus
helps addressing #10115.

4 years agoWe need to import 'cast' on Windows
Edward Z. Yang [Sat, 14 Mar 2015 08:16:44 +0000 (09:16 +0100)] 
We need to import 'cast' on Windows

This fixes breakage introduced via
47b5b5c2b2c92ba091313c36489588edadceaa9d

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
Reviewed By: hvr

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

4 years agoLink temporary shared objects with `--no-as-needed`
Peter Trommler [Sat, 14 Mar 2015 08:05:41 +0000 (09:05 +0100)] 
Link temporary shared objects with `--no-as-needed`

Some ELF link editors default to `--as-needed` and record only
those libraries in DT_NEEDED tags that are needed to resolve
undefined symbols in the shared object to be created.

In Template Haskell we rely on all symbols that were defined
in modules compiled so far to be available in the current
temporary shared object. To prevent the link editor from
dropping the DT_NEEDED tag for the previously linked temporary
shared object we need to override the link editors default and
specify `--no-as-needed` on the command line. This is for GNU ld
and GOLD ld.

This addresses #10110

TODO: regression test

Reviewed By: hvr

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

4 years agoMove the function strip_quotes to testutil.py
Thomas Miedema [Fri, 13 Mar 2015 20:07:15 +0000 (21:07 +0100)] 
Move the function strip_quotes to testutil.py

If one runs the testsuite with a profiling compiler, during the import
of `testlib.py`, `testlib.py` sets the global variable `gs_working`. To
do so, it executes a few statements which require the function
`strip_quotes` to be in scope. But that function only gets defined at
the very end of testlib.py.

This patch moves the definition of `strip_quotes` to testutil.py, which
is imported at the very top of testlib.py. This unbreaks the nightly
builders.

Reviewed By: austin

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

4 years agoUse the gold linker for linux/ARM and android/ARM targets.
Erik de Castro Lopo [Thu, 12 Mar 2015 03:36:50 +0000 (14:36 +1100)] 
Use the gold linker for linux/ARM and android/ARM targets.

Fixes #8976 and #9873 by making use of the Binutils ld.gold
linker explicit whenever the target is linux/ARM or android/ARM.
This does not affect iOS where Apple provides its own linker.

In order to achieve this, we need to add `-fuse-ld=gold` to
the SettingsCCompilerLinkFlags setting and set
SettingsLdCommand to `ld.gold` (or `${target}-ld.gold` when
cross-compiling). In addition, simplifying the use of
`$(CONF_GCC_LINKER_OPTS_STAGEn)`.

This patch was tested by ensuring that the following worked
as expected:

  * Native builds on linux/x86_64 (nothing changed).
  * Native builds on linux/arm (and uses the gold linker).
  * Linux to linux/arm cross compiles (and uses the cross
    gold linker).

Contributions by Ben Gamari, Joachim Breitner and Reid Barton.

Reviewers: nomeata, bgamari, austin, rwbarton

Subscribers: thomie

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

GHC Trac Issues: #8976 #9873

4 years agotestsuite: use same flags for ghci way and scripts
Thomas Miedema [Sun, 8 Mar 2015 15:56:41 +0000 (16:56 +0100)] 
testsuite: use same flags for ghci way and scripts

The ghci script tests were using different RTS flags from the normal
ghci tests. This commit makes them use the same flags.

Reviewers: austin

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

4 years agoUpdate submodule hpc (includes fix for #9619)
Thomas Miedema [Thu, 5 Mar 2015 21:06:11 +0000 (22:06 +0100)] 
Update submodule hpc (includes fix for #9619)

Reviewers: austin

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

4 years agoCleanup test framework string formatting
Thomas Miedema [Fri, 6 Mar 2015 20:55:36 +0000 (21:55 +0100)] 
Cleanup test framework string formatting

* Use format strings instead of string concatenation.
* Wrap `config.compiler`, `config.hpc` etc. in quotes in `mk/test.mk`, so we
  don't have to in .T scripts and driver/testlib.py.

Update hpc submodule (test cleanup)

Reviewers: austin

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

4 years agoRename ty{Con,peRep}Hash to ty{Con,peRep}Fingerprint
Herbert Valerio Riedel [Wed, 11 Mar 2015 15:36:09 +0000 (16:36 +0100)] 
Rename ty{Con,peRep}Hash to ty{Con,peRep}Fingerprint

This is a follow-up change to 56e0ac98c3a439b8757a2e886db259270bdc85f0

See also discussion at
https://groups.google.com/d/msg/haskell-core-libraries/e9N3U6nJeQE/V-TvG3G-3x4J

Reviewed By: simonpj

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

4 years agoUpdate filepath submodule to filepath-1.4 snapshot
Herbert Valerio Riedel [Wed, 11 Mar 2015 13:20:51 +0000 (14:20 +0100)] 
Update filepath submodule to filepath-1.4 snapshot

This also needs to update a couple of other submodules
to update the upper bound on filepath to allow this major
version bump to 1.4.0.0

4 years agoUpdate Cabal submodule to latest 1.22 snapshot
Edward Z. Yang [Wed, 11 Mar 2015 13:53:17 +0000 (14:53 +0100)] 
Update Cabal submodule to latest 1.22 snapshot

This changes the library file name format

NOTE: This patch originally updated to Cabal HEAD, but was reduced to
      update to Cabal 1.22 HEAD by hvr as this is needed in order to
      update the filepath submodule to version 1.4.0, and subsequently
      to be cherry-picked into the ghc-7.10 branch

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
Reviewed By: austin

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

4 years agoRefactor testsuite with normalise_version()
Edward Z. Yang [Tue, 10 Mar 2015 21:10:26 +0000 (14:10 -0700)] 
Refactor testsuite with normalise_version()

Summary:
This function generalizes the normaliseBytestringPackage and other similar
one-off functions into normalise_version() with takes a package name to
normalize against.  This JUST manages package versions; we also could use
a normalize for keys.

In the process, I modified all the normalization functions to be accumulative;
I don't think this makes a difference for current test cases but I think it
makes things nicer.

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
Reviewers: austin

Subscribers: thomie

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

4 years agoDocumentation for PackageArg/ModRenaming/PackageFlag
Edward Z. Yang [Mon, 9 Mar 2015 20:52:40 +0000 (13:52 -0700)] 
Documentation for PackageArg/ModRenaming/PackageFlag

Summary:
[skip-ci]

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
Test Plan: validate

Reviewers: austin, bgamari

Subscribers: thomie

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

4 years agoUpdate directory submodule to latest 1.2.2 snapshot
Herbert Valerio Riedel [Tue, 10 Mar 2015 14:54:40 +0000 (15:54 +0100)] 
Update directory submodule to latest 1.2.2 snapshot

4 years agoSync up terminfo/haskeline submodule with ghc-7.10
Herbert Valerio Riedel [Tue, 10 Mar 2015 09:42:22 +0000 (10:42 +0100)] 
Sync up terminfo/haskeline submodule with ghc-7.10

The GHC 7.10 tree was pointing to slightly newer commits

4 years agoUpdate array submodule (min ver bump to 0.5.1.0)
Herbert Valerio Riedel [Tue, 10 Mar 2015 09:07:07 +0000 (10:07 +0100)] 
Update array submodule (min ver bump to 0.5.1.0)

4 years agoUpdate submodule to Cabal 1.22.1.1 release
Herbert Valerio Riedel [Tue, 10 Mar 2015 08:11:45 +0000 (09:11 +0100)] 
Update submodule to Cabal 1.22.1.1 release

4 years agoghc-prim : Hide 64 bit primops when the word size is 32 bits (fixes #9886).
Erik de Castro Lopo [Thu, 5 Mar 2015 08:39:16 +0000 (19:39 +1100)] 
ghc-prim : Hide 64 bit primops when the word size is 32 bits (fixes #9886).

Summary:
These primops were failing to compile on PowerPC (32 bit). There is also
currently no way to call into these primops from Haskell code. Currently,
the *only* way to call any of these C hs_atomic_* functions is via the
fetch*IntArray primops which are only defined for Int values and Int is
always the native word size.

When these functions can be called (and tested) from Haskell code, then
it will be worth while implementing them.

Test Plan:
    Compile and run on x86, x86_64, powerpc and arm:
    testsuite/tests/concurrent/should_run/AtomicPrimops.hs

Reviewers: tibbe, austin

Subscribers: thomie

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

GHC Trac Issues: #9886

4 years agoChanges to Safe Haskell documentation from feedback (#10140).
David Terei [Tue, 10 Mar 2015 03:55:52 +0000 (20:55 -0700)] 
Changes to Safe Haskell documentation from feedback (#10140).

4 years agoMerge branch 'master' of git://git.haskell.org/ghc
Andreas Voellmy [Mon, 9 Mar 2015 22:27:54 +0000 (18:27 -0400)] 
Merge branch 'master' of git://git.haskell.org/ghc

4 years agoRTS/IOManager: fix trac issue #9722.
Andreas Voellmy [Mon, 9 Mar 2015 22:27:41 +0000 (18:27 -0400)] 
RTS/IOManager: fix trac issue #9722.

Summary:
Whenever the RTS has been inactive for idleGCDelayTime, the idle timer
fires and calls wakeUpRts(), which in turn calls ioManagerWakeup(),
which in turn writes a byte (or a few) to a file descriptor (stored in
the io_manager_wakeup_fd variable) registered by the TimerManager and
on which the TimerManager will wait. (Note that the write will only
occur if the file descriptor is non-negative.) When the RTS shuts
down, it shuts down the TimerManager, and in this process the file
descriptor stored in io_manager_wakeup_fd is closed. In the error
case, the idle timer fires after the close of the file occurs, and
then the write() call in ioManagerWakeup() fails and the
aforementioned error message gets printed.

This patch solves the problem by (1) having the TimerManager (via
Control) write -1 to io_manager_wakeup_fd just before closing the file
descriptor written in io_manager_wakeup_fd, and (2) having
ioManagerWakeup() ignore an error returned by write() in the case that
the write returned -1 and the io_manager_wakeup_fd is -1.

Reviewers: austin, simonmar, hvr, thomie

Reviewed By: thomie

Subscribers: thomie

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

GHC Trac Issues: #9722

4 years agoRefactor Digraph to use Data.Graph when possible
Edward Z. Yang [Fri, 6 Mar 2015 21:43:31 +0000 (13:43 -0800)] 
Refactor Digraph to use Data.Graph when possible

Summary: This just rewrites the IntGraph data type.

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
Test Plan: validate

Reviewers: austin

Subscribers: thomie

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

4 years agoRevert "Refactor Digraph to use Data.Graph when possible"
Edward Z. Yang [Mon, 9 Mar 2015 20:14:13 +0000 (13:14 -0700)] 
Revert "Refactor Digraph to use Data.Graph when possible"

This breaks the build with GHC 7.6 bootstrapping, since the Functor SCC
instance is not available.

This reverts commit c439af5f5baa2c8af3434652554135230edbf5c3.

4 years agoFix `ghc --make -fhpc` with imported lhs modules
Thomas Miedema [Tue, 3 Mar 2015 22:03:44 +0000 (23:03 +0100)] 
Fix `ghc --make -fhpc` with imported lhs modules

See Note [Don't normalise input filenames] in
`compiler/main/DriverPipeline.hs`. Fixes #2991.

Reviewers: austin

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

4 years agoRemove obsolete comment in cmmOffset
Joachim Breitner [Mon, 9 Mar 2015 15:04:42 +0000 (16:04 +0100)] 
Remove obsolete comment in cmmOffset

Summary:
as obviously, the code does _not_ adhere to the comment, and yet the
compiler does _not_ go into an infinite loop.

Test Plan: Run validate

Reviewers: austin

Subscribers: thomie

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

4 years agoRefactor Digraph to use Data.Graph when possible
Edward Z. Yang [Fri, 6 Mar 2015 21:43:31 +0000 (13:43 -0800)] 
Refactor Digraph to use Data.Graph when possible

Summary: This just rewrites the IntGraph data type.

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
Test Plan: validate

Reviewers: austin

Subscribers: thomie

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

4 years agohsc2hs: update submodule
Austin Seipp [Mon, 9 Mar 2015 18:52:14 +0000 (13:52 -0500)] 
hsc2hs: update submodule

This includes the fix for #9524.

Signed-off-by: Austin Seipp <austin@well-typed.com>
4 years agoUpdate process submodule
Thomas Miedema [Sun, 8 Mar 2015 14:39:16 +0000 (15:39 +0100)] 
Update process submodule

Summary:
Rename `SysTools.readCreateProcess`.

Functions `readCreateProcess` and `readCreateProcessWithExitCode` were added
to `System.Process`, the former of which conflicts with
`SysTools.readCreateProcess`.

Reviewed by: austin

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

4 years agoAdd `GHC.OldList` legacy module
Herbert Valerio Riedel [Sat, 7 Mar 2015 22:31:27 +0000 (23:31 +0100)] 
Add `GHC.OldList` legacy module

This module provides access the list-specialised versions for legacy purposes
(such as implementing Haskell2010-ish preludes). This module basically
re-exports the hidden `Data.OldList` module (but in the less controversial `GHC.*`
namespace, which signals less committment to keep this module around).

This is legacy module is mostly for GHC 7.10's sake. What becomes long-term
of `GHC.OldList` can be decided unhurriedly during the GHC 7.12 development
cycle.

Reviewed By: austin

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

4 years agoDefine proper `MINIMAL` pragma for `class Ix`
Herbert Valerio Riedel [Sat, 7 Mar 2015 22:15:07 +0000 (23:15 +0100)] 
Define proper `MINIMAL` pragma for `class Ix`

Summary: This addresses #10142

Reviewers: goldfire, austin, ekmett

Reviewed By: austin, ekmett

Subscribers: thomie

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

GHC Trac Issues: #10142

4 years agobase: drop redundant Typeable derivings
Herbert Valerio Riedel [Sat, 7 Mar 2015 19:42:21 +0000 (20:42 +0100)] 
base: drop redundant Typeable derivings

Thanks to #9858 `Typeable` doesn't need to be explicitly derived anymore.
This also makes `AutoDeriveTypeable` redundant, as well as some imports of
`Typeable` (removal of whose may be beneficial to #9707). This commit
removes several such now redundant use-sites in `base`.

Reviewed By: austin, ekmett

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

4 years agoStore renamings as (ModuleName, ModuleName) pairs.
Edward Z. Yang [Sat, 7 Mar 2015 04:01:12 +0000 (20:01 -0800)] 
Store renamings as (ModuleName, ModuleName) pairs.

Summary: Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>

Test Plan: validate

Reviewers: austin, simonpj

Subscribers: thomie

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

4 years agobuild: fix 'make help'
Austin Seipp [Sat, 7 Mar 2015 17:18:44 +0000 (11:18 -0600)] 
build: fix 'make help'

Summary:
This fixes the usage of `make help` in the top-level and subdirectories.

Signed-off-by: Austin Seipp <austin@well-typed.com>
Test Plan: It worked now and didn't before.

Reviewers: hvr

Reviewed By: hvr

Subscribers: thomie

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

4 years agoDynamically link all loaded packages in new object
Peter Trommler [Sat, 7 Mar 2015 17:13:37 +0000 (11:13 -0600)] 
Dynamically link all loaded packages in new object

Summary:
As a result of fixing #8935 we needed to open shared libraries
with RTLD_LOCAL and so symbols from packages loaded earlier
cannot be found anymore. We need to include in the link all
packages loaded so far.

This fixes #10058

Test Plan: validate

Reviewers: hvr, simonmar, austin

Reviewed By: austin

Subscribers: rwbarton, thomie

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

GHC Trac Issues: #10058

4 years agoImprove core linter so it catches unsafeCoerce problems (T9122)
Alexander Vershilov [Sat, 7 Mar 2015 17:13:12 +0000 (11:13 -0600)] 
Improve core linter so it catches unsafeCoerce problems (T9122)

Summary:
This is a draft of the patch that is sent for review.

In this patch required changes in linter were introduced
and actual check:

 - new helper function: primRepSizeB
 - primRep check for floating
 - Add access to dynamic flags in linter.
 - Implement additional lint rules.

Reviewers: austin, goldfire, simonpj

Reviewed By: simonpj

Subscribers: thomie

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

GHC Trac Issues: #9122

4 years agoDon't assume tools are in same directory as ghc in some cases
Phil Ruffwind [Sat, 7 Mar 2015 17:04:00 +0000 (11:04 -0600)] 
Don't assume tools are in same directory as ghc in some cases

Summary: Tools such as `ghc-pkg` and `runghc` are no longer required to be in the same directory as `ghc` when running tests, provided that `TEST_HC` is not explicitly set and an in-tree compiler is not used.  Fixes #10126.

Reviewers: thomie, austin

Reviewed By: thomie, austin

Subscribers: thomie

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

GHC Trac Issues: #10126

4 years agoAdd missed test (uuugh)
Austin Seipp [Sat, 7 Mar 2015 16:40:18 +0000 (10:40 -0600)] 
Add missed test (uuugh)

Signed-off-by: Austin Seipp <austin@well-typed.com>
4 years agoCustom `Typeable` solver, that keeps track of kinds.
Iavor S. Diatchki [Sat, 7 Mar 2015 16:37:31 +0000 (10:37 -0600)] 
Custom `Typeable` solver, that keeps track of kinds.

Summary:
This implements the new `Typeable` solver: when GHC sees `Typeable` constraints
it solves them on the spot.

The current implementation creates `TyCon` representations on the spot.

Pro: No overhead at all in code that does not use `Typeable`
Cons: Code that uses `Typeable` may create multipe `TyCon` represntations.

We have discussed an implementation where representations of `TyCons` are
computed once, in the module, where a datatype is declared.  This would
lead to more code being generated:  for a promotable datatype we need to
generate `2 + number_of_data_cons` type-constructro representations,
and we have to do that for all programs, even ones that do not intend to
use typeable.

I added code to emit warning whenevar `deriving Typeable` is encountered---
the idea being that this is not needed anymore, and shold be fixed.

Also, we allow `instance Typeable T` in .hs-boot files, but they result
in a warning, and are ignored.  This last one was to avoid breaking exisitng
code, and should become an error, eventually.

Test Plan:
1. GHC can compile itself.
2. I compiled a number of large libraries, including `lens`.
    - I had to make some small changes:
      `unordered-containers` uses internals of `TypeReps`, so I had to do a 1 line fix
    - `lens` needed one instance changed, due to a poly-kinded `Typeble` instance

3. I also run some code that uses `syb` to traverse a largish datastrucutre.
I didn't notice any signifiant performance difference between the 7.8.3 version,
and this implementation.

Reviewers: simonpj, simonmar, austin, hvr

Reviewed By: austin, hvr

Subscribers: thomie

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

GHC Trac Issues: #9858

4 years agoRe-export `<$` from Prelude (#10113)
Herbert Valerio Riedel [Sat, 7 Mar 2015 10:37:52 +0000 (11:37 +0100)] 
Re-export `<$` from Prelude (#10113)

This is a follow-up to eb3661f2b9f8472f3714774126ebe1183484dd85
re-exporting `<$` from `Prelude` as well.

Reviewed By: austin, ekmett

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

4 years agoRe-export `<$>` from Prelude (#10113)
Herbert Valerio Riedel [Sat, 7 Mar 2015 10:10:34 +0000 (11:10 +0100)] 
Re-export `<$>` from Prelude (#10113)

Whether to re-export the `<$>` non-method operator from `Prelude` wasn't
explicitly covered in the original AMP proposal[1], but it turns out that
not doing so forces most code that makes use of applicatives to import
`Data.Functor` or `Control.Applicative` just to get that operator into
scope.  To this end, it was proposed to add `<$>` to Prelude as well[2].

The down-side is that this increases the amount of redundant-import
warnings triggered, as well as the relatively minor issue of stealing
the `<$>` operator from the default namespace for good (although at this
point `<$>` is supposed to be ubiquitous anyway due to `Applicative`
being implicitly required into the next Haskell Report)

 [1]: https://wiki.haskell.org/Functor-Applicative-Monad_Proposal
 [2]: http://thread.gmane.org/gmane.comp.lang.haskell.libraries/24161

Reviewed By: austin, ekmett

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