3 years Set RELEASE=YES, version 7.10.3 ghc-7.10.3-release
Ben Gamari [Mon, 30 Nov 2015 23:37:29 +0000 (00:37 +0100)] Set RELEASE=YES, version 7.10.3

3 years agorelease notes: Cabal/haddock/Windows issue is now fixed
Ben Gamari [Mon, 30 Nov 2015 21:41:56 +0000 (22:41 +0100)] 
release notes: Cabal/haddock/Windows issue is now fixed

3 years agoBump Cabal submodule to
Ben Gamari [Mon, 30 Nov 2015 21:39:39 +0000 (22:39 +0100)] 
Bump Cabal submodule to

3 years agorts: Re-export mingw printf/scanf variants
Luke Iannini [Wed, 25 Nov 2015 23:39:54 +0000 (00:39 +0100)] 
rts: Re-export mingw printf/scanf variants

This is a workaround for the regression documented in #10726 comments 31
and after. We'll hopefully have a better fix for master.

3 years agousers guide: Add note about #11108 to bugs section
Ben Gamari [Wed, 25 Nov 2015 23:21:13 +0000 (00:21 +0100)] 
users guide: Add note about #11108 to bugs section

3 years agorelease notes: Note some known bugs
Ben Gamari [Wed, 18 Nov 2015 15:18:49 +0000 (16:18 +0100)] 
release notes: Note some known bugs

3 years agox86 codegen: don't generate location comments ghc-7.10.3-rc3
Sergei Trofimovich [Thu, 29 Oct 2015 23:03:42 +0000 (23:03 +0000)] 
x86 codegen: don't generate location comments

The following source snippet 'module A where x */* y = 42'
when being compiled with '-g' option emits syntactically
invalid comment for GNU as:

        .align 8
        .loc 1 3 1 /* */* */

Fixed by not emitting comments at all. We already suppress
all asm comments in 'X86/Ppr.hs'.

Signed-off-by: Sergei Trofimovich <>
Test Plan: added test and check it works

Reviewers: scpmw, simonmar, austin, bgamari

Reviewed By: simonmar

Subscribers: thomie

Differential Revision:

GHC Trac Issues: #10667

3 years agoChange demand information for foreign calls
Luite Stegeman [Thu, 12 Nov 2015 10:13:54 +0000 (11:13 +0100)] 
Change demand information for foreign calls

Foreign calls may not be strict for lifted arguments. Fixes Trac #11076.

Test Plan: ./validate

Reviewers: simonpj, bgamari, austin

Subscribers: thomie

Differential Revision:

GHC Trac Issues: #11076

3 years agoPPC nativeGen: fix shift right arithmetic > 31 bit
Peter Trommler [Mon, 9 Nov 2015 14:59:36 +0000 (15:59 +0100)] 
PPC nativeGen: fix shift right arithmetic > 31 bit

Arithmetic shift right of more than 31 bits yields
zero for positive Int and -1 for negative Int. On
PowerPC immediates greater than 31 are not allowed,
so replace with a shift by 31 bits which gives the
correct result.

Fixes #10870

3 years agoCall Arity: In "e x", the result of "x" is not shared
Joachim Breitner [Fri, 6 Nov 2015 13:04:08 +0000 (14:04 +0100)] 
Call Arity: In "e x", the result of "x" is not shared

in contrast to "e (f x)", where CorePrep will turn it into "let y = f x
in e x". So in
  let f = ...
  in e (f x)
we know that f is called at most once, but in
  let f = ...
  in e f
we do not know that.

Previously Call Arity would assume that in "e x", "x" is evaluated at
most once. This rarely would make a difference (the argument "x" is
analized with an incoming arity of 0, so no eta-expansion would be done
anyways), but of course this should still be fixed.

This fixes #11064.

Note the corresponding code dmdTransformThunkDmd in DmdAnal.

3 years agoaclocal.m4: Do not check for readelf on darwin ghc-7.10.3-rc2
Erik de Castro Lopo [Thu, 5 Nov 2015 10:13:30 +0000 (21:13 +1100)] 
aclocal.m4: Do not check for readelf on darwin

Tested on darwin and linux. Not tested on mingw32.

3 years agoRemove pprTrace from Richard
Ben Gamari [Wed, 4 Nov 2015 13:23:49 +0000 (14:23 +0100)] 
Remove pprTrace from Richard

3 years agorts/win32: Add missing definition for EH_UNWINDING
Ben Gamari [Mon, 2 Nov 2015 13:24:41 +0000 (14:24 +0100)] 
rts/win32: Add missing definition for EH_UNWINDING

This was taken from 5200bdeb26c5ec98739b14b10fc8907296bceeb9 on master.

3 years agoOnly apply WERROR to Stage2HcOpts and LibHcOpts ghc-7.10.3-rc1
Ben Gamari [Fri, 30 Oct 2015 14:53:19 +0000 (09:53 -0500)] 
Only apply WERROR to Stage2HcOpts and LibHcOpts

This prevents warnings from the bootstrap compiler from killing validation

3 years agoZonk properly when checkig pattern synonyms
Simon Peyton Jones [Tue, 27 Oct 2015 13:27:42 +0000 (13:27 +0000)] 
Zonk properly when checkig pattern synonyms

Fixes Trac #10997

Merge to stable branch

3 years agoTcRnMonad: Backport pushLevelAndCaptureConstraints
Ben Gamari [Tue, 27 Oct 2015 19:10:46 +0000 (20:10 +0100)] 
TcRnMonad: Backport pushLevelAndCaptureConstraints

3 years agoMove win32 tarball download logic to script
Ben Gamari [Mon, 26 Oct 2015 22:12:57 +0000 (23:12 +0100)] 
Move win32 tarball download logic to script

This provides an easy way for users and packages to grab the tarballs
necessary to generate a complete source tarball.

3 years agotestsuite: Update base version number in results
Ben Gamari [Mon, 26 Oct 2015 19:56:39 +0000 (15:56 -0400)] 
testsuite: Update base version number in results

3 years Bump back down to 7.10.2
Ben Gamari [Mon, 26 Oct 2015 19:32:13 +0000 (20:32 +0100)] Bump back down to 7.10.2

Keep at 7.10.2 for release candidate

3 years agobase: Add Haddocks to GHC.RTS.Flags
Ben Gamari [Mon, 26 Oct 2015 18:10:50 +0000 (19:10 +0100)] 
base: Add Haddocks to GHC.RTS.Flags

3 years agoFix 7.10.3 release notes
Ben Gamari [Mon, 26 Oct 2015 17:34:12 +0000 (18:34 +0100)] 
Fix 7.10.3 release notes

3 years agoMore release notes
Ben Gamari [Mon, 26 Oct 2015 15:40:50 +0000 (16:40 +0100)] 
More release notes

3 years agobase: Update version number
Ben Gamari [Mon, 26 Oct 2015 15:40:42 +0000 (16:40 +0100)] 
base: Update version number

3 years Bump to 7.10.3
Ben Gamari [Mon, 26 Oct 2015 15:37:31 +0000 (16:37 +0100)] Bump to 7.10.3

3 years agoHandle platforms with renamed "readelf"
Mykola Orliuk [Mon, 26 Oct 2015 15:12:21 +0000 (16:12 +0100)] 
Handle platforms with renamed "readelf"

- Add `-pgmreadelf` option
- Auto configure path and name of "readelf"
- Add settings `readelf command`
- During build of GHC name of tool can be changed with
  `./configure --with-readelf=myreadelf`

Test Plan:
make -C testsuite/tests/driver/recomp011

Reviewers: austin, bgamari

Subscribers: erikd, thomie

Differential Revision:

GHC Trac Issues: #10974

3 years ago7.10.3 release notes
Ben Gamari [Mon, 26 Oct 2015 15:08:11 +0000 (16:08 +0100)] 
7.10.3 release notes

3 years agoTestsuite: skip T10489 unless compiler_debugged (#10489)
Thomas Miedema [Thu, 30 Jul 2015 19:50:10 +0000 (21:50 +0200)] 
Testsuite: skip T10489 unless compiler_debugged (#10489)

3 years agoUpdate perf test results
Ben Gamari [Mon, 26 Oct 2015 09:44:53 +0000 (10:44 +0100)] 
Update perf test results

3 years agoT10518: Ensure literal has 64-bit type
Ben Gamari [Mon, 26 Oct 2015 09:12:13 +0000 (09:12 +0000)] 
T10518: Ensure literal has 64-bit type

Otherwise we get a C-- lint error due to mismatched RHS and
variable types.

3 years agoTestsuite: T3333 still fails on non-linux statically linked ghci (#3333)
Thomas Miedema [Sat, 10 Oct 2015 16:28:20 +0000 (18:28 +0200)] 
Testsuite: T3333 still fails on non-linux statically linked ghci (#3333)

3 years agoInteractiveUI: Fix previous commit
Ben Gamari [Thu, 22 Oct 2015 16:04:36 +0000 (18:04 +0200)] 
InteractiveUI: Fix previous commit

Some day I'll learn to validate before pushing.

3 years agoSuggest chmod 755 instead of 644
Ben Gamari [Thu, 22 Oct 2015 15:35:18 +0000 (17:35 +0200)] 
Suggest chmod 755 instead of 644

Previous suggestion would clear executable bit, meaning directory
couldn't be entered. Fixes #11003.

Test Plan: Read message.

Reviewers: austin, thomie, dfeuer

Reviewed By: thomie, dfeuer

Subscribers: thomie

Differential Revision:

GHC Trac Issues: #11003

3 years agoRegression test for Trac #10390
Simon Peyton Jones [Thu, 7 May 2015 15:46:02 +0000 (16:46 +0100)] 
Regression test for Trac #10390

3 years agoMake Data.List.foldr1 inline
Joachim Breitner [Wed, 2 Sep 2015 22:58:38 +0000 (15:58 -0700)] 
Make Data.List.foldr1 inline

Previously, foldr1 would be defiend recursively and thus not inline.
This is bad, for example, when maximumBy has a strict comparison
function: Before the BBP, it was implemented via foldl1, which inlined
and yielded good code. With BBP, it goes via foldr1, so we better inline
this as well. Fixes #10830.

Differential Revision:

3 years agoTestsuite: mark encoding005 expect_broken(#10623) on Windows
Thomas Miedema [Sat, 15 Aug 2015 14:55:26 +0000 (16:55 +0200)] 
Testsuite: mark encoding005 expect_broken(#10623) on Windows

3 years agoAdd short library names support to Windows linker
Tamar Christina [Sat, 10 Oct 2015 13:21:09 +0000 (15:21 +0200)] 
Add short library names support to Windows linker

Make Linker.hs try asking gcc for lib%s.dll as well, also changed tryGcc
to pass -L to all components by using -B instead. These two fix
shortnames linking on windows.

re-enabled tests: ghcilink003, ghcilink006 and T3333
Added two tests: load_short_name and enabled T1407 on windows.

Reviewed By: thomie, bgamari

Differential Revision:

GHC Trac Issues: #9878, #1407, #1883, #5289

3 years agoAllow non-operator infix pattern synonyms
Matthew Pickering [Thu, 8 Oct 2015 01:36:38 +0000 (20:36 -0500)] 
Allow non-operator infix pattern synonyms

For example

pattern head `Cons` tail = head : tail

Reviewed By: goldfire, austin

Differential Revision:

GHC Trac Issues: #10747

3 years agobase: Have the argument of mask restore the state.
Facundo Domínguez [Mon, 19 Oct 2015 16:16:55 +0000 (18:16 +0200)] 
base: Have the argument of mask restore the state.

The implementation of `mask` and `uninterruptibleMask` assumed so far
that the restore argument would be called in a context with the same
masking state as that set by `mask` or `uninterruptibleMask`.

This patch has the restore argument restore the masking, whatever the
current masking state is.

Test Plan: validate

Reviewers: simonmar, hvr, austin, bgamari

Reviewed By: bgamari

Subscribers: thomie, qnikst

Differential Revision:

GHC Trac Issues: #10149

3 years agoParser: revert some error messages to what they were before 7.10
Thomas Miedema [Thu, 8 Oct 2015 01:36:54 +0000 (20:36 -0500)] 
Parser: revert some error messages to what they were before 7.10

Among doing other things, Phab:D201 (bc2289e13d9586be087bd8136943dc35a0130c88)
tried to improve the error messages thrown by the parser. For example a missing
else clause now prints "parse error in if statement: else clause empty" instead
of "parse error (possibly incorrect indentation or mismatched brackets)".

Some error messages got much worse however (see tests), and the result seems to
be a net negative. Although not entirely satisfactory, this commits therefore
reverts those parser changes.

Reviewed By: austin

Differential Revision:

GHC Trac Issues: #10498

3 years agoPPC: Fix right shift by 32 bits #10870
Erik de Castro Lopo [Mon, 19 Oct 2015 10:00:06 +0000 (21:00 +1100)] 
PPC: Fix right shift by 32 bits #10870

Backported from:

    commit 4bd58c179b8d0f8cf2850acb920cef8605826a2a
    Author: Erik de Castro Lopo <>
    Date:   Sun Sep 13 18:57:40 2015 +1000

    PPC: Fix right shift by 32 bits #10870

The patch in HEAD didn't apply cleanly because of the powerpc64el
work that has been done in HEAD.

3 years agoFix GHCi on Arm (#10375).
Erik de Castro Lopo [Sun, 11 Oct 2015 05:48:11 +0000 (16:48 +1100)] 
Fix GHCi on Arm (#10375).

Arm has two instruction sets, Arm and Thumb, and an execution mode for each.
Executing Arm code in Thumb mode or vice-versa will likely result in an
Illegal instruction exception.

Furthermore, Haskell code compiled via LLVM was generating Arm instructions
while C code compiled via GCC was generating Thumb code by default. When
these two object code types were being linked by the system linker, all was
fine, because the system linker knows how to jump and call from one
instruction set to the other.

The first problem was with GHCi's object code loader which did not know
about Thumb vs Arm. When loading an object file `StgCRun` would jump
into the loaded object which could change the mode causing a crash after
it returned. This was fixed by forcing all C code to generate Arm
instructions by passing `-marm` to GCC.

The second problem was the `mkJumpToAddr` function which was generating
Thumb instructions. Changing that to generate Arm instructions instead
results in a working GHCi on Arm.

Test Plan: validate on x86_64 and arm

Reviewers: bgamari, austin, hvr

Subscribers: thomie

Differential Revision:

GHC Trac Issues: #10375

3 years agoFix kind-var abstraction in SimplUtils.abstractFloats
Simon Peyton Jones [Tue, 6 Oct 2015 08:52:21 +0000 (09:52 +0100)] 
Fix kind-var abstraction in SimplUtils.abstractFloats

A missing 'closeOverKinds' triggered Trac #10934.
Happily the fix is simple.

Merge to 7.10.3

3 years agoSlightly better `Coercible` errors.
Richard Eisenberg [Sun, 20 Sep 2015 21:39:17 +0000 (17:39 -0400)] 
Slightly better `Coercible` errors.

This makes two real changes:
 - Equalities like (a ~R [a]) really *are* insoluble. Previously,
   GHC refused to give up when an occurs check bit on a representational
   equality. But for datatypes, it really should bail.

 - Now, GHC will sometimes report an occurs check error (in cases above)
   for representational equalities. Previously, it never did.

This "fixes" #10715, where by "fix", I mean clarifies the error message.
It's unclear how to do more to fix that ticket.

Test cases: typecheck/should_fail/T10715{,b}

3 years agoFix #10495.
Richard Eisenberg [Mon, 8 Jun 2015 19:57:33 +0000 (15:57 -0400)] 
Fix #10495.

This change means that the intricate reasoning in TcErrors
around getting messages just right for nominal equalities
is skipped for representational equalities.

3 years agoMerge #10817/#10899 (e27b267f)
Richard Eisenberg [Tue, 6 Oct 2015 15:00:11 +0000 (11:00 -0400)] 
Merge #10817/#10899 (e27b267f)

3 years agoMake Windows linker more robust to unknown sections
Tamar Christina [Sat, 3 Oct 2015 20:28:07 +0000 (22:28 +0200)] 
Make Windows linker more robust to unknown sections

The Windows Linker has 3 main parts that this patch changes.

1) Identification and classification of sections
2) Adding of symbols to the symbols tables
3) Reallocation of sections

Previously section identification used to be done on a whitelisted
basis. It was also exclusively being done based on the names of the
sections. This meant that there was a bit of a cat and mouse game
between `GCC` and `GHC`. Every time `GCC` added new sections there was a
good chance `GHC` would break. Luckily this hasn't happened much in the
past because the `GCC` versions `GHC` used were largely unchanged.

The new code instead treats all new section as `CODE` or `DATA`
sections, and changes the classifications based on the `Characteristics`
flag in the PE header. By doing so we no longer have the fragility of
changing section names. The one exception to this is the `.ctors`
section, which has no differentiating flag in the PE header, but we know
we need to treat it as initialization data.

The check to see if the sections are aligned by `4` has been removed.
The reason is that debug sections often time are `1 aligned` but do have
relocation symbols. In order to support relocations of `.debug` sections
this check needs to be gone. Crucially this assumption doesn't seem to
be in the rest of the code. We only check if there are at least 4 bytes
to realign further down the road.

The second loop is iterating of all the symbols in the file and trying
to add them to the symbols table. Because the classification of the
sections we did previously are (currently) not available in this phase
we still have to exclude the sections by hand. If they don't we will
load in symbols from sections we've explicitly ignored the in # 1. This
whole part should rewritten to avoid this. But didn't want to do it in
this commit.

Finally the sections are relocated. But for some reason the PE files
contain a Linux relocation constant in them `0x0011` This constant as
far as I can tell does not come from GHC (or I couldn't find where it's
being set). I believe this is probably a bug in GAS. But because the
constant is in the output we have to handle it. I am thus mapping it to
the constant I think it should be `0x0003`.

Finally, static linking *should* work, but won't. At least not if you
want to statically link `libgcc` with exceptions support. Doing so would
require you to link `libgcc` and `libstd++` but also `libmingwex`. The
problem is that `libmingwex` also defines a lot of symbols that the RTS
automatically injects into the symbol table. Presumably because they're
symbols that it needs. like `coshf`. The these symbols are not in a
section that is declared with weak symbols support. So if we ever want
to get this working, we should either a) Ask mingw to declare the
section as such, or b) treat all a imported symbols as being weak.
Though this doesn't seem like it's a good idea..

Test Plan:
Running ./validate for both x86 and x86_64

Also running the specific test case for #10672

make TESTS="T10672_x86 T10672_x64"

Reviewed By: ezyang, thomie, austin

Differential Revision:

GHC Trac Issues: #9907, #10672, #10563

3 years agoDon't inline/apply other rules when simplifying a rule RHS.
Andrew Farmer [Tue, 13 Oct 2015 02:27:41 +0000 (21:27 -0500)] 
Don't inline/apply other rules when simplifying a rule RHS.

HERMIT users depend on RULES to specify equational properties. 6.10.2
performed both inlining and simplification in both sides of the rules,
meaning they can't really be used for this. This breaks most HERMIT use
cases.  A separate commit already disabled this for the LHS of rules.
This does so for the RHS.

See Trac #10829 for nofib results.

Reviewed By: austin, bgamari, simonpj

Differential Revision:

GHC Trac Issues: #10829

3 years agoUpdate mingw tarball location
Ben Gamari [Wed, 12 Aug 2015 12:06:37 +0000 (14:06 +0200)] 
Update mingw tarball location

3 years agoUpgrade GCC to 5.2.0 for Windows x86 and x86_64
Tamar Christina [Wed, 12 Aug 2015 11:33:13 +0000 (13:33 +0200)] 
Upgrade GCC to 5.2.0 for Windows x86 and x86_64

This patch does a few things

- Moved GHC x86 to MinGW-w64 (Using Awson's patch)
- Moves Both GHCs to MSYS2 toolchains
- Completely removes the dependencies on the git tarball repo
  - Downloads only the required tarball for the architecture for
    which we are building
  - Downloads the perl tarball is missing as well
  - Fixed a few bugs in the linker to fix tests on Windows

The links currently point to and GitHub, it might be
more desirable to mirror them on as with the previous patch

For more details on what the MSYS2 packages I include see #10726
(Awson's comment). but it should contain all we need
and no python or fortran, which makes the uncompressed tar a 1-2
hundreds mb smaller.

The `GCC 5.2.0` in the package supports `libgcc` as a shared library,
this is a problem since
when compiling with -shared the produced dll now has a dependency on
To solve this the flag `-static-libgcc` is now being used for all GCC
calls on windows.

Test Plan:
./validate was ran both on x86 and x86_64 windows and compared against
the baseline.

A few test were failing due to Ld no longer being noisy. These were

The changes to the configure script *should* be validated by the build
bots for the other platforms before landing

Reviewers: simonmar, awson, bgamari, austin, thomie

Reviewed By: thomie

Subscribers: #ghc_windows_task_force, thomie, awson

Differential Revision:

GHC Trac Issues: #10726, #9014, #9218, #10435

3 years agorts/linker: make an error msg a debug msg
Austin Seipp [Fri, 3 Apr 2015 11:12:35 +0000 (06:12 -0500)] 
rts/linker: make an error msg a debug msg

This fixes more testsuite failures on Windows.

Signed-off-by: Austin Seipp <>
3 years agoBuild system: remove function keyword from (#10705)
Thomas Miedema [Fri, 31 Jul 2015 10:45:44 +0000 (12:45 +0200)] 
Build system: remove function keyword from (#10705)

This fixes the FreeBSD build.

3 years agoMake configure error out on missing ghc-tarballs on Windows
Tamar Christina [Thu, 30 Jul 2015 08:36:45 +0000 (10:36 +0200)] 
Make configure error out on missing ghc-tarballs on Windows

Currently checking out the source on windows requires two git
checkouts. One for the GHC sources and one for the GHC-tarballs.

This patch will make configure issue an error if compiling under
windows and the GHC-tarballs folder is missing.

On failure the user is told which command they need to run to get the
tarballs or if they want configure to handle it for them configure
provide the `--enable-tarballs-autodownload` flag.

Test Plan:
1. make sure ghc-tarballs folder is not present
2. run ./configure which should fail giving an error that tarballs is
missing and how to get it
3. run ./configure --enable-tarballs-autodownload and the tarballs
should be downloaded and configure finishes
4. rerun the command in 3, no new download should be done.
5. run configure without --enable-tarballs-autodownload, configure
should finish correctly.

Reviewers: bgamari, austin, thomie

Reviewed By: thomie

Subscribers: thomie

Differential Revision:

GHC Trac Issues: #10705

3 years agoEnsure shiftL/shiftR arguments aren't negative
Ben Gamari [Tue, 6 Oct 2015 17:30:50 +0000 (19:30 +0200)] 
Ensure shiftL/shiftR arguments aren't negative

Fixes #10571.

3 years agoAsmCodeGen: Ensure LLVM .line directives are sorted
Ben Gamari [Tue, 6 Oct 2015 16:29:03 +0000 (18:29 +0200)] 
AsmCodeGen: Ensure LLVM .line directives are sorted

Apparently some Clang 3.6 expects these to be sorted.

Patch due to Peter Wortmann.

Fixes #10687.

3 years agoFix export list of PPC.Regs
Ben Gamari [Tue, 13 Oct 2015 12:56:07 +0000 (14:56 +0200)] 
Fix export list of PPC.Regs

This was likely due to an incorrectly merged conflict during

3 years agonativeGen PPC: fix > 16 bit offsets in stack handling
Erik de Castro Lopo [Sat, 3 Oct 2015 01:25:46 +0000 (11:25 +1000)] 
nativeGen PPC: fix > 16 bit offsets in stack handling

Back port of Peter Trommler's patch from master (19dae027cb) to the
7.10 branch. Peter's commit does not apply to the 7.10 branch because
PowerPC64 was added to master after the 7.10 branch was started.

Comments from the original commit:
Implement access to spill slots at offsets larger than 16 bits.
Also allocation and deallocation of spill slots was restricted to
16 bit offsets. Now 32 bit offsets are supported on all PowerPC

The implementation of 32 bit offsets requires more than one instruction
but the native code generator wants one instruction. So we implement
pseudo-instructions that are pretty printed into multiple assembly

With pseudo-instructions for spill slot allocation and deallocation
we can also implement handling of the back chain pointer according
to the ELF ABIs.

3 years agoSmall improvement in pretty-printing constructors.
Richard Eisenberg [Sun, 20 Sep 2015 20:03:07 +0000 (16:03 -0400)] 
Small improvement in pretty-printing constructors.

This fixes #10810 by cleaning up pretty-printing of constructor
declarations. This change also removes a (in my opinion) deeply
bogus orphan instance OutputableBndr [Located name], making
HsDecls now a non-orphan module. Yay all around.

Test case: th/T10810

3 years agoMake headers C++ compatible (fixes #10700)
Alexey Shmalko [Thu, 30 Jul 2015 08:37:05 +0000 (10:37 +0200)] 
Make headers C++ compatible (fixes #10700)

Some headers used `new` as parameter name, which is reserved word in
C++. This patch changes these names to `new_`.

Test Plan: validate

Reviewers: austin, ezyang, bgamari, simonmar

Reviewed By: simonmar

Subscribers: thomie

Differential Revision:

GHC Trac Issues: #10700

3 years agoFix tests
Ben Gamari [Tue, 20 Oct 2015 18:05:45 +0000 (14:05 -0400)] 
Fix tests

3 years agoMore trivial test fixes
Ben Gamari [Fri, 2 Oct 2015 21:17:50 +0000 (23:17 +0200)] 
More trivial test fixes

3 years agoFix up trivial testsuite failures
Ben Gamari [Tue, 20 Oct 2015 17:57:29 +0000 (13:57 -0400)] 
Fix up trivial testsuite failures

These are fallout from da9b2ec3e19edb1de0e73e8f32aa0443743f072c and

3 years agoFix treatment of -0.0
Ben Gamari [Fri, 2 Oct 2015 13:40:43 +0000 (15:40 +0200)] 
Fix treatment of -0.0

Here we fix a few mis-optimizations that could occur in code with
floating point comparisons with -0.0. These issues arose from our
insistence on rewriting equalities into case analyses and the
simplifier's ignorance of floating-point semantics.

For instance, in Trac #10215 (and the similar issue Trac #9238) we
turned `ds == 0.0` into a case analysis,

case ds of
    __DEFAULT -> ...
    0.0 -> ...

Where the second alternative matches where `ds` is +0.0 and *also* -0.0.
However, the simplifier doesn't realize this and will introduce a local
inlining of `ds = -- +0.0` as it believes this is the only
value that matches this pattern.

Instead of teaching the simplifier about floating-point semantics
we simply prohibit case analysis on floating-point scrutinees and keep
this logic in the comparison primops, where it belongs.

We do several things here,

 - Add test cases from relevant tickets
 - Clean up a bit of documentation
 - Desugar literal matches against floats into applications of the
   appropriate equality primitive instead of case analysis
 - Add a CoreLint to ensure we don't pattern match on floats in Core

Test Plan: validate with included testcases

Reviewers: goldfire, simonpj, austin

Subscribers: thomie

Differential Revision:

GHC Trac Issues: #10215, #9238

3 years agoAdd framework flags when linking a dynamic library
Christiaan Baaij [Wed, 5 Aug 2015 12:20:56 +0000 (14:20 +0200)] 
Add framework flags when linking a dynamic library

This fixes the GHC side of trac #10568. So `cabal install
--ghc-options="-framework GLUT" GLUT` creates a correctly linked
GLUT.dylib. We still need to explictly pass `--ghc-options="-framework
GLUT"` because the Cabal side #10568 is not fixed.

Update: the Cabal side of #10568 is fixed by

Test Plan: validate

Reviewers: austin, rwbarton, bgamari

Reviewed By: bgamari

Subscribers: rwbarton, thomie

Differential Revision:

GHC Trac Issues: #10568

3 years agoFix a bug with mallocForeignPtr and finalizers (#10904)
Simon Marlow [Wed, 23 Sep 2015 09:01:23 +0000 (10:01 +0100)] 
Fix a bug with mallocForeignPtr and finalizers (#10904)

Summary: See Note [MallocPtr finalizers]

Test Plan: validate; new test T10904

Reviewers: ezyang, bgamari, austin, hvr, rwbarton

Subscribers: thomie

Differential Revision:

3 years agoClarify parsing infelicity.
Richard Eisenberg [Sat, 19 Sep 2015 20:44:29 +0000 (16:44 -0400)] 
Clarify parsing infelicity.

This fixes #10855.

3 years agoFlush stdout in test case for #10596
Joachim Breitner [Wed, 15 Jul 2015 08:29:26 +0000 (10:29 +0200)] 
Flush stdout in test case for #10596

which might help, as it has helped with lots of other TH-related test
cases in the past.

3 years agoFix #10596 by looking up 'Int' not 'Maybe Int' in the map.
Edward Z. Yang [Tue, 7 Jul 2015 19:19:54 +0000 (21:19 +0200)] 
Fix #10596 by looking up 'Int' not 'Maybe Int' in the map.

Test Plan: validate

Reviewers: goldfire, austin, simonpj, bgamari

Reviewed By: bgamari

Subscribers: simonpj, rwbarton, thomie, bgamari

Differential Revision:

GHC Trac Issues: #10596

3 years agofix EBADF unqueueing in select backend (Trac #10590)
Sergei Trofimovich [Tue, 7 Jul 2015 15:00:23 +0000 (17:00 +0200)] 
fix EBADF unqueueing in select backend (Trac #10590)

Alexander found a interesting case:
1. We have a queue of two waiters in a blocked_queue
2. first file descriptor changes state to RUNNABLE,
   second changes to INVALID
3. awaitEvent function dequeued RUNNABLE thread to a
   run queue and attempted to dequeue INVALID descriptor
   to a run queue.

Unqueueing INVALID fails thusly:
        #3  0x000000000045cf1c in barf (s=0x4c1cb0 "removeThreadFromDeQueue: not found")
                               at rts/RtsMessages.c:42
        #4  0x000000000046848b in removeThreadFromDeQueue (...) at rts/Threads.c:249
        #5  0x000000000049a120 in removeFromQueues (...) at rts/RaiseAsync.c:719
        #6  0x0000000000499502 in throwToSingleThreaded__ (...) at rts/RaiseAsync.c:67
        #7  0x0000000000499555 in throwToSingleThreaded (..) at rts/RaiseAsync.c:75
        #8  0x000000000047c27d in awaitEvent (wait=rtsFalse) at rts/posix/Select.c:415

The problem here is a throwToSingleThreaded function that tries
to unqueue a TSO from blocked_queue, but awaitEvent function
leaves blocked_queue in a inconsistent state while traverses
over blocked_queue:

      case RTS_FD_IS_READY:
              debugBelch("Waking up blocked thread %lu\n",
                         (unsigned long)tso->id));
          tso->why_blocked = NotBlocked;
          tso->_link = END_TSO_QUEUE;              // Here we break the queue head

Signed-off-by: Sergei Trofimovich <>
Test Plan: tested on a sample from T10590

Reviewers: austin, bgamari, simonmar

Reviewed By: bgamari, simonmar

Subscribers: qnikst, thomie, bgamari

Differential Revision:

GHC Trac Issues: #10590, #4934

3 years agoGenerate .dyn_o files for .hsig files with -dynamic-too
Michael Smith [Thu, 23 Jul 2015 09:41:16 +0000 (11:41 +0200)] 
Generate .dyn_o files for .hsig files with -dynamic-too

With -dynamic-too, .dyn_o files were not being generated for .hsig
files.  Normally, this is handled in the pipeline; however, the branch
for .hsig files called compileEmptyStub directly instead of going
through runPipeline.  When compiling a Cabal package that included .hsig
files, this triggered a linker error later on, as it expected a .dyn_o
file to have been generated for each .hsig.

The fix is to use runPipeline for .hsig files, just as with .hs files.
Alternately, one could duplicate the logic for handling -dynamic-too in
the .hsig branch, but simply calling runPipeline ends up being much

Test Plan: validate

Reviewers: austin, ezyang, bgamari, thomie

Reviewed By: ezyang, thomie

Subscribers: thomie

Differential Revision:

GHC Trac Issues: #10660

3 years agoBuild system: remove hack for Mac OSX in (#10476)
Thomas Miedema [Mon, 7 Sep 2015 13:58:33 +0000 (15:58 +0200)] 
Build system: remove hack for Mac OSX in (#10476)

Cross-compilation on Mac OSX currently doesn't work. While building
stage 1, the build system uses the `ar` for the target architecture
instead of the `ar` for build/host architecture.

The cause is a hack added in 24746fe78024a1edab843bc710c79c55998ab134
(2010), to supporting bootstrap compilers built with older versions of
Xcode. Xcode 4.3 started installing command line tools in a different
location. Assuming this all behind us now, and the paths didn't change
again (you never now), we can delete the hack.

Deleting the hack fixes the cross compilation issue. Tested by Trac user

Reviewed by: austin

Differential Revision:

3 years agoFix trac #10413
Ben Gamari [Wed, 2 Sep 2015 11:26:22 +0000 (13:26 +0200)] 
Fix trac #10413

Test Plan: Validate.

Reviewers: austin, tibbe, bgamari

Reviewed By: tibbe, bgamari

Subscribers: thomie

Differential Revision:

GHC Trac Issues: #10413

3 years agoDocs: make sure all libs are included in index.html (#10879)
Thomas Miedema [Tue, 15 Sep 2015 19:37:38 +0000 (21:37 +0200)] 
Docs: make sure all libs are included in index.html (#10879)

During the build, when HADDOCK_DOCS=YES, the command 'cd libraries && sh
gen_contents_index --intree' is run, which calls haddock to generate the
haddock index at 'libraries/dist-haddock/index.html'.

What it did before was check the ./packages file for all libraries. The
problem is that 'base' and 'ghc-prim' were folded into the main repo
some time ago, hence don't have an entry in the ./packages file anymore.
As a result, 'base' and 'ghc-prim' were missing from the index.html

It now simply runs haddock on all the all the `.haddock` files in the
libraries directory.

The only risk is that this could include the extra libraries in the
index.html, if you ever built them in the past (with
BUILD_EXTRA_PKGS=YES), even though now you want to exclude them (with
BUILD_EXTRA_PKGS=NO). gen_contents_index doesn't have access to build
system variables though (PACKAGES_STAGE1+PACKAGES_STAGE2), so fixing
this would be a little bit fiddly.

Test Plan:
'make libraries/dist-haddock/index.html && grep -q base
libraries/dist-haddock/index.html && echo ok'

Reviewed by: austin

Differential Revision:

3 years agoFix #10713.
Richard Eisenberg [Mon, 3 Aug 2015 12:53:03 +0000 (08:53 -0400)] 
Fix #10713.

When doing the apartness/flattening thing, we really only need to
eliminate non-generative tycons, not *all* families. (Data families
are indeed generative!)

3 years agoTyCon: Backport isGenerativeTyCon
Ben Gamari [Thu, 24 Sep 2015 00:04:27 +0000 (02:04 +0200)] 
TyCon: Backport isGenerativeTyCon

3 years agoUpdate user guide, fixing #10772
Richard Eisenberg [Sat, 19 Sep 2015 18:45:28 +0000 (14:45 -0400)] 
Update user guide, fixing #10772

3 years agoUpdate T10668 output
Ben Gamari [Tue, 20 Oct 2015 13:52:13 +0000 (09:52 -0400)] 
Update T10668 output

3 years agoParenthesise TypeOperator in import hints
Thomas Winant [Thu, 23 Jul 2015 09:43:21 +0000 (11:43 +0200)] 
Parenthesise TypeOperator in import hints

When a constructor was mistakenly imported directly instead of as a
constructor of a data type, a hint will be shown on how to correctly
it. Just like the constructor, the data type should be surrounded in
parentheses if it is an operator (TypeOperator in this case).

Instead of:

        In module ‘Data.Type.Equality’:
          ‘Refl’ is a data constructor of ‘:~:’
        To import it use
          ‘import’ Data.Type.Equality( :~:( Refl ) )
          ‘import’ Data.Type.Equality( :~:(..) )


        In module ‘Data.Type.Equality’:
          ‘Refl’ is a data constructor of ‘(:~:)’
        To import it use
          ‘import’ Data.Type.Equality( (:~:)( Refl ) )
          ‘import’ Data.Type.Equality( (:~:)(..) )

Test Plan: pass new test

Reviewers: austin, bgamari, simonpj

Reviewed By: simonpj

Subscribers: simonpj, thomie

Differential Revision:

GHC Trac Issues: #10668

3 years agoRTS.Flags: Rename Nat to RtsNat
Ben Gamari [Wed, 23 Sep 2015 23:25:06 +0000 (01:25 +0200)] 
RTS.Flags: Rename Nat to RtsNat

3 years agoExport more types from GHC.RTS.Flags (#9970)
RyanGlScott [Tue, 7 Jul 2015 19:20:07 +0000 (21:20 +0200)] 
Export more types from GHC.RTS.Flags (#9970)

Export the data types `GiveGCStats`, `DoCostCentres`, `DoHeapProfiles`,
and `DoTrace`, as well as the type synonyms `Time` and `RtsNat`. The
above data types appear as fields in the `-Stats` data types in
`GHC.RTS.Flags`, but since they only have `Show` instances, it is
practically impossible to due anything useful with the above types
unless they are exported.

Reviewers: hvr, ekmett, austin, ezyang, bgamari

Reviewed By: bgamari

Subscribers: thomie, bgamari

Differential Revision:

GHC Trac Issues: #9970

3 years agoRemove all references to sync-all
Thomas Miedema [Tue, 14 Jul 2015 15:15:12 +0000 (17:15 +0200)] 
Remove all references to sync-all

3 years agoTestsuite: mark T6037 expect_fail on Windows (#6037)
Thomas Miedema [Sat, 12 Sep 2015 21:34:12 +0000 (23:34 +0200)] 
Testsuite: mark T6037 expect_fail on Windows (#6037)

3 years agoMark T10689a as broken
Ben Gamari [Tue, 20 Oct 2015 12:00:41 +0000 (08:00 -0400)] 
Mark T10689a as broken

It needs a parser change from 8.0 which isn't present in 7.10

3 years agoAdd pprRuleName
Ben Gamari [Wed, 23 Sep 2015 23:17:27 +0000 (01:17 +0200)] 
Add pprRuleName

3 years agoDeal with phantom type variables in rules
Simon Peyton Jones [Wed, 29 Jul 2015 15:06:29 +0000 (16:06 +0100)] 
Deal with phantom type variables in rules

See Note [Unbound template type variables] in Rules.hs
This fixes Trac #10689.

The problem was a rule LHS that mentioned a type variable
in a phantom argument to a type synonym.  Then matching the
LHS didn't bind the type variable, and the rule matcher

This patch fixes the problem, as described by the Note.

I also went back to not-cloning the template varaibles during
rule matching.  I'm convinced that it's not necessary now
(if it ever was), and cloning makes the fix for #10689 much more

3 years agoDo not inline or apply rules on LHS of rules
Simon Peyton Jones [Mon, 27 Jul 2015 12:56:31 +0000 (13:56 +0100)] 
Do not inline or apply rules on LHS of rules

This is the right thing to do anyway, and fixes Trac #10528

3 years agoMonoLocalBinds test passes
Ben Gamari [Tue, 20 Oct 2015 07:15:19 +0000 (03:15 -0400)] 
MonoLocalBinds test passes

3 years agoAlways generalise a partial type signature
Simon Peyton Jones [Mon, 5 Jan 2015 10:39:46 +0000 (10:39 +0000)] 
Always generalise a partial type signature

This fixes an ASSERT failure in TcBinds.  The problem was that we
were generating NoGen plan for a function with a partial type signature,
and that led to confusion and lost invariants.

See Note [Partial type signatures and generalisation] in TcBinds

3 years agoUpdate test T10826
Ben Gamari [Tue, 20 Oct 2015 01:24:22 +0000 (21:24 -0400)] 
Update test T10826

3 years agoForbid annotations when Safe Haskell safe mode is enabled.
David Kraeutmann [Tue, 8 Sep 2015 16:35:33 +0000 (11:35 -0500)] 
Forbid annotations when Safe Haskell safe mode is enabled.

For now, this fails compliation immediately with an error. If desired, this
can be a warning that annotations in Safe Haskell are ignored.

Signed-off-by: David Kraeutmann <>
Reviewed By: goldfire, austin

Differential Revision:

GHC Trac Issues: #10826

3 years agoRespect GHC_CHARENC environment variable #10762
Michael Snoyman [Sat, 29 Aug 2015 10:23:48 +0000 (12:23 +0200)] 
Respect GHC_CHARENC environment variable #10762

Only supports UTF-8 as a value right now. I expect some discussion to go
on around the naming of this variable and whether it's valid to backport
it to GHC 7.10 (which would be my preference). The motivation here is
that, when capturing the output of GHC to a file, we often want to
ensure that the output is UTF-8, regardless of the actual character
encoding of the terminal/console.

On the other hand, we don't want to necessary change the
terminal/console encoding. The reason being:

* On Windows, this requires a global-esque change to the console
  codepage, which adversely affects other processes in the same console

* On all OSes, this can break features like smart quote auto-detection.

Test Plan:
Set LANG to C, GHC_CHARENC to UTF-8, and compile a Haskell source
file with a non-ASCII warning produced. The output who include the UTF-8
sequence instead of replacing it with ?.

Reviewers: austin, rwbarton, bgamari

Reviewed By: bgamari

Subscribers: hsyl20, thomie

Differential Revision:

GHC Trac Issues: #10762

3 years agoUse a response file for linker command line arguments #10777
Michael Snoyman [Wed, 2 Sep 2015 11:31:25 +0000 (13:31 +0200)] 
Use a response file for linker command line arguments #10777

On Windows, we're constrained to 32k bytes total for command line
arguments.  When building large projects, this limit can be exceeded.
This patch changes GHC to always use response files for linker
arguments, a feature first used by Microsoft compilers and added to GCC
(over a decade ago).

Alternatives here include:

* Only use this method on Windows systems
* Check the length of the command line arguments and use that to decide
  whether to use this method

I did not pursue either of these, as I believe it would make the patch
more likely to break in less tested situations.

Test Plan:
Confirm that linking still works in general. Ideally: compile a very
large project on Windows with this patch. (I am attempting to do that
myself now, but having trouble getting the Windows build tool chain up
and running.)

Reviewers: goldfire, hvr, rwbarton, austin, thomie, bgamari, Phyx

Reviewed By: thomie, bgamari, Phyx

Subscribers: erikd, awson, #ghc_windows_task_force, thomie

Differential Revision:

GHC Trac Issues: #8596, #10777

3 years agoTransliterate unknown characters at output
Michael Snoyman [Tue, 18 Aug 2015 15:58:02 +0000 (17:58 +0200)] 
Transliterate unknown characters at output

This avoids the compiler from crashing when, for example, a warning
contains a non-Latin identifier and the LANG variable is set to C.
Fixes #6037.

Test Plan:
Create a Haskell source file containing an identifier with non-Latin
characters and no type signature. Compile with `LANG=C ghc -Wall
foo.hs`, and it should fail. With this patch, it will succeed.

Reviewers: austin, rwbarton, bgamari

Subscribers: thomie

Differential Revision:

GHC Trac Issues: #6037, #10762

3 years agoDump files always use UTF8 encoding #10762
Michael Snoyman [Tue, 18 Aug 2015 15:58:36 +0000 (17:58 +0200)] 
Dump files always use UTF8 encoding #10762

When the Windows codepage or *nix LANG variable is something besides
UTF-8, dumping to file can cause GHC to exit currently. This changes the
output encoding for files to match the defined input encoding for
Haskell source code (UTF-8), making it easier for users and build tools
to capture this output.

Test Plan:
Create a Haskell source file with non-Latin characters for identifier
names and
compile with:

LANG=C ghc -ddump-to-file -ddump-hi filename.hs -fforce-recomp

Without this patch, it will fail. With this patch, it succeeds

Reviewers: austin, rwbarton, bgamari

Reviewed By: bgamari

Subscribers: thomie

Differential Revision:

GHC Trac Issues: #10762

3 years agoFix tests
Ben Gamari [Mon, 19 Oct 2015 17:57:56 +0000 (13:57 -0400)] 
Fix tests

3 years agoEnsure DynFlags are consistent
Ben Gamari [Thu, 6 Aug 2015 15:25:46 +0000 (17:25 +0200)] 
Ensure DynFlags are consistent

While we have always had makeDynFlagsConsistent to enforce a variety of
consistency invariants on DynFlags, it hasn't been widely used.
GHC.Main, for instance, ignored it entirely. This leads to issues like
Trac #10549, where an OPTIONS_GHC pragma introduced an inconsistency,
leading to a perplexing crash later in compilation.

Here I add consistency checks in GHC.Main.set{Session,Program}DynFlags,
closing this hole.

Fixes #10549.

Test Plan: Validate with T10549

Reviewers: austin

Subscribers: thomie

Differential Revision:

GHC Trac Issues: #10549

Cherry-Picked-From: eca9a1a17c12d01636417fb88bda5ee5fe34577f

3 years agoFix #10489
Richard Eisenberg [Fri, 5 Jun 2015 13:56:21 +0000 (09:56 -0400)] 
Fix #10489

Dang, roles are annoying.

Test case: typecheck/should_compile/T10489

Cherry-Picked-From: 61b96a86c5342fb1c850361177d60fe855d948f6

3 years agoSet RELEASE=NO
Ben Gamari [Thu, 30 Jul 2015 09:54:45 +0000 (11:54 +0200)] 

3 years agoRevert merges since ghc-7.10.2-release
Ben Gamari [Thu, 22 Oct 2015 08:20:53 +0000 (10:20 +0200)] 
Revert merges since ghc-7.10.2-release

These commits were pushed hastily with insufficient testing. There were
significant validation issues. For the sake of clarity of history let's
just start from scratch.

3 years agoFix export list of PPC.Regs
Ben Gamari [Tue, 13 Oct 2015 12:56:07 +0000 (14:56 +0200)] 
Fix export list of PPC.Regs

This was likely due to an incorrectly merged conflict during

3 years agoDon't inline/apply other rules when simplifying a rule RHS.
Andrew Farmer [Tue, 13 Oct 2015 02:27:41 +0000 (21:27 -0500)] 
Don't inline/apply other rules when simplifying a rule RHS.

HERMIT users depend on RULES to specify equational properties. 6.10.2
performed both inlining and simplification in both sides of the rules,
meaning they can't really be used for this. This breaks most HERMIT use
cases.  A separate commit already disabled this for the LHS of rules.
This does so for the RHS.

See Trac #10829 for nofib results.

Reviewed By: austin, bgamari, simonpj

Differential Revision:

GHC Trac Issues: #10829