ghc.git
3 years agoAdd -fwarn-missing-monadfail-instance to mkUserGuidePart
Ben Gamari [Wed, 18 Nov 2015 11:20:35 +0000 (12:20 +0100)] 
Add -fwarn-missing-monadfail-instance to mkUserGuidePart

3 years agoDisable failed specialisation warnings by default & update documentation.
Ben Gamari [Wed, 18 Nov 2015 11:19:01 +0000 (12:19 +0100)] 
Disable failed specialisation warnings by default & update documentation.

These were far too noisy to enable by default. In the future we will
hopefully have a more variant of -Wall targetted at these sorts of
diagnostics.

In the interim I've pointed out the existence of these options in the
release
notes in hopes that people will discover them.

Test Plan: Validate

Reviewers: hvr, austin

Subscribers: thomie

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

3 years agoMore import related hints
Joachim Breitner [Wed, 18 Nov 2015 11:18:17 +0000 (12:18 +0100)] 
More import related hints

Now for unqualified imports. Improves upon #11071.

Unfortunately, it seems that since 7.10, ghc will not print all
out-of-scope errors.

Test Plan: test suite updated

Reviewers: austin, thomie, bgamari

Reviewed By: bgamari

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

GHC Trac Issues: #11071

3 years agoDynFlags: Don't list TemplateHaskell as supported if it's not
Ben Gamari [Wed, 18 Nov 2015 06:56:30 +0000 (07:56 +0100)] 
DynFlags: Don't list TemplateHaskell as supported if it's not

`-XTemplateHaskell` requires GHCi; don't show it in
`--supported-extensions` if it's not supported.

Together with https://github.com/haskell/cabal/issues/2644
this allows to finally fix a long-standing annoyance in cabal
of not being able to detect availability of TH in build-plans.

Fixes #11102

See also https://github.com/haskell/cabal/pull/2930 which provides
emulation of this feature for older GHCs.

Reviewed By: bgamari

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

3 years agoMonadFail proposal, phase 1
David Luposchainsky [Tue, 17 Nov 2015 16:10:02 +0000 (17:10 +0100)] 
MonadFail proposal, phase 1

This implements phase 1 of the MonadFail proposal (MFP, #10751).

- MonadFail warnings are all issued as desired, tunable with two new flags
- GHC was *not* made warning-free with `-fwarn-missing-monadfail-warnings`
  (but it's disabled by default right now)

Credits/thanks to
- Franz Thoma, whose help was crucial to implementing this
- My employer TNG Technology Consulting GmbH for partially funding us
  for this work

Reviewers: goldfire, austin, #core_libraries_committee, hvr, bgamari, fmthoma

Reviewed By: hvr, bgamari, fmthoma

Subscribers: thomie

Projects: #ghc

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

GHC Trac Issues: #10751

3 years agoImplement OverloadedLabels
Adam Gundry [Tue, 17 Nov 2015 14:50:33 +0000 (15:50 +0100)] 
Implement OverloadedLabels

See
https://ghc.haskell.org/trac/ghc/wiki/Records/OverloadedRecordFields/OverloadedLabels
for the big picture.

Reviewers: goldfire, simonpj, austin, hvr, bgamari

Reviewed By: simonpj, bgamari

Subscribers: kosmikus, thomie, mpickering

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

3 years agoFix archive loading on Windows by the runtime loader
Tamar Christina [Tue, 17 Nov 2015 14:35:46 +0000 (15:35 +0100)] 
Fix archive loading on Windows by the runtime loader

The runtime loader is unable to find archive files `.a` shipping
with the inplace `GCC`.

It seems the issue is caused by `findArchive` being unable to
find any archives that are shipped using the in-place `GCC`.

- It works on Linux because `findArchive` would search
  the standard Linux include path.
- It works during compilation because `GCC` can find it's own libraries
  (we explicitly tell it where to look for libraries using the `gcc`
  wrapper around `realgcc`)

So fixing the issue means using `searchForLibUsingGcc` in `findArchive`
as well, which will then find the correct file.

The reason for the error as it is, is because if we can't locate the
library using any of the methods we have, we assume it is a system dll,
or something on the system search path.  e.g. if trying to load
`kernel32.dll`.

There is a slight issue in that the `GHCi` code (incorrectly) favors
`static archives` over `dynamic` ones

```
findDll        `orElse`
findArchive    `orElse`
tryGcc         `orElse`
tryGccPrefixed `orElse`
assumeDll
```
This has the unwanted effect of when `kernel32` is specified as a lib,
it will try to load `kernel32.a` instead of `kernel32.dll`.

To solve this I have added another search function that is able to
search the Windows search paths using `SearchPath` in order to find if
it is a dll on the system search path.

The new search order is:

```
findDll     `orElse`
findSysDll  `orElse`
tryGcc      `orElse`
findArchive `orElse`
assumeDll
```

(`tryGccPrefixed` was rolled into `tryGcc` so it is no longer needed at
top level)

Test Plan: ./validate added new windows tests T3242

Reviewers: thomie, erikd, hvr, austin, bgamari

Reviewed By: thomie, erikd, bgamari

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

GHC Trac Issues: #3242

3 years agoMake `timer_create(CLOCK_REALTIME)` autoconf test more reliable
Herbert Valerio Riedel [Tue, 17 Nov 2015 14:30:56 +0000 (15:30 +0100)] 
Make `timer_create(CLOCK_REALTIME)` autoconf test more reliable

I've noticed that on a platform with a coarse timer/scheduling
granularity of 10ms this autoconf tests fails to detect a working
`timer_create(CLOCK_REALTIME)`.

On AIX, this effectively means that intervals/timers are rounded up to
multiples of 10ms, so a 13ms delay is effectively a 20ms delay.

By using a 100ms timeout we are on the safe side.

Reviewers: austin, bgamari

Reviewed By: bgamari

Subscribers: thomie, erikd

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

3 years agoUpdate Cabal submodule for new known extension
Adam Sandberg Eriksson [Tue, 17 Nov 2015 14:29:22 +0000 (15:29 +0100)] 
Update Cabal submodule for new known extension

Reviewers: austin, bgamari

Reviewed By: bgamari

Subscribers: thomie

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

3 years agotemplate-haskell: drop `TemplateHaskell` requirement
Herbert Valerio Riedel [Tue, 17 Nov 2015 14:55:43 +0000 (15:55 +0100)] 
template-haskell: drop `TemplateHaskell` requirement

`other-extensions: TemplateHaskell` is inaccurate: It's not required
to compile `template-haskell` (otherwise we wouldn't be able to build
that package via `ghc-stage1`...)

This has been discovered while working on #11102

3 years agoRemove orphan Functor instance of Data.Graph.SCC
Ömer Sinan Ağacan [Tue, 17 Nov 2015 08:50:05 +0000 (09:50 +0100)] 
Remove orphan Functor instance of Data.Graph.SCC

Reviewers: bgamari, austin

Reviewed By: austin

Subscribers: thomie

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

3 years agoT9181: Fix testsuite output
Ben Gamari [Tue, 17 Nov 2015 11:20:30 +0000 (06:20 -0500)] 
T9181: Fix testsuite output

I'm not really sure how this one snuck through my local validation. Hmm.

3 years agoBump process submodule
Ben Gamari [Tue, 17 Nov 2015 08:37:51 +0000 (09:37 +0100)] 
Bump process submodule

3 years agoRevert "Unify hsig and hs-boot; add preliminary "hs-boot" merging."
Edward Z. Yang [Sat, 14 Nov 2015 00:18:24 +0000 (16:18 -0800)] 
Revert "Unify hsig and hs-boot; add preliminary "hs-boot" merging."

Summary:
This reverts commit 06d46b1e4507e09eb2a7a04998a92610c8dc6277.

This also has a Haddock submodule update.

Test Plan: validate

Reviewers: simonpj, austin, bgamari

Subscribers: thomie

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

3 years agoMove usage calculation to desugaring, simplifying ModGuts.
Edward Z. Yang [Fri, 13 Nov 2015 00:38:02 +0000 (16:38 -0800)] 
Move usage calculation to desugaring, simplifying ModGuts.

Summary:
(This patch was excised from the fat interfaces patch, which
has been put indefinitely on hold.)

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

Reviewers: simonpj, austin, bgamari

Subscribers: thomie

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

3 years agos/FrontendMerge/FrontendInterface/g
Edward Z. Yang [Tue, 20 Oct 2015 02:16:14 +0000 (19:16 -0700)] 
s/FrontendMerge/FrontendInterface/g

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
3 years agoImplement support for user-defined type errors.
Iavor S. Diatchki [Mon, 16 Nov 2015 16:08:14 +0000 (17:08 +0100)] 
Implement support for user-defined type errors.

Implements Lennart's idea from the Haskell Symposium.
Users may use the special type function `TypeError`, which is
similar to `error` at the value level.

See Trac ticket https://ghc.haskell.org/trac/ghc/ticket/9637, and wiki
page https://ghc.haskell.org/trac/ghc/wiki/CustomTypeErros

Test Plan: Included testcases

Reviewers: simonpj, austin, hvr, goldfire, bgamari

Reviewed By: goldfire, bgamari

Subscribers: adamgundry, thomie

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

GHC Trac Issues: #9637

3 years agoData.List.isSubsequenceOf documentation clarification
Justin Raymond [Mon, 16 Nov 2015 16:05:36 +0000 (17:05 +0100)] 
Data.List.isSubsequenceOf documentation clarification

Fixes #11083.

Reviewers: austin, hvr, bgamari

Reviewed By: bgamari

Subscribers: thomie

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

GHC Trac Issues: #11083

3 years agoWeaken monadic list operations to Applicative
Ben Gamari [Mon, 16 Nov 2015 16:02:58 +0000 (17:02 +0100)] 
Weaken monadic list operations to Applicative

Generalize `filterM`, `mapAndUnzipM`, `zipWithM`, `zipWithM_`,
`replicateM`, and `replicateM_`.

Reviewers: ekmett, #core_libraries_committee, austin, hvr, bgamari

Reviewed By: ekmett, #core_libraries_committee, bgamari

Subscribers: ekmett, glguy, thomie

Projects: #ghc

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

GHC Trac Issues: #10168

3 years agoUse TcM instead of it's expanded form, in TcSplice
Ömer Sinan Ağacan [Mon, 16 Nov 2015 16:01:01 +0000 (17:01 +0100)] 
Use TcM instead of it's expanded form, in TcSplice

Reviewers: austin, bgamari, goldfire

Reviewed By: bgamari, goldfire

Subscribers: thomie

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

3 years agohaddock.mk: Use \{1,\} instead of \+
Ben Gamari [Mon, 16 Nov 2015 14:42:16 +0000 (16:42 +0200)] 
haddock.mk: Use \{1,\} instead of \+

This works around Mac OS X's sed, which doesn't support \+.
For the record,

    The regex implementation in Mac OS X 10.8 and later is based on a heavily
    modified subset of TRE, http://laurikari.net/tre/

3 years agoghc.mk: Make install_docs rule sh-compatible
Ben Gamari [Mon, 16 Nov 2015 14:56:12 +0000 (16:56 +0200)] 
ghc.mk: Make install_docs rule sh-compatible

3 years agoRtsFlags: Refactor some of the deeper switches
Ben Gamari [Mon, 16 Nov 2015 15:58:41 +0000 (16:58 +0100)] 
RtsFlags: Refactor some of the deeper switches

This was previously nearly impossible to read; now it's merely
difficult.

Ideally we would do a more thorough refactoring of the RTS command line
parser (#4243) but this is more effort than I have time for at the
moment.

Test Plan: Try using affected RTS flags

Reviewers: simonmar, austin

Subscribers: thomie

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

GHC Trac Issues: #4243

3 years agousers-guide: Limit column width
Ben Gamari [Mon, 16 Nov 2015 09:46:18 +0000 (10:46 +0100)] 
users-guide: Limit column width

This tends to help readability

3 years agoRtsFlags: Clean up stale CPP
Ben Gamari [Sun, 15 Nov 2015 09:55:15 +0000 (10:55 +0100)] 
RtsFlags: Clean up stale CPP

3 years agoApiAnnotations : ITopenExpQuote needs SourceText
Alan Zimmerman [Mon, 16 Nov 2015 19:10:39 +0000 (21:10 +0200)] 
ApiAnnotations : ITopenExpQuote needs SourceText

Summary:
In the lexer, ITopenExpQuote can be recognised for '[e|' or '[|'.

The token definition needs to capture the original SourceText, and pass
it through to ExpBr, which also needs a SrcText field.

It is easier to simply add a flag  to the token identifying the variant
and to generate a different AnnKeywordId based on this.

Test Plan: ./validate

Reviewers: mpickering, bgamari, austin

Reviewed By: bgamari

Subscribers: thomie

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

GHC Trac Issues: #10276

3 years agoApiAnnotations: Add SourceText for unicode tokens
Alan Zimmerman [Mon, 16 Nov 2015 17:43:34 +0000 (19:43 +0200)] 
ApiAnnotations: Add SourceText for unicode tokens

Summary:
At the moment there is no way to tell if a given token used its unicode
variant or its normal one, except to look at the length of the token.

This fails for the unicode '*'.

Expose the original source text for unicode variants so that API
Annotations can capture them specifically.

Test Plan: ./validate

Reviewers: mpickering, austin, bgamari

Reviewed By: bgamari

Subscribers: thomie

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

GHC Trac Issues: #11018

3 years agoImplement the Strict language extension
Adam Sandberg Eriksson [Sat, 14 Nov 2015 21:06:16 +0000 (22:06 +0100)] 
Implement the Strict language extension

Add a new language extension `-XStrict` which turns all bindings strict
as if the programmer had written a `!` before it. This also upgrades
ordinary Haskell to allow recursive and polymorphic strict bindings.

See the wiki[1] and the Note [Desugar Strict binds] in DsBinds for
specification and implementation details.

[1] https://ghc.haskell.org/trac/ghc/wiki/StrictPragma

Reviewers: austin, tibbe, simonpj, bgamari

Reviewed By: tibbe, bgamari

Subscribers: thomie

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

GHC Trac Issues: #8347

3 years agoFix bootstrapping with GHC 7.10.1
Ben Gamari [Sat, 14 Nov 2015 20:17:27 +0000 (21:17 +0100)] 
Fix bootstrapping with GHC 7.10.1

Relying on CallStack being in GLASGOW_HASKELL >= 710 breaks
bootstrappability with 7.10.1

7.10.2 added the CallStack mechanism, and GHC already relies on this
while being built. Unfortunately, it is enabled with "GLASGOW_HASKELL
>= 710", which also applies to GHC 7.10.1, which does not have
CallStack, and fails building the stage-1 compiler because the symbol
is not found.

This patch makes the CPP directive more strict, requiring **more than**
7.10 instead of **at least**.

Reviewers: jstolarek, austin, bgamari

Reviewed By: bgamari

Subscribers: thomie

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

GHC Trac Issues: #11085

3 years agoRip out __HADDOCK__ references
Ben Gamari [Thu, 12 Nov 2015 19:35:47 +0000 (20:35 +0100)] 
Rip out __HADDOCK__ references

As it turns out no one actually sets this macro anyways and haddock
now clearly has no trouble parsing this code.

Test Plan: Validate

Reviewers: hvr, goldfire, austin

Reviewed By: austin

Subscribers: duncan, thomie, hvr

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

3 years agoMake 'error' include the CCS call stack when profiled
Simon Marlow [Tue, 3 Nov 2015 14:06:09 +0000 (14:06 +0000)] 
Make 'error' include the CCS call stack when profiled

Summary:
The idea here is that this gives a more detailed stack trace in two
cases:

1. With `-prof` and `-fprof-auto`
2. In GHCi (see #11047)

Example, with an error inserted in nofib/shootout/binary-trees:

```
$ ./Main 3
Main: z
CallStack (from ImplicitParams):
  error, called at Main.hs:67:29 in main:Main
CallStack (from -prof):
  Main.check' (Main.hs:(67,1)-(68,82))
  Main.check (Main.hs:63:1-21)
  Main.stretch (Main.hs:32:35-57)
  Main.main.c (Main.hs:32:9-57)
  Main.main (Main.hs:(27,1)-(43,42))
  Main.CAF (<entire-module>)
```

This doesn't quite obsolete +RTS -xc, which also attempts to display
more information in the case when the error is in a CAF, but I'm
exploring other solutions to that.

Includes submodule updates.

Test Plan: validate

Reviewers: simonpj, ezyang, gridaphobe, bgamari, hvr, austin

Reviewed By: bgamari

Subscribers: thomie

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

3 years agoUpdate note for Parent to explain PatternSynonym.
Matthew Pickering [Fri, 13 Nov 2015 10:10:52 +0000 (10:10 +0000)] 
Update note for Parent to explain PatternSynonym.

3 years agoRemove imv_empty from ImportedModsVal
Joachim Breitner [Wed, 11 Nov 2015 11:58:40 +0000 (12:58 +0100)] 
Remove imv_empty from ImportedModsVal

it seems that this field is never used.

3 years agoTurn ImportedModsVal into a data type
Joachim Breitner [Wed, 11 Nov 2015 11:55:22 +0000 (12:55 +0100)] 
Turn ImportedModsVal into a data type

it was a 4-tuple before my patch, and a 6-tuple afterwards. Clearly a
record type is in order here!

3 years agoGive helpful advice when a fully qualified name is not in scope
Joachim Breitner [Tue, 10 Nov 2015 16:07:10 +0000 (17:07 +0100)] 
Give helpful advice when a fully qualified name is not in scope

This implements #11071. It needs to thread through a GlobalRdrEnv
corresponding to the export list of the module if its exports were not
restricted.

A refactoring of ImportedModsVal into a proper data type follows.

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

3 years agoAPIAnnotations:add Locations in hsSyn for layout
Alan Zimmerman [Fri, 13 Nov 2015 06:39:07 +0000 (08:39 +0200)] 
APIAnnotations:add Locations in hsSyn for layout

Summary:
At the moment ghc-exactprint, which uses the GHC API Annotations to
provide a framework for roundtripping Haskell source code with optional
AST edits, has to implement a horrible workaround to manage the points
where layout needs to be captured.

These are

    MatchGroup
    HsDo
    HsCmdDo
    HsLet
    LetStmt
    HsCmdLet
    GRHSs

To provide a more natural representation, the contents subject to layout
rules need to be wrapped in a SrcSpan.

This commit does this.

Trac ticket #10250

Test Plan: ./validate

Reviewers: hvr, goldfire, bgamari, austin, mpickering

Reviewed By: mpickering

Subscribers: thomie, mpickering

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

GHC Trac Issues: #10250

3 years agoIgnore comments in getOptions
Matthew Pickering [Thu, 12 Nov 2015 19:33:39 +0000 (20:33 +0100)] 
Ignore comments in getOptions

When Opt_KeepRawTokenStream is turned on then getOptions fails to find
the language pragmas which can cause unexpected parse errors when using
the GHC API. A simple solution is to make it skip over any comments in
the token
stream.

Test Plan: ./validate

Reviewers: austin, bgamari

Subscribers: alanz, thomie

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

GHC Trac Issues: #10942

3 years agoT10678: Fix bytes allocated statistic
Ben Gamari [Thu, 12 Nov 2015 16:06:08 +0000 (17:06 +0100)] 
T10678: Fix bytes allocated statistic

3 years agoNew magic function for applying realWorld#
Ben Gamari [Thu, 12 Nov 2015 13:52:11 +0000 (14:52 +0100)] 
New magic function for applying realWorld#

Test Plan: validate

Reviewers: goldfire, erikd, rwbarton, simonpj, austin, simonmar, hvr

Reviewed By: simonpj

Subscribers: simonmar, thomie

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

GHC Trac Issues: #10678

3 years agorules/haddock: Set __HADDOCK_VERSION__
Ben Gamari [Thu, 12 Nov 2015 10:15:34 +0000 (11:15 +0100)] 
rules/haddock: Set __HADDOCK_VERSION__

Test Plan: Validate

Reviewers: austin, thomie

Reviewed By: thomie

Subscribers: kgardas, thomie

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

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: https://phabricator.haskell.org/D1464

GHC Trac Issues: #11076

3 years agoImplement function-sections for Haskell code, #8405
Simon Brenner [Thu, 12 Nov 2015 10:10:54 +0000 (11:10 +0100)] 
Implement function-sections for Haskell code, #8405

This adds a flag -split-sections that does similar things to
-split-objs, but using sections in single object files instead of
relying on the Satanic Splitter and other abominations. This is very
similar to the GCC flags -ffunction-sections and -fdata-sections.

The --gc-sections linker flag, which allows unused sections to actually
be removed, is added to all link commands (if the linker supports it) so
that space savings from having base compiled with sections can be
realized.

Supported both in LLVM and the native code-gen, in theory for all
architectures, but really tested on x86 only.

In the GHC build, a new SplitSections variable enables -split-sections
for relevant parts of the build.

Test Plan: validate with both settings of SplitSections

Reviewers: dterei, Phyx, austin, simonmar, thomie, bgamari

Reviewed By: simonmar, thomie, bgamari

Subscribers: hsyl20, erikd, kgardas, thomie

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

GHC Trac Issues: #8405

3 years agofix RTS Linker on platforms without SHN_XINDEX support
Karel Gardas [Wed, 11 Nov 2015 21:21:50 +0000 (22:21 +0100)] 
fix RTS Linker on platforms without SHN_XINDEX support

Summary:
This patch fixes RTS Linker compilation issues on platforms
where SHN_XINDEX is not defined. Tested on OpenBSD. When SHN_XINDEX
is not defined, the code reverts to the old behavior, that means
behavior of the Linker before D1357 which added SHN_XINDEX based
functionality.

Reviewers: bgamari, austin, erikd

Subscribers: thomie

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

3 years agoRemove redundant test.
Matthew Pickering [Wed, 11 Nov 2015 15:44:56 +0000 (15:44 +0000)] 
Remove redundant test.

ExportSyntaxImport will fail if this test would have ever failed.

3 years agoRename bundled pattern synonym tests to reflect new terminology
Matthew Pickering [Wed, 11 Nov 2015 15:37:43 +0000 (15:37 +0000)] 
Rename bundled pattern synonym tests to reflect new terminology

This also fixes a bug which causes intermittent test failures due to
interdependent tests.

3 years agomkGadtDecl no longer in P monad
Jan Stolarek [Wed, 11 Nov 2015 12:28:01 +0000 (13:28 +0100)] 
mkGadtDecl no longer in P monad

Since `mkGadtDecl` does not use any of the functions specific to the `P`
monad we can extract it from that monad and reuse in other parts of the
compiler.

Test Plan: ./validate

Reviewers: austin, bgamari

Reviewed By: bgamari

Subscribers: thomie, mpickering

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

3 years agonativeGen.PPC: Fix shift arith. right > 31 bits
Peter Trommler [Wed, 11 Nov 2015 11:32:19 +0000 (12:32 +0100)] 
nativeGen.PPC: Fix shift arith. right > 31 bits

Arithmetic right shifts of more than 31 bits set all bits to
the sign bit on PowerPC. iThe assembler does not allow shift
amounts larger than 32 so do an arithemetic right shift of 31
bit instead.

Fixes #10870

Test Plan: validate (especially on powerpc)

Reviewers: austin, erikd, bgamari

Reviewed By: bgamari

Subscribers: thomie

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

GHC Trac Issues: #10870

3 years agoDetect invalid foreign imports in bytecode compiler
Sylvain HENRY [Wed, 11 Nov 2015 11:32:08 +0000 (12:32 +0100)] 
Detect invalid foreign imports in bytecode compiler

The bytecode compiler doesn't handle every foreign import calling
convention. Instead of crashing during the generation of the foreign
call, we display an error.

Fix lint warnings

Test Plan: prog014 ghci test added

Reviewers: austin, hvr, bgamari

Reviewed By: bgamari

Subscribers: thomie

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

GHC Trac Issues: #10462

3 years agoPut kind variables before type variables when specializing
Bartosz Nitka [Wed, 11 Nov 2015 11:31:55 +0000 (12:31 +0100)] 
Put kind variables before type variables when specializing

When you reverse the order of uniques you get the core lint
error from the testcase. The testcase is copied from
tests/simplCore/should_compile/T10689a.hs.

The problem is that we would put type and kind variables ordered by
unique order, which happened to be the right order for this testcase to
pass under normal conditions.

I think it's enough to sort them with `sortQuantVars`, but I'm not
really sure if some more sophisticated dependency analysis isn't needed.

Test Plan: added a new testcase

Reviewers: simonpj, goldfire, simonmar, austin, bgamari

Reviewed By: bgamari

Subscribers: thomie

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

3 years agoImprove documentation of Data.List.lines:
Eric Mertens [Wed, 11 Nov 2015 11:31:45 +0000 (12:31 +0100)] 
Improve documentation of Data.List.lines:

- Document behavior on some inputs.
- Add some examples.

Reviewers: bgamari, osa1, hvr, dolio, #core_libraries_committee,
nomeata, austin

Reviewed By: bgamari, dolio, #core_libraries_committee, nomeata, austin

Subscribers: dolio, glguy, nomeata, thomie

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

3 years agoSystools: read ELF section without calling readelf
Sylvain HENRY [Wed, 11 Nov 2015 11:31:31 +0000 (12:31 +0100)] 
Systools: read ELF section without calling readelf

This patch tackles two issues:

1) GHC stores a "link info" string into a ELF section. Initially a
section with type "note" was used but GHC didn't follow the ELF
specification which specifies a record-based format for these sections.
With D1375 we switched to a "progbits" section type for which there
isn't any format constraint. This is an issue for D1242 which use GCC's
--gc-sections which collects "unused" sections, such as our section
containing link info... In this patch, we fall back to a section with
type "note" but we respect the specified format.

2) Reading back the ELF section was done by parsing the result of a
call to "readelf". Calling readelf is problematic because the program
may not be available or it may be renamed on some platforms (see
D1326). Moreover we have no garanty that its output layout will stay
the same in future releases of readelf. Finally we would need to fix
the parsing to support  "note" sections because of 1. Instead, this
patch proposes to use Data.Binary.Get to directly read the "link info"
note into its section. ELF has a specification, hence it should work on
every conforming platform.

This patch "reverts" D1375, hence it supersedes D1432. It makes D1326
not necessary anymore.

Test Plan:
- recomp011 should pass (test that relinking is avoided when both "link
info" match)
- we should add a test for ELF objects with more than 0xff00 sections
=> added test "recomp015"
- we should check that GAS generates 32-bit words with .int on every
supported platform using ELF (or find a place where this is
documented). harbomaster and I (@hsyl20) only tested on x86-64. On
platforms where it is not true, it should make recomp011 fail. =>
tested to work on Linux/amd64, Solaris/i386 and OpenBSD/amd64

Reviewers: olsner, ony, thomie, kgardas, austin, bgamari

Reviewed By: thomie, bgamari

Subscribers: kgardas, rwbarton, thomie

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

GHC Trac Issues: #10974, #11022

3 years agoRemove fun_infix from Funbind, as it is now in Match
Alan Zimmerman [Wed, 11 Nov 2015 11:03:18 +0000 (12:03 +0100)] 
Remove fun_infix from Funbind, as it is now in Match

One of the changes D538 introduced is to add `m_fun_id_infix` to `Match`

```lang=hs
data Match id body
  = Match {
        m_fun_id_infix :: (Maybe (Located id,Bool)),
          -- fun_id and fun_infix for functions with multiple equations
          -- only present for a RdrName. See note [fun_id in Match]
        m_pats :: [LPat id], -- The patterns
        m_type :: (Maybe (LHsType id)),
                                 -- A type signature for the result of the match
                                 -- Nothing after typechecking
        m_grhss :: (GRHSs id body)
  } deriving (Typeable)
```

This was done to track the individual locations and fixity of the
`fun_id` for each of the defining equations for a function when there
are more than one.

For example, the function `(&&&)` is defined with some prefix and some
infix equations below.

```lang=hs
    (&&&  ) [] [] =  []
    xs    &&&   [] =  xs
    (  &&&  ) [] ys =  ys
```

This means that the fun_infix is now superfluous in the `FunBind`. This
has not been removed as a potentially risky change just before 7.10 RC2,
and so must be done after.

This ticket captures that task, which includes processing these fields
through the renamer and beyond.

Ticket #9988 introduced these fields into `Match` through renaming, this
ticket it to continue through type checking and then remove it from
`FunBind` completely.

The split happened so that #9988 could land in 7.10

Trac ticket : #10061

Test Plan: ./validate

Reviewers: goldfire, austin, simonpj, bgamari

Reviewed By: bgamari

Subscribers: simonpj, thomie, mpickering

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

GHC Trac Issues: #10061

3 years agoRemove unused field in ConDecl
Jan Stolarek [Wed, 11 Nov 2015 10:34:48 +0000 (11:34 +0100)] 
Remove unused field in ConDecl

We no longer parse old-style GADT syntax but there was some left-over
code for emitting deprecation warnings.

Updates haddock submodule.

Test Plan: ./validate

Reviewers: austin, bgamari

Reviewed By: bgamari

Subscribers: thomie

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

3 years agoOPTIONS_GHC compiler flags may contain spaces (#4931)
Thomas Miedema [Wed, 11 Nov 2015 10:05:16 +0000 (11:05 +0100)] 
OPTIONS_GHC compiler flags may contain spaces (#4931)

When a .hsc contains `#define FOO "bar baz"`, hsc2hs emits:

    {-# OPTIONS_GHC -optc-DFOO="bar baz" #-}

Make sure GHC can compile this, by tweaking `HeaderInfo.getOptions` a
bit.

Test Plan: driver/T4931

Reviewers: austin, bgamari

Reviewed By: bgamari

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

GHC Trac Issues: #4931

3 years agoFix link in documentation
Siddhanathan Shanmugam [Wed, 11 Nov 2015 09:55:33 +0000 (10:55 +0100)] 
Fix link in documentation

Reviewers: austin, bgamari

Reviewed By: bgamari

Subscribers: mpickering, thomie

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

3 years agoAssociate pattern synonyms with types in module exports
Matthew Pickering [Wed, 11 Nov 2015 09:49:44 +0000 (10:49 +0100)] 
Associate pattern synonyms with types in module exports

This patch implements #10653.

It adds the ability to bundle pattern synonyms with type constructors in
export lists so that users can treat pattern synonyms more like data
constructors.

Updates haddock submodule.

Test Plan: ./validate

Reviewers: goldfire, austin, bgamari

Reviewed By: bgamari

Subscribers: simonpj, gridaphobe, thomie

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

GHC Trac Issues: #10653

3 years agoAbstract TFs can have injectivity information
Jan Stolarek [Mon, 9 Nov 2015 14:44:47 +0000 (15:44 +0100)] 
Abstract TFs can have injectivity information

Summary:
For abstract type families we incorrectly rejected their injectivity
annotation.  Fixes #11007.

Test Plan: #6018

Reviewers: goldfire, austin, bgamari

Subscribers: thomie

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

GHC Trac Issues: #11007

3 years agoFix sporadic failing ghci/Linker/Dyn tests
Tamar Christina [Sun, 8 Nov 2015 13:21:30 +0000 (14:21 +0100)] 
Fix sporadic failing ghci/Linker/Dyn tests

Summary:
Multiple tests use the same source C file.
GHC was previously writing the resulting .o files
in the same folder as the source. When these tests
are run in parallel, sometimes one of the calls would
use the partial .o file and throw an error.

The .o files are moved into different folders with this
change.

Test Plan: make test -C testsuite/tests/ghci/linking/dyn

Reviewers: thomie, austin, bgamari

Reviewed By: bgamari

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

3 years agoAdd OpenBSD specific RTS symbols
Karel Gardas [Sat, 7 Nov 2015 23:21:36 +0000 (00:21 +0100)] 
Add OpenBSD specific RTS symbols

This patch adds OpenBSD specific RTS symbols.  The patch is taken from
the OpenBSD ports tree, provided by the OpenBSD community.

Reviewers: austin, bgamari

Reviewed By: bgamari

Subscribers: thomie

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

3 years agoQuote file paths in linker scripts
Ben Gamari [Sat, 7 Nov 2015 23:21:19 +0000 (00:21 +0100)] 
Quote file paths in linker scripts

Reviewers: bgamari, austin

Reviewed By: austin

Subscribers: thomie

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

GHC Trac Issues: #11063

3 years agoAdd pprSTrace for debugging with call stacks
Bartosz Nitka [Sat, 7 Nov 2015 23:21:11 +0000 (00:21 +0100)] 
Add pprSTrace for debugging with call stacks

I've spent quite a bit of time giving unique labels to my `pprTrace`
calls and then trying to intuit where the function is called from.
Thanks to the new implicit parameter CallStack functionality I don't
have to do that anymore.

Test Plan: harbormaster

Reviewers: austin, simonmar, bgamari

Reviewed By: simonmar, bgamari

Subscribers: thomie

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

3 years agoReplace freeVarsOf scrut with scrut_fvs to avoid repetition
Bartosz Nitka [Sat, 7 Nov 2015 23:20:34 +0000 (00:20 +0100)] 
Replace freeVarsOf scrut with scrut_fvs to avoid repetition

Test Plan: harbormaster

Reviewers: bgamari, simonmar, austin

Reviewed By: austin

Subscribers: thomie

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

3 years agominor: use unless instead of (when . not)
Ömer Sinan Ağacan [Sat, 7 Nov 2015 23:20:26 +0000 (00:20 +0100)] 
minor: use unless instead of (when . not)

Reviewers: bgamari, austin

Reviewed By: austin

Subscribers: thomie

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

3 years agoParser: allow empty multi-line deprecation warnings
Thomas Miedema [Sat, 7 Nov 2015 23:20:15 +0000 (00:20 +0100)] 
Parser: allow empty multi-line deprecation warnings

This should work,

    {-# DEPRECATED someFunction [] #-}

Test Plan: parser/should_compile/T3303

Reviewers: bgamari, austin

Reviewed By: austin

Subscribers: mpickering

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

GHC Trac Issues: #11044

3 years agoBuild system: use stage0 to build dll-split
Thomas Miedema [Sat, 7 Nov 2015 23:19:55 +0000 (00:19 +0100)] 
Build system: use stage0 to build dll-split

When cross-compiling ghc itself, this prevents:

  "dll-split: cannot execute binary file: Exec format error"

Test Plan:
   * ./configure --target=arm-linux-gnueabihf
   * DYNAMIC_GHC_PROGRAMS=YES
   * Stage1Only=NO

Reviewers: rwbarton, bgamari, austin

Reviewed By: austin

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

3 years agoRemove PatSynBuilderId
Matthew Pickering [Sat, 7 Nov 2015 23:46:03 +0000 (23:46 +0000)] 
Remove PatSynBuilderId

Summary:
It was only used to pass field labels between the typechecker and
desugarer. Instead we add an extra field the RecordCon to carry this
information.

Reviewers: austin, goldfire, bgamari

Reviewed By: bgamari

Subscribers: thomie

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

GHC Trac Issues: #11057

3 years agofix #10734 by adding braces to pretty-printing of let inside do
John Leo [Sat, 7 Nov 2015 22:28:37 +0000 (17:28 -0500)] 
fix #10734 by adding braces to pretty-printing of let inside do

Test Plan: validate

Reviewers: bgamari, austin, goldfire

Reviewed By: goldfire

Subscribers: thomie

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

GHC Trac Issues: #10734

3 years agoAllow the GHCi Linker to resolve related dependencies when loading DLLs
Tamar Christina [Sat, 7 Nov 2015 08:51:43 +0000 (03:51 -0500)] 
Allow the GHCi Linker to resolve related dependencies when loading DLLs

Summary:
GHCi does not correctly tell the Windows Loader how to handle dependencies to DLL's
that are not on the standard Windows load path:

1. The directory from which the application loaded.
2. The current directory.
3. The system directory. Use the GetSystemDirectory function to get the path of this directory.
4. The 16-bit system directory. There is no function that obtains the path of this directory,
   but it is searched.
5. The Windows directory. Use the GetWindowsDirectory function to get the path of this directory.
6. The directories that are listed in the PATH environment variable.
   Note that this does not include the per-application path specified by the
   AppPaths registry key. The App Paths key is not used when computing the DLL search path.

So what this means is given two DLLs `A` and `B` and `B` depending on `A`.
If we put both DLLs into a new folder bin and then call GHC with:

`ghc -L$(PWD)/bin -lB`

the loading will fail as the Windows loader will try to load the dependency of `B` and fail
since it cannot find `A`.

*IMPORTANT* this patch drops XP Support.
The  APIs being used were natively added to Windows 8+ and backported to Windows 7 and Vista
via a mandatory security patch (in 2011). This means that there is a chance that KB2533623 has
not been installed on certain machines. For those machines I display a warning and
temporarily expand the `PATH` to allow it to load.

This patch will make sure that paths provided by the user with `-L` *and* the folder in which a
DLL is found are added to the search path. It does so using one of two methods depending upon how
new of a Windows version we are running on:

- If the APIs are available it will use `addDllDirectory` and `removeDllDirectory`.
   The order of which these directories are searched is nondeterministic.
- If the APIs are not available it means that we're running on a pretty old unpatched machine.
  But if it's being used in an environment with no internet access it may be the case.
  So if the APIs are not available we temporarily extend the `PATH` with the directories.
  A warning is also displayed to the user informing them that the linking may fail,
  and if it does, install the needed patch. The `PATH` variable has limitations.

Test Plan:
./validate

Added two new test T10955 and T10955dyn

Reviewers: erikd, bgamari, thomie, hvr, austin

Reviewed By: erikd, thomie

Subscribers: #ghc_windows_task_force

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

GHC Trac Issues: #10955

3 years agoMake GHCi & TH work when the compiler is built with -prof
Simon Marlow [Sat, 7 Nov 2015 09:39:05 +0000 (09:39 +0000)] 
Make GHCi & TH work when the compiler is built with -prof

Summary:
Amazingly, there were zero changes to the byte code generator and very
few changes to the interpreter - mainly because we've used good
abstractions that hide the differences between profiling and
non-profiling.  So that bit was pleasantly straightforward, but there
were a pile of other wibbles to get the whole test suite through.

Note that a compiler built with -prof is now like one built with
-dynamic, in that to use TH you have to build the code the same way.
For dynamic, we automatically enable -dynamic-too when TH is required,
but we don't have anything equivalent for profiling, so you have to
explicitly use -prof when building code that uses TH with a profiled
compiler.  For this reason Cabal won't work with TH.  We don't expect
to ship a profiled compiler, so I think that's OK.

Test Plan: validate with GhcProfiled=YES in validate.mk

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

Reviewed By: ezyang

Subscribers: thomie

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

GHC Trac Issues: #4837, #545

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 agoLinker: #ifdef cleanup
Erik de Castro Lopo [Tue, 3 Nov 2015 06:10:12 +0000 (17:10 +1100)] 
Linker: #ifdef cleanup

Test Plan:
 - Run tests on x86_64/linux and powerpc/linux
 - Cross compile rts/Linker.c with the i686-w64-mingw32-gcc and
   x86_64-w64-mingw32-gcc Linux to Windows cross-compilers.

Reviewers: bgamari, austin, hvr, Phyx

Subscribers: thomie

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

3 years agoUse full name of LLVM program in error message
Erik de Castro Lopo [Mon, 2 Nov 2015 00:45:14 +0000 (11:45 +1100)] 
Use full name of LLVM program in error message

Previously something like `/usr/bin/opt-3.7` was being shortened to
`opt-3` using the `takeBaseName` function. This shortened form is
actually not correct. We should use `takeFileName` instead.

Reviewers: bgamari, austin, hvr

Subscribers: thomie

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

3 years agoTweak settings for LLVM tests
Erik de Castro Lopo [Mon, 2 Nov 2015 07:14:08 +0000 (18:14 +1100)] 
Tweak settings for LLVM tests

* The LLVM backend does not currently work on PowerPC so disable it.
* Only run LLVM tests if the needed LLVM tools have been detected at
  configure time.

Test Plan: Run LLVM tests on x86_64 and powerpc

Reviewers: austin, bgamari, hvr, thomie

Subscribers: thomie

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

3 years agoCabal-level sanity check to enforce Cabal flag-invariant
Herbert Valerio Riedel [Tue, 3 Nov 2015 22:18:30 +0000 (16:18 -0600)] 
Cabal-level sanity check to enforce Cabal flag-invariant

This helps catch cabal-flag misconfiguration early on during `cabal
configure`, rather than much later in the build-process during
compilation.

Reviewed By: austin

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

3 years agoBuild system: renable -Wall on validate (base)
Thomas Miedema [Tue, 3 Nov 2015 22:17:35 +0000 (16:17 -0600)] 
Build system: renable -Wall on validate (base)

Problem: 'SRC_HC_OPTS += -Wall' in 'mk/warnings.mk' was getting
overwritten by 'SRC_HC_OPTS = ...' in 'mk/flavours/*.mk'.

It didn't affect the compiler or most other libraries, because most
.cabal files define 'ghc-options: -Wall'.

Bug introduced in commit
2c24fd707f8650205bb574ffac5f376239af3723, when moving validate settings
from 'mk/validate-settings.mk' to 'mk/flavours/validate.mk'.

Reviewed By: austin

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

3 years agorts/Hash: Constify HashTable* in lookupHashTable
Ben Gamari [Tue, 3 Nov 2015 22:16:27 +0000 (16:16 -0600)] 
rts/Hash: Constify HashTable* in lookupHashTable

This seems like an obvious place to apply `const`

Reviewed By: simonmar, austin

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

3 years agoAdd `MonadPlus IO` and `Alternative IO` instances
Herbert Valerio Riedel [Tue, 3 Nov 2015 22:12:18 +0000 (16:12 -0600)] 
Add `MonadPlus IO` and `Alternative IO` instances

This requires adding a new primitive `mplusIO` to `GHC.IO`

Update transformers submodule to accomodate extant orphan instances.

Reviewed By: austin, bgamari

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

GHC Trac Issues: #10755

3 years agobase: Add new Control.Monad.Fail module (re #10751)
Herbert Valerio Riedel [Tue, 3 Nov 2015 21:40:52 +0000 (22:40 +0100)] 
base: Add new Control.Monad.Fail module (re #10751)

This is based on David's initial patch augmented by more extensive
Haddock comments.

This has been broken out of D1248 to reduce its size
by splitting the patch into smaller logical pieces.

On its own, this new module does nothing interesting yet.
Later patches will add support for a different desugaring of
`do`-blocks, at which point the new `MonadFail` class will
become more useful.

Reviewed By: ekmett, austin

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

3 years agobase: Add changelog entry for 4.8.2.0
Ben Gamari [Mon, 2 Nov 2015 16:14:52 +0000 (17:14 +0100)] 
base: Add changelog entry for 4.8.2.0

3 years agobase: GHC.RTS.Flags symbols really were introduced in 4.8.2
Ben Gamari [Mon, 2 Nov 2015 16:13:30 +0000 (17:13 +0100)] 
base: GHC.RTS.Flags symbols really were introduced in 4.8.2

3 years agobase: Update `@since 4.8.2` annotations (re #11026)
Herbert Valerio Riedel [Mon, 2 Nov 2015 14:39:28 +0000 (15:39 +0100)] 
base: Update `@since 4.8.2` annotations (re #11026)

This missed to perform in f8ba4b55cc3a061458f5cfabf17de96128defbbb

3 years agoUpdate filepath submodule for proper version
Herbert Valerio Riedel [Mon, 2 Nov 2015 12:13:28 +0000 (13:13 +0100)] 
Update filepath submodule for proper version

This pulls in a minor version bump to v1.4.1, this way
GHC HEAD nightly builds report a proper version number.

3 years agoget rid of Elf32/Elf64_Section as this is a non-portable Linux-ism.
Karel Gardas [Sun, 1 Nov 2015 21:10:15 +0000 (22:10 +0100)] 
get rid of Elf32/Elf64_Section as this is a non-portable Linux-ism.

Summary:
D1357 introduces usage of Elf32_Section/Elf64_Section in RTS linker
code. Unfortunately this is a non-portable Linux-ism and such types are not
defined anywhere except the Linux-land probably. I've checked Solaris 11.2,
Solaris 11.3, FreeBSD 10.1, NetBSD 6.1.5 and OpenBSD current. The fix
is easy to use `unsigned short' as this is also an underlying type
of those Elf*_Section defines in Linux.

Reviewers: olsner, austin, bgamari, erikd

Subscribers: thomie

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

3 years agoUpdate process submodule to process-1.4 release
Herbert Valerio Riedel [Mon, 2 Nov 2015 06:41:16 +0000 (07:41 +0100)] 
Update process submodule to process-1.4 release

We already used a process-1.4 snapshot with non-bumped version,
so this commit is mostly a `.cabal` file upper-bound relaxation change.

3 years agorts: Produce stack trace on fatal error
Ben Gamari [Sun, 1 Nov 2015 21:53:17 +0000 (22:53 +0100)] 
rts: Produce stack trace on fatal error

Test Plan: Validate

Reviewers: austin, simonmar

Reviewed By: simonmar

Subscribers: simonmar, thomie, scpmw

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

3 years agoEventLog: Loop fwrite if necessary during flush
Ben Gamari [Sun, 1 Nov 2015 18:06:09 +0000 (19:06 +0100)] 
EventLog: Loop fwrite if necessary during flush

Previously the eventlog flush code would fail if `fwrite` wrote less
than the requested amount. Like all Unix stream I/O operations, however,
`fwrite` isn't guaranteed to write the entire buffer. Here we loop as
long as `fwrite` succeeds in writing anything.

Fixes #11041.

Test Plan: Validate with eventlog

Reviewers: austin, simonmar

Reviewed By: simonmar

Subscribers: thomie

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

GHC Trac Issues: #11041

3 years agoChange sphinx for documentation building on windows to the python3 version
Tamar Christina [Sun, 1 Nov 2015 18:26:16 +0000 (19:26 +0100)] 
Change sphinx for documentation building on windows to the python3 version

Summary:
Python 3 seems to have fixed the long standing codepage issue with
python on Windows. To be able to reliably build the documentation
we should use the Python 3 version of Sphinx.

See `https://docs.python.org/dev/whatsnew/3.3.html#codecs` and
`https://bugs.python.org/issue13216`. Sphinx also supports Python 3.

Oddly enough `python3-sphinx` is registered as `sphinx-build.exe`
instead of `sphinx-build3.exe`, so the changes in `configure.ac` can
be reverted.

install with `pacman -S mingw-w64-$(uname -m)-python3-sphinx`

Test Plan: ./validate

Reviewers: austin, thomie, bgamari

Reviewed By: bgamari

Subscribers: erikd

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

GHC Trac Issues: #11021

3 years agoMinor simplification in unariser pass:
Ömer Sinan Ağacan [Sun, 1 Nov 2015 16:14:58 +0000 (17:14 +0100)] 
Minor simplification in unariser pass:

We don't need to update StgCase's AltType, because it's already set
correctly in `CoreToStg.mkStgAltType`, so we can just remove extra
argument passing and return values.

(I think this is a useful refactoring because it makes it clear that we
don't need to update AltTypes)

Reviewers: austin, bgamari, simonpj

Reviewed By: bgamari, simonpj

Subscribers: simonpj, thomie

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

3 years agoLibdw: Fix symbol naming
Ben Gamari [Sun, 1 Nov 2015 11:33:08 +0000 (12:33 +0100)] 
Libdw: Fix symbol naming

RTS convention is to use camel-case.

3 years agoDwarf.Constants: Introduce Haddock sections
Ben Gamari [Fri, 30 Oct 2015 20:22:17 +0000 (21:22 +0100)] 
Dwarf.Constants: Introduce Haddock sections

3 years agoLibdw: Remove special treatment for stg_stop_thread
Ben Gamari [Sat, 5 Sep 2015 11:51:27 +0000 (13:51 +0200)] 
Libdw: Remove special treatment for stg_stop_thread

This is no longer necessary since this symbol can be unwound through
with its DWARF information.

3 years agoStgStartup: Setup unwinding for stg_stop_thread
Ben Gamari [Sun, 30 Aug 2015 12:11:56 +0000 (14:11 +0200)] 
StgStartup: Setup unwinding for stg_stop_thread

This is a bit ugly as we need to assume the structure of the C stack as
left by StgRun. Nevertheless, it allows us to unwind all the way back to
`_start` on my machine.

```
Stack trace:
    set_initial_registers (rts/Libdw.c:272.0)
    dwfl_thread_getframes

    dwfl_getthreads
    dwfl_getthread_frames
    libdw_get_backtrace (rts/Libdw.c:243.0)
    base_GHCziExecutionStack_getStackTrace1_info
(libraries/base/GHC/ExecutionStack.hs:43.1)
    base_GHCziExecutionStack_showStackTrace1_info
(libraries/base/GHC/ExecutionStack.hs:47.1)
    base_GHCziBase_bindIO1_info (libraries/base/GHC/Base.hs:1085.1)
    base_GHCziBase_thenIO1_info (libraries/base/GHC/Base.hs:1088.1)
    base_GHCziBase_thenIO1_info (libraries/base/GHC/Base.hs:1088.1)
    base_GHCziBase_thenIO1_info (libraries/base/GHC/Base.hs:1088.1)
    base_GHCziBase_thenIO1_info (libraries/base/GHC/Base.hs:1088.1)
    base_GHCziBase_thenIO1_info (libraries/base/GHC/Base.hs:1088.1)
    stg_catch_frame_info (rts/Exception.cmm:370.1)
    stg_stop_thread_info (rts/StgStartup.cmm:42.1)
    scheduleWaitThread (rts/Schedule.c:465.0)
    hs_main (rts/RtsMain.c:65.0)

    __libc_start_main (/tmp/buildd/glibc-2.19/csu/libc-start.c:321.0)
    _start
```

3 years agocmm: Expose machine's stack and return address register
Ben Gamari [Wed, 26 Aug 2015 22:36:59 +0000 (00:36 +0200)] 
cmm: Expose machine's stack and return address register

We will need to use these to setup proper unwinding information for the
stg_stop_thread closure. This pokes a hole in the STG abstraction,
exposing the machine's stack pointer register so that we can accomplish
this. We also expose a dummy return address register, which corresponds
to the register used to hold the DWARF return address.

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

3 years agoDwarf.Types: Fix comment style
Ben Gamari [Fri, 30 Oct 2015 20:02:07 +0000 (21:02 +0100)] 
Dwarf.Types: Fix comment style

3 years agoDwarf: Preserve stack pointer register
Ben Gamari [Fri, 30 Oct 2015 19:49:35 +0000 (20:49 +0100)] 
Dwarf: Preserve stack pointer register

Here we add a `same_value $sp` instruction to our default unwinding
rules to ensure that the implicit `$sp = CFA` rule (which `libdw`
appears to exhibit on x86_64) doesn't overwrite it (necessary since we
don't use $sp to track our call stack).

See Phab Diff D1189 for details on how we arrived at this resolution.

Reviewers: scpmw, austin, simonmar

Reviewed By: austin, simonmar

Subscribers: thomie, simonmar

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

3 years agoUpdate Cabal submodule
Herbert Valerio Riedel [Sun, 1 Nov 2015 13:03:44 +0000 (14:03 +0100)] 
Update Cabal submodule

This allows us to remove 4 newly added language pragmas from the T4437
test-case as they were recently added to Cabal 1.23

3 years agoDynFlags: -freverse-errors should be defFlag
Ben Gamari [Sun, 1 Nov 2015 11:28:10 +0000 (12:28 +0100)] 
DynFlags: -freverse-errors should be defFlag

This flag works under both GHC and GHCi, as pointed out on D1367. Thanks
to @thomie for pointing this out.

3 years agokeepCAFsForGHCi was broken
Simon Marlow [Sun, 1 Nov 2015 11:25:39 +0000 (12:25 +0100)] 
keepCAFsForGHCi was broken

Buggy Makefile code meant it was always included, instead of being
included only for the dyn ways.

Test Plan: validate

Reviewers: hvr, austin, bgamari

Reviewed By: bgamari

Subscribers: thomie

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

3 years agoApiAnnotations: BooleanFormula is not properly Located
Alan Zimmerman [Sun, 1 Nov 2015 10:13:21 +0000 (11:13 +0100)] 
ApiAnnotations: BooleanFormula is not properly Located

At the moment BooleanFormula is defined as

  data BooleanFormula a = Var a | And [BooleanFormula a]
                        | Or [BooleanFormula a]
       deriving (Eq, Data, Typeable, Functor, Foldable, Traversable)

An API Annotation can only be attached to an item of the form Located a.

Replace this with a properly Located version, and attach the appropriate
API Annotations to it

Updates haddock submodule.

Test Plan: ./validate

Reviewers: austin, bgamari

Reviewed By: bgamari

Subscribers: thomie, mpickering

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

GHC Trac Issues: #11017

3 years agoBump ghc-prim version to 0.5.0.0 (closes #11043)
Herbert Valerio Riedel [Sun, 1 Nov 2015 11:38:42 +0000 (12:38 +0100)] 
Bump ghc-prim version to 0.5.0.0 (closes #11043)

This also needs to update the primitive/vector submodules in order to
relax upper bounds on ghc-prim.

Like in f8ba4b55cc3a061458f5cfabf17de96128defbbb, a mass-rewrite in testsuite/ via

  sed -i s,ghc-prim-0.4.0.0,ghc-prim-0.5.0.0,g $(git grep -Fl 'ghc-prim-0.4.0.0')

was performed.