ghc.git
4 years agoDisable same warnings for normal builds as for validate (#10223)
Thomas Miedema [Thu, 2 Apr 2015 09:41:47 +0000 (11:41 +0200)] 
Disable same warnings for normal builds as for validate (#10223)

The default validate settings currently disable some warnings in the
libraries. This patch moves those settings to a new file called
`mk/warnings.mk`, and applies them also to normal builds.

Through uncommenting a line in build.mk, developers can now build with
-Werror.

-Werror is not the default, because:
* We can not guarantee that the build is warning free on platforms we
  don't run regularly run validate (as part of continuous integration
  systems), and we still want the build to go through on those
  platforms.
* quoting rwbarton on irc > "I think -Werror by default has come up in
  the past and the argument was that it is too annoying when you are
  doing nontrivial development"

Reviewed By: austin

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

4 years agoDo not set -fasm explicitly in build.mk.sample (#10223)
Thomas Miedema [Thu, 2 Apr 2015 09:39:54 +0000 (11:39 +0200)] 
Do not set -fasm explicitly in build.mk.sample (#10223)

On platforms that support -fasm, it is already the default, so we don't
have to set it.

Reviewed By: austin, erikd (tested on powerpc and armhf)

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

4 years agoFake (->) fixity declaration (#10145)
Oleg Grenrus [Thu, 2 Apr 2015 09:28:03 +0000 (11:28 +0200)] 
Fake (->) fixity declaration (#10145)

Reviewed By: simonpj, austin

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

4 years agoIndentation only.
Edward Z. Yang [Sun, 29 Mar 2015 05:34:32 +0000 (22:34 -0700)] 
Indentation only.

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
4 years agoFilter out `-Rghc-timing` for V=0 builds (#10223)
Thomas Miedema [Wed, 1 Apr 2015 17:30:16 +0000 (19:30 +0200)] 
Filter out `-Rghc-timing` for V=0 builds (#10223)

Reviewed By: austin

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

4 years agoReformat build flavours in build.mk.sample (#10223)
Thomas Miedema [Wed, 1 Apr 2015 17:24:13 +0000 (19:24 +0200)] 
Reformat build flavours in build.mk.sample (#10223)

Use same format for each build flavour, to make it easier to compare
them. Refactoring only.

Reviewed By: austin

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

4 years agoChange which files --make thinks are 'Haskellish' (#10220)
Thomas Miedema [Wed, 1 Apr 2015 17:22:28 +0000 (19:22 +0200)] 
Change which files --make thinks are 'Haskellish' (#10220)

`.hspp` and `.hscpp` are haskell files that have already been preprocessed.

Treat `.hspp` and `.hscpp` as Haskellish sources again, as they were before
commit a10e1990. This way, ghc --make will load their imports.

Make sure that `.cmm` and `.cmmcpp` are still not treated as Haskellish,
by moving them out of `haskell_src_suffixes` (but still keeping them in
haskellish_suffixes, though I'm not sure what the purpose of that group
is).

Reviewed By: austin

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

4 years agoDon't `make accept` output of expect_broken tests
Thomas Miedema [Wed, 1 Apr 2015 15:28:39 +0000 (17:28 +0200)] 
Don't `make accept` output of expect_broken tests

When running `make accept` on a directory in the testsuite, don't accept
the output of tests that are marked as expect_broken. This makes it
easier to review `git diff` after running `make accept`.

When you change an error message in the compiler that shows up in the
output of many tests, you can run `make accept` in the testsuite
directory, and all expected test output will be updated. But since your
change didn't magically fix all the other bugs in the compiler for which
we have an expect_broken test, the output for those tests should
probably not be updated.

Before, the effect of running `make accept` could be that some tests
would end up in the 'unexpected passes' group.

[skip ci]

Reviewed By: austin

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

4 years agouBackpack: simplified Backpack description.
Edward Z. Yang [Tue, 24 Mar 2015 19:28:16 +0000 (12:28 -0700)] 
uBackpack: simplified Backpack description.

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
4 years agoTestsuite: redirect stderr to /dev/null when running GS on bad.ps
Thomas Miedema [Tue, 31 Mar 2015 12:12:52 +0000 (14:12 +0200)] 
Testsuite: redirect stderr to /dev/null when running GS on bad.ps

This is a followup to a3d0a7a0ba3a1ee458a9883011247561dfe22f4a.

Reviewed by: Rufflewind

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

4 years agoDon't treat .hcr and .raw_s as haskellish suffixes
Thomas Miedema [Tue, 31 Mar 2015 10:15:34 +0000 (12:15 +0200)] 
Don't treat .hcr and .raw_s as haskellish suffixes

.hcr: external core
.raw_s: direct output from the c compiler, back in the day

Reviewed By: austin

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

4 years agoDon't throw exception when start_phase==stop_phase (#10219)
Thomas Miedema [Tue, 31 Mar 2015 10:12:24 +0000 (12:12 +0200)] 
Don't throw exception when start_phase==stop_phase (#10219)

Just do nothing instead. This bug only shows up when using `-x hspp` in
--make mode on registerised builds.

Reviewed By: austin

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

4 years agoExplicitly check for -C on registerised build (#7563)
Thomas Miedema [Tue, 31 Mar 2015 10:11:08 +0000 (12:11 +0200)] 
Explicitly check for -C on registerised build (#7563)

Show a more descriptive error message.

Reviewed By: austin

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

4 years agoTestsuite: suppress errors when running GS on bad.ps
Phil Ruffwind [Tue, 31 Mar 2015 10:04:50 +0000 (12:04 +0200)] 
Testsuite: suppress errors when running GS on bad.ps

Suppress the errors that appear in standard output when running gs on
bad.ps since it's expected to fail anyway.

Reviewed By: thomie, austin

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

4 years agoDrop old integer-gmp-0.5 from GHC source tree
Herbert Valerio Riedel [Sun, 29 Mar 2015 17:02:08 +0000 (19:02 +0200)] 
Drop old integer-gmp-0.5 from GHC source tree

This completes what c774b28f76ee4c220f7c1c9fd81585e0e3af0e8a (#9281)
started.  `integer-gmp-1.0` was added as an additional
`libraries/integer-gmp2` folder while retaining the ability to configure
GHC w/ the old `integer-gmp-0.5` to have a way back, and or the ability
to easily switch between old/new `integer-gmp` for benchmark/debugging
purposes.

This commit removes the old `libraries/integer-gmp` folder and moves
`libraries/integer-gmp2` into its place, while removing any mentions of
"gmp2" as well as the to support two different `integer-gmp` packages in
GHC's source-tree.

Reviewed By: austin

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

4 years agoAdd `integer-gmp` specific hint to build.mk.sample
Herbert Valerio Riedel [Tue, 31 Mar 2015 08:54:15 +0000 (10:54 +0200)] 
Add `integer-gmp` specific hint to build.mk.sample

[skip ci]

4 years agoSyntax check package-qualified imports (#9225)
Thomas Miedema [Mon, 30 Mar 2015 22:41:23 +0000 (00:41 +0200)] 
Syntax check package-qualified imports (#9225)

Version numbers are not allowed in the package name of a
package-qualified import.

Reviewed By: austin, ezyang

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

4 years agoDelete unused field `PipeEnv.pe_isHaskellishFile`
Thomas Miedema [Mon, 30 Mar 2015 21:05:16 +0000 (23:05 +0200)] 
Delete unused field `PipeEnv.pe_isHaskellishFile`

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

4 years agoRemove an unused include that doesn't exist on OS X (#10211)
Dave Laing [Mon, 30 Mar 2015 11:02:33 +0000 (13:02 +0200)] 
Remove an unused include that doesn't exist on OS X (#10211)

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

4 years agoRefactor the story around switches (#10137)
Joachim Breitner [Mon, 30 Mar 2015 08:20:14 +0000 (10:20 +0200)] 
Refactor the story around switches (#10137)

This re-implements the code generation for case expressions at the Stg →
Cmm level, both for data type cases as well as for integral literal
cases. (Cases on float are still treated as before).

The goal is to allow for fancier strategies in implementing them, for a
cleaner separation of the strategy from the gritty details of Cmm, and
to run this later than the Common Block Optimization, allowing for one
way to attack #10124. The new module CmmSwitch contains a number of
notes explaining this changes. For example, it creates larger
consecutive jump tables than the previous code, if possible.

nofib shows little significant overall improvement of runtime. The
rather large wobbling comes from changes in the code block order
(see #8082, not much we can do about it). But the decrease in code size
alone makes this worthwhile.

```
        Program           Size    Allocs   Runtime   Elapsed  TotalMem
            Min          -1.8%      0.0%     -6.1%     -6.1%     -2.9%
            Max          -0.7%     +0.0%     +5.6%     +5.7%     +7.8%
 Geometric Mean          -1.4%     -0.0%     -0.3%     -0.3%     +0.0%
```

Compilation time increases slightly:
```
        -1 s.d.                -----            -2.0%
        +1 s.d.                -----            +2.5%
        Average                -----            +0.3%
```

The test case T783 regresses a lot, but it is the only one exhibiting
any regression. The cause is the changed order of branches in an
if-then-else tree, which makes the hoople data flow analysis traverse
the blocks in a suboptimal order. Reverting that gets rid of this
regression, but has a consistent, if only very small (+0.2%), negative
effect on runtime. So I conclude that this test is an extreme outlier
and no reason to change the code.

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

4 years agoRenames some files to help with validation cleanup (#10212)
Dave Laing [Mon, 30 Mar 2015 07:21:13 +0000 (09:21 +0200)] 
Renames some files to help with validation cleanup (#10212)

Test Plan: validate twice

Reviewed by: thomie

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

4 years agoDoc typofix.
Edward Z. Yang [Sun, 29 Mar 2015 03:57:20 +0000 (20:57 -0700)] 
Doc typofix.

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
4 years agoRename C(obj)cplusplus to C(obj)cxx
Thomas Miedema [Sat, 28 Mar 2015 00:27:59 +0000 (01:27 +0100)] 
Rename C(obj)cplusplus to C(obj)cxx

Reviewed By: kgardas

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

4 years agoRename driver phases C(obj)cpp to C(obj)cplusplus
Thomas Miedema [Fri, 27 Mar 2015 20:37:49 +0000 (21:37 +0100)] 
Rename driver phases C(obj)cpp to C(obj)cplusplus

Before:
Cpp     = Pre-process C
Ccpp    = Compile C++
Cobjcpp = Compile Objective-C++
CmmCpp  = Pre-process Cmm

Quite confusing! This commit renames `Ccpp` to `Ccplusplus`, and
`Cobjcpp` to `Cobjcplusplus`. The two letters `p-p` keep standing for
`pre-processing` throughout the compiler.

Reviewed By: austin

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

4 years agoUpdate list of primops that don't get wrappers (#10191)
Reid Barton [Fri, 27 Mar 2015 04:09:23 +0000 (00:09 -0400)] 
Update list of primops that don't get wrappers (#10191)

Summary:
The list was 14 years old, and there don't seem to be any problems
with seq# or par#; the other par*# primops were not actually
implemented at all and were removed in D758.

Test Plan:
validate; will also try to locally validate an unregisterised build
in case there was some truth to the deleted comment

Reviewers: austin

Subscribers: thomie

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

GHC Trac Issues: #10191

4 years agoRemove some unimplemented GranSim primops
Reid Barton [Fri, 27 Mar 2015 15:25:19 +0000 (11:25 -0400)] 
Remove some unimplemented GranSim primops

Summary:
An attempt to use these resulted in an error like:

[1 of 1] Compiling Main             ( p.hs, p.o )
ghc: panic! (the 'impossible' happened)
  (GHC version 7.8.4 for x86_64-unknown-linux):
emitPrimOp: can't translate PrimOp  parAt#{v}

Test Plan: validate

Reviewers: thomie, austin

Reviewed By: thomie, austin

Subscribers: thomie

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

4 years agoFix Git-commit-id detection for RELEASE=YES
Herbert Valerio Riedel [Thu, 26 Mar 2015 21:39:52 +0000 (22:39 +0100)] 
Fix Git-commit-id detection for RELEASE=YES

By mistake, the Git-commit-id detection was only enabled for
`RELEASE=NO` (since the date-based GHC version computation is
only active in that case). With this commit the commit-id
detection is active regardless of the `RELEASE`-setting.

This is a follow-up to 73e5e2f8bade2d8b2b1ecae958fe12d0b24591ef

4 years agoAdd Monad instance for `((,) a)` (#10190)
Fumiaki Kinoshita [Wed, 25 Mar 2015 04:30:25 +0000 (13:30 +0900)] 
Add Monad instance for `((,) a)` (#10190)

This was proposed a couple of times in the past, e.g.

 - https://mail.haskell.org/pipermail/libraries/2011-November/017153.html
 - https://mail.haskell.org/pipermail/libraries/2013-July/020446.html

but its implementation had been blocked by the fact that `Monoid` wasn't
in scope where the `Monad` class was defined. Since the AMP/FTP restructuring
this is no longer the case.

4 years agoMore comments (related to Trac #10180)
Simon Peyton Jones [Tue, 24 Mar 2015 13:52:20 +0000 (13:52 +0000)] 
More comments (related to Trac #10180)

4 years agoImprove environment handling in TcBinds
Simon Peyton Jones [Tue, 24 Mar 2015 12:52:29 +0000 (12:52 +0000)] 
Improve environment handling in TcBinds

This is a minor refactoring, but it simplifies the code quite a bit

* Decrease the number of variants of tcExtend in TcEnv
* Remove "not_actually_free" from TcEnv.tc_extend_local_env2
* Simplify plumbingof the "closed" flag
* Remove redundant scoping of wild-card variables

4 years agoSome stress tests for the empty case linter
Joachim Breitner [Tue, 24 Mar 2015 10:28:55 +0000 (11:28 +0100)] 
Some stress tests for the empty case linter

This is a variation of T2431 where the emptyness of the type is hidden
behind a newtype, a type family and a closed type family. In all cases,
it would be sound for the compiler to determine that the equality type
is empty and the case alternatives may be dropped.

At the moment, GHC does _not_ determine that. But if it ever does, this
test ensures that we do not forget to make the lint from #10180 smarter
as well.

4 years agoDelete DynFlag for NDP way
Thomas Miedema [Tue, 24 Mar 2015 10:09:43 +0000 (11:09 +0100)] 
Delete DynFlag for NDP way

The last trace of NDP was removed in 2008 in commit:
44ee866e5bc20fcdf29ab13ea050816da9faf915

NDP stood for 'Nested Data Parallelism'. It was superseded by Data
Parallel Haskell (DPH).

Reviewed By: austin

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

4 years agoEmpty alternative lint check: Explain why there are two checks
Joachim Breitner [Tue, 24 Mar 2015 08:37:31 +0000 (09:37 +0100)] 
Empty alternative lint check: Explain why there are two checks

This addresses https://ghc.haskell.org/trac/ghc/ticket/10180#comment:6
[skip ci]

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