ghc.git
3 years agoRemove dead function patSynTyDetails
Simon Peyton Jones [Fri, 16 Oct 2015 11:08:35 +0000 (12:08 +0100)] 
Remove dead function patSynTyDetails

And that allows us to remove the nasty import of HsBinds,
which has no business in this module.

3 years agorts/Linker.c : Fix armhf build (#10977)
Erik de Castro Lopo [Fri, 16 Oct 2015 06:00:43 +0000 (17:00 +1100)] 
rts/Linker.c : Fix armhf build (#10977)

Test Plan: Validate on x86_64, PowerPC and Arm

Reviewers: simonmar, austin, bgamari

Subscribers: thomie

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

GHC Trac Issues: #10977

3 years agoFix windows build after D975
Tamar Christina [Fri, 16 Oct 2015 07:46:59 +0000 (09:46 +0200)] 
Fix windows build after D975

Add a missing #ifdef

Reviewed By: simonmar

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

3 years agoELF/x86_64: map object file sections separately into the low 2GB
Simon Marlow [Thu, 15 Oct 2015 15:17:06 +0000 (16:17 +0100)] 
ELF/x86_64: map object file sections separately into the low 2GB

On 64-bit ELF we need to link object files into the low 2GB due to the
small memory model.  Previously we would map the entire object file
using MAP_32BIT, but the object file can consist of 75% or more
symbols, which only need to be present during linking, so this is
wasteful.  In our particular application, we're already running out of
space here.

This patch changes the way we load object files on ELF platforms so
that the object is first mapped above the 2GB boundary, parsed, and
then the important sections are re-mapped into the low 2GB area.

Test Plan:
validate
(also needs testing on OS X & Windows, preferably 32 & 64 bit)

Reviewers: Phyx, trommler, bgamari, austin

Subscribers: hsyl20, thomie, bgamari

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

3 years agoMinor stylistic update.
Edward Z. Yang [Thu, 15 Oct 2015 04:07:03 +0000 (21:07 -0700)] 
Minor stylistic update.

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
3 years agoRename PACKAGE_KEY and LIB_NAME in build system.
Edward Z. Yang [Sun, 11 Oct 2015 20:41:20 +0000 (13:41 -0700)] 
Rename PACKAGE_KEY and LIB_NAME in build system.

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
3 years agoRename package key to unit ID, and installed package ID to component ID.
Edward Z. Yang [Sun, 11 Oct 2015 18:03:10 +0000 (11:03 -0700)] 
Rename package key to unit ID, and installed package ID to component ID.

Comes with Haddock submodule update.

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
3 years agoUpdate Cabal to HEAD, IPID renamed to Component ID.
Edward Z. Yang [Tue, 25 Aug 2015 18:24:28 +0000 (11:24 -0700)] 
Update Cabal to HEAD, IPID renamed to Component ID.

This commit contains a Cabal submodule update which unifies installed
package IDs and package keys under a single notion, a Component ID.
We update GHC to keep follow this unification.  However, this commit
does NOT rename installed package ID to component ID and package key to
unit ID; the plan is to do that in a companion commit.

    - Compiler info now has "Requires unified installed package IDs"

    - 'exposed' is now expected to contain unit keys, not IPIDs.

    - Shadowing is no more.  We now just have a very simple strategy
      to deal with duplicate unit keys in combined package databases:
      if their ABIs are the same, use the latest one; otherwise error.
      Package databases maintain the invariant that there can only
      be one entry of a unit ID.

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

Reviewers: simonpj, austin, bgamari, hvr, goldfire

Subscribers: thomie

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

GHC Trac Issues: #10714

3 years agoUser should use -package-id flag if value in question is IPID.
Edward Z. Yang [Sun, 11 Oct 2015 18:21:31 +0000 (11:21 -0700)] 
User should use -package-id flag if value in question is IPID.

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
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: https://phabricator.haskell.org/D1323

GHC Trac Issues: #10375

3 years agotravis: use LLVM 3.7
Austin Seipp [Wed, 14 Oct 2015 00:14:01 +0000 (19:14 -0500)] 
travis: use LLVM 3.7

Signed-off-by: Austin Seipp <austin@well-typed.com>
3 years agoSwitch to LLVM version 3.7
Erik de Castro Lopo [Fri, 9 Oct 2015 23:54:24 +0000 (10:54 +1100)] 
Switch to LLVM version 3.7

Before this commit, GHC only supported LLVM 3.6. Now it only supports
LLVM 3.7 which was released in August 2015. LLVM version 3.6 and earlier
do not work on AArch64/Arm64, but 3.7 does.

Also:
* Add CC_Ghc constructor to LlvmCallConvention.
* Replace `maxSupportLlvmVersion`/`minSupportLlvmVersion` with
  a single `supportedLlvmVersion` variable.
* Get `supportedLlvmVersion` from version specified in configure.ac.
* Drop llvmVersion field from DynFlags (no longer needed because only
  one version is supported).

Test Plan: Validate on x86_64 and arm

Reviewers: bgamari, austin

Subscribers: thomie

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

GHC Trac Issues: #10953

3 years agoAllow arr ∧ (first ∨ (***)) as minimal definition of Arrow instance
M Farkas-Dyck [Mon, 30 Mar 2015 03:57:46 +0000 (22:57 -0500)] 
Allow arr ∧ (first ∨ (***)) as minimal definition of Arrow instance

See #10216.

Signed-off-by: Austin Seipp <austin@well-typed.com>
3 years agobase: Add forkOSWithUnmask
Joey Adams [Sat, 22 Jun 2013 03:19:34 +0000 (23:19 -0400)] 
base: Add forkOSWithUnmask

Fixes #8010, according to the specified libraries proposal. [1]

Also, some minor wordsmithing.

  [1] http://thread.gmane.org/gmane.comp.lang.haskell.libraries/22709

Signed-off-by: Austin Seipp <austin@well-typed.com>
3 years agodocs: overhaul Derive{Functor,Foldable,Traversable} notes
RyanGlScott [Tue, 13 Oct 2015 05:58:13 +0000 (00:58 -0500)] 
docs: overhaul Derive{Functor,Foldable,Traversable} notes

The previous users' guide documentation was too implementation-oriented. This
attempts to make it more accessible to those who aren't familiar with how
`-XDeriveFunctor` and friends work (and more importantly, what will not work
when using them).

Fixes #10831.

Reviewed By: austin

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

GHC Trac Issues: #10831

3 years agoFix incorrect import warnings when methods with identical names are imported
Ömer Sinan Ağacan [Tue, 13 Oct 2015 05:47:28 +0000 (00:47 -0500)] 
Fix incorrect import warnings when methods with identical names are imported

Currently, GHC's warning generation code is assuming that a name (`RdrName`)
can be imported at most once. This is a correct assumption, because 1) it's OK
to import same names as long as we don't use any of them 2) when we use one of
them, GHC generates an error because it doesn't disambiguate it automatically.

But apparently the story is different with typeclass methods. If I import two
methods with same names, it's OK to use them in typeclass instance
declarations, because the context specifies which one to use. For example, this
is OK (where modules A and B define typeclasses A and B, both with a function
has),

    import A
    import B

    data Blah = Blah

    instance A Blah where
      has = Blah

    instance B Blah where
      has = Blah

But GHC's warning generator is not taking this into account, and so if I change
import list of this program to:

    import A (A (has))
    import B (B (has))

GHC is printing these warnings:

    Main.hs:5:1: Warning:
        The import of ‘A.has’ from module ‘A’ is redundant

    Main.hs:6:1: Warning:
        The import of ‘B.has’ from module ‘B’ is redundant

Why? Because warning generation code is _silently_ ignoring multiple symbols
with same names.

With this patch, GHC takes this into account. If there's only one name, then
this patch reduces to the previous version, that is, it works exactly the same
as current GHC (thanks goes to @quchen for realizing this).

Reviewed By: austin

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

GHC Trac Issues: #10890

3 years agoMake dataToQa aware of Data instances which use functions to implement toConstr
RyanGlScott [Tue, 13 Oct 2015 05:43:32 +0000 (00:43 -0500)] 
Make dataToQa aware of Data instances which use functions to implement toConstr

Trac #10796 exposes a way to make `template-haskell`'s `dataToQa` function
freak out if using a `Data` instance that produces a `Constr` (by means of
`toConstr`) using a function name instead of a data constructor name. While
such `Data` instances are somewhat questionable, they are nevertheless present
in popular libraries (e.g., `containers`), so we can at least make `dataToQa`
aware of their existence.

In order to properly distinguish strings which represent variables (as opposed
to data constructors), it was necessary to move functionality from `Lexeme` (in
`ghc`) to `GHC.Lexeme` in a new `ghc-boot` library (which was previously named
`bin-package-db`).

Reviewed By: goldfire, thomie

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

GHC Trac Issues: #10796

3 years agoSlightly wibble TcSimplify documentation
Alexander Berntsen [Tue, 13 Oct 2015 05:35:22 +0000 (00:35 -0500)] 
Slightly wibble TcSimplify documentation

Add some commas, fix some typos, etc.

Signed-off-by: Alexander Berntsen <alexander@plaimi.net>
Reviewed By: austin

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

3 years agotestsuite: attempt fixing T10935 output
Austin Seipp [Tue, 13 Oct 2015 02:35:25 +0000 (21:35 -0500)] 
testsuite: attempt fixing T10935 output

This fallout was caused by f8fbf385b879fe17740 (see #10935), and looks easy
enough, but admittedly I just tried patching the output, so we're doing it
live.

Signed-off-by: Austin Seipp <austin@well-typed.com>
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. 7.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: https://phabricator.haskell.org/D1246

GHC Trac Issues: #10829

3 years agoReinstate monomorphism-restriction warnings
Simon Peyton Jones [Mon, 12 Oct 2015 15:23:56 +0000 (16:23 +0100)] 
Reinstate monomorphism-restriction warnings

This patch is driven by Trac #10935, and reinstates the
-fwarn-monomorphism-restriction warning.  It was first lost in 2010:
d2ce0f52d "Super-monster patch implementing the new typechecker -- at
last"

I think the existing documentation is accurate; it is not even
turned on by -Wall.

I added one test.

3 years agoTest Trac #10931
Simon Peyton Jones [Tue, 6 Oct 2015 11:43:10 +0000 (12:43 +0100)] 
Test Trac #10931

3 years agobase: MRP-refactoring of AMP instances
Herbert Valerio Riedel [Mon, 12 Oct 2015 09:36:01 +0000 (11:36 +0200)] 
base: MRP-refactoring of AMP instances

This refactors `(>>)`/`(*>)`/`return`/`pure` methods into normal form.

The redundant explicit `return` method definitions are dropped
altogether.

The explicit `(>>) = (*>)` definitions can't be removed yet, as
the default implementation of `(>>)` is still in terms of `(*>)`
(even though that should have been changed according to the AMP but
wasn't -- see note in GHC.Base for details why this had to be postponed)

A nofib comparision shows this refactoring to result in minor runtime
improvements (unless those are within normal measurement fluctuations):

        Program           Size    Allocs   Runtime   Elapsed  TotalMem
  -------------------------------------------------------------------------
            Min          -0.0%     -0.0%     -1.6%     -3.9%     -1.1%
            Max          -0.0%     +0.0%     +0.5%     +0.5%      0.0%
  Geometric Mean         -0.0%     -0.0%     -0.4%     -0.5%     -0.0%

Full `nofib` report at https://phabricator.haskell.org/P68

Reviewers: quchen, alanz, austin, #core_libraries_committee, bgamari

Reviewed By: bgamari

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

3 years agoPPC: Fix right shift by 32 bits #10870
Erik de Castro Lopo [Sun, 13 Sep 2015 08:57:40 +0000 (18:57 +1000)] 
PPC: Fix right shift by 32 bits #10870

Summary: Test included.

Test Plan: Run test T10870.hs on X86/X86_64/Arm/Arm64 etc

Reviewers: bgamari, nomeata, austin

Subscribers: thomie

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

GHC Trac Issues: #10870

3 years agocompiler/nativeGen/PPC/Ppr.hs: Whitespace
Erik de Castro Lopo [Sun, 13 Sep 2015 09:48:22 +0000 (19:48 +1000)] 
compiler/nativeGen/PPC/Ppr.hs: Whitespace

3 years agoDelete ShPackageKey for now.
Edward Z. Yang [Sat, 10 Oct 2015 19:00:55 +0000 (12:00 -0700)] 
Delete ShPackageKey for now.

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
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 agosphinx: Don't share doctrees between targets
Ben Gamari [Sat, 10 Oct 2015 13:12:59 +0000 (15:12 +0200)] 
sphinx: Don't share doctrees between targets

Sphinx may trip over itself when multiple instances are run in parallel.

Fixes #10950.

3 years agoRename SpecInfo to RuleInfo (upon SPJ's advice).
Edward Z. Yang [Sat, 10 Oct 2015 12:34:21 +0000 (14:34 +0200)] 
Rename SpecInfo to RuleInfo (upon SPJ's advice).

Test Plan: validate

Reviewers: simonpj, austin, bgamari

Reviewed By: bgamari

Subscribers: thomie

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

3 years agoKeep `shift{L,R}` on `Integer` from segfaulting
Ben Gamari [Sat, 10 Oct 2015 12:32:28 +0000 (14:32 +0200)] 
Keep `shift{L,R}` on `Integer` from segfaulting

This can happen because the underlying primitive operations in
`integer-gmp` don't support negative shift-amounts, and since
`integer-gmp` can't throw proper exceptions and just provides a
low-level API, it simply segfaults instead...

This patch simply removes the `shift{L,R}` method definitions (and
defines `unsafeShift{L,R}` instead) whose default-impls fallback on
using `shift` which properly handles negative shift arguments.

This addresses #10571

Test Plan: harbormaster can do it

Reviewers: hvr, austin, rwbarton

Subscribers: rwbarton, thomie, bgamari

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

GHC Trac Issues: #10571

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

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

3 years agoFix error msg: ghci can't be used with -prof or -static (#10936)
Thomas Miedema [Wed, 7 Oct 2015 10:03:04 +0000 (12:03 +0200)] 
Fix error msg: ghci can't be used with -prof or -static (#10936)

Reviewed by: austin

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

3 years agoRevert "Switch to LLVM version 3.7"
Erik de Castro Lopo [Fri, 9 Oct 2015 23:47:37 +0000 (10:47 +1100)] 
Revert "Switch to LLVM version 3.7"

Pushed by mistacke before it was ready.

This reverts commit 5dc3db743ec477978b9727a313951be44dbd170f.

3 years agoSwitch to LLVM version 3.7
Erik de Castro Lopo [Thu, 8 Oct 2015 21:21:55 +0000 (08:21 +1100)] 
Switch to LLVM version 3.7

3 years agoSimplify type of ms_srcimps and ms_textual_imps.
Edward Z. Yang [Thu, 8 Oct 2015 22:03:01 +0000 (15:03 -0700)] 
Simplify type of ms_srcimps and ms_textual_imps.

Summary:
Previously, we stored an entire ImportDecl, which was pretty
wasteful since all we really cared about was the package qualifier
and the module name.

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

Reviewers: bgamari, austin

Subscribers: thomie

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

3 years agoIgnore __pycache__.
Edward Z. Yang [Fri, 9 Oct 2015 17:27:31 +0000 (10:27 -0700)] 
Ignore __pycache__.

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
3 years agoDisable man building for most quick build styles.
Edward Z. Yang [Fri, 9 Oct 2015 17:25:20 +0000 (10:25 -0700)] 
Disable man building for most quick build styles.

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
3 years agoExtra files to ignore from the new Restructured documentation.
Edward Z. Yang [Fri, 9 Oct 2015 07:27:38 +0000 (00:27 -0700)] 
Extra files to ignore from the new Restructured documentation.

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
3 years agoMove orphan instance/rule warnings to typechecker/desugarer.
Edward Z. Yang [Thu, 1 Oct 2015 22:24:41 +0000 (15:24 -0700)] 
Move orphan instance/rule warnings to typechecker/desugarer.

Summary:
Instead of doing these warnings at MkIface time, we do them
when we create the instances/rules in the typechecker/desugarer.

Emitting warnings for auto-generated instances was a pain
(since the specialization monad doesn't have the capacity
to emit warnings) so instead I just deprecated -fwarn-auto-orphans.
Auto rule orphans are pretty harmless anyway: they don't cause
interface files to be eagerly loaded in.

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/D1297

3 years agoTests for #10945 and #10946
Jan Stolarek [Thu, 8 Oct 2015 12:10:42 +0000 (14:10 +0200)] 
Tests for #10945 and #10946

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

GHC Trac Issues: #10498

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

GHC Trac Issues: #10747

3 years agoImprove error messages for ambiguous type variables
David Kraeutmann [Thu, 8 Oct 2015 01:28:46 +0000 (20:28 -0500)] 
Improve error messages for ambiguous type variables

Improved error messages are only printed when the old message would be
"No instance for...", since they're not as helpful for "Could not deduce..."

No special test case as error messages are tested by other tests already.

Signed-off-by: David Kraeutmann <kane@kane.cx>
Reviewed By: austin, goldfire

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

GHC Trac Issues: #10733

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 agoDocumentation for FrontendResult
Edward Z. Yang [Tue, 6 Oct 2015 17:14:39 +0000 (10:14 -0700)] 
Documentation for FrontendResult

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
3 years agoComments about TcLevel assignment
Simon Peyton Jones [Tue, 6 Oct 2015 11:36:30 +0000 (12:36 +0100)] 
Comments about TcLevel assignment

Triggered by investigations around Trac 10845

3 years agoComments only
Simon Peyton Jones [Tue, 6 Oct 2015 08:53:18 +0000 (09:53 +0100)] 
Comments only

3 years agoRemove dead code: ruleLhsOrphNames
Simon Peyton Jones [Tue, 6 Oct 2015 08:53:07 +0000 (09:53 +0100)] 
Remove dead code: ruleLhsOrphNames

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 agoComments only
Simon Peyton Jones [Fri, 2 Oct 2015 07:39:26 +0000 (08:39 +0100)] 
Comments only

3 years agoDeduplicate one-shot/make compile paths.
Edward Z. Yang [Sat, 3 Oct 2015 05:05:24 +0000 (22:05 -0700)] 
Deduplicate one-shot/make compile paths.

Summary:
We had a duplicate copy of the code for --make and for -c
which was a pain.  The call graph looked something like this:

    compileOne -> genericHscCompileGetFrontendResult -> genericHscFrontend
                                   hscCompileOneShot ---^

with genericHscCompileGetFrontendResult and hscCompileOneShot
duplicating logic for deciding whether or not recompilation
was needed.

This patchset fixes it, so now everything goes through this call-chain:

    compileOne (--make entry point)
        Calls hscIncrementCompile, invokes the pipeline to do codegen
        and sets up linkables.
    hscIncrementalCompile (-c entry point)
        Calls hscIncrementalFrontend, and then simplifying,
        desugaring, and writing out the interface.
    hscIncrementalFrontend
        Performs recompilation avoidance, if recompilation needed,
        does parses typechecking.

I also cleaned up some of the MergeBoot nonsense by introducing
a FrontendResult type.

NB: this BREAKS #8101 again, because I can't unconditionally desugar
due to Haddock barfing on lint, see #10600

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

Reviewers: simonpj, bgamari, simonmar, austin

Subscribers: thomie

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

3 years agoTestsuite: make driver python 2.6 compatible again
Thomas Miedema [Mon, 5 Oct 2015 15:32:02 +0000 (17:32 +0200)] 
Testsuite: make driver python 2.6 compatible again

Reviewed by: kgardas

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

3 years agoA few typos in comments
Gabor Greif [Mon, 5 Oct 2015 12:05:56 +0000 (14:05 +0200)] 
A few typos in comments

3 years agoTestsuite: only add -fno-warn-missed-specialisations for ghc>=7.11
Thomas Miedema [Sun, 4 Oct 2015 16:46:12 +0000 (18:46 +0200)] 
Testsuite: only add -fno-warn-missed-specialisations for ghc>=7.11

It should be possible to run the testsuite with older versions of GHC.

Reviewed by: austin

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

3 years agoBuild system: don't create mk/are-validating.mk
Thomas Miedema [Sat, 3 Oct 2015 19:42:52 +0000 (21:42 +0200)] 
Build system: don't create mk/are-validating.mk

A `make` build after running `./validate` earlier should use the normal
mk/build.mk settings, without having to manually delete the leftover
file mk/are-validating or run `make clean` first.

Reviewed by: austin

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

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

1.
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.

2.
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.

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

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

3 years agotestsuite: Bump up haddock.base expected allocations
Ben Gamari [Sat, 3 Oct 2015 18:45:32 +0000 (20:45 +0200)] 
testsuite: Bump up haddock.base expected allocations

This started intermittently failing as a result of D1239.
I suspect this was just the straw that broke the camel's back however.

3 years agoFill in associated type defaults with DeriveAnyClass
RyanGlScott [Sat, 3 Oct 2015 18:06:48 +0000 (20:06 +0200)] 
Fill in associated type defaults with DeriveAnyClass

Summary:
Unlike `-XDefaultSignatures`, `-XDeriveAnyClass` would not fill in
associated type family defaults when deriving a class which contained
them.

In order to fix this properly, `tcATDefault` needed to be used from
`TcGenDeriv`. To avoid a module import cycle, `tcATDefault` was moved
from `TcInstDcls` to `TcClsDcl`.

Fixes #10361.

Test Plan: ./validate

Reviewers: kosmikus, dreixel, bgamari, austin, simonpj

Subscribers: thomie

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

GHC Trac Issues: #10361

3 years agoEnable `Enumeration is empty` warnings for `Integer`
Herbert Valerio Riedel [Sat, 3 Oct 2015 18:05:11 +0000 (20:05 +0200)] 
Enable `Enumeration is empty` warnings for `Integer`

This warning was implemented via
abb3a9faa88fad3562ac41a148dd683765f47565 for addressing #7881. The
bounded H2010 integral types were handled, but the `Integer` type was
missed for the enumeration warning.

Fixes #10929

Test Plan: reused T7881 testcase

Reviewers: thomie, bgamari, austin

Reviewed By: thomie, bgamari, austin

Subscribers: thomie

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

GHC Trac Issues: #10929

3 years agoMake GHC generics capable of handling unboxed types
RyanGlScott [Sat, 3 Oct 2015 17:21:37 +0000 (19:21 +0200)] 
Make GHC generics capable of handling unboxed types

This adds a data family (`URec`) and six data family instances (`UAddr`,
`UChar`, `UDouble`, `UFloat`, `UInt`, and `UWord`) which a `deriving
Generic(1)` clause will generate if it sees `Addr#`, `Char#`, `Double#`,
`Float#`, `Int#`, or `Word#`, respectively. The programmer can then
provide instances for these data family instances to provide custom
implementations for unboxed types, similar to how derived `Eq`, `Ord`,
and `Show` instances currently special-case unboxed types.

Fixes #10868.

Test Plan: ./validate

Reviewers: goldfire, dreixel, bgamari, austin, hvr, kosmikus

Reviewed By: dreixel, kosmikus

Subscribers: simonpj, thomie

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

GHC Trac Issues: #10868

3 years agoTestsuite: update expected output for T8602
Thomas Miedema [Sat, 3 Oct 2015 17:15:20 +0000 (19:15 +0200)] 
Testsuite: update expected output for T8602

3 years agoBuild system: add mk/validate.mk.sample
Thomas Miedema [Sat, 3 Oct 2015 17:02:37 +0000 (19:02 +0200)] 
Build system: add mk/validate.mk.sample

Reviewers: austin, bgamari

Subscribers: erikd

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

modified:   configure.ac

3 years agoFix broken validation Build 6564 and accepting a few other test results
Tamar Christina [Sat, 3 Oct 2015 16:37:29 +0000 (18:37 +0200)] 
Fix broken validation Build 6564 and accepting a few other test results

Test Plan: ./validate

Reviewers: thomie, austin, bgamari

Reviewed By: bgamari

Subscribers: #ghc_windows_task_force

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

3 years agoPrevent GHC from silently dying when preprocessor is not found
Tamar Christina [Sat, 3 Oct 2015 10:37:00 +0000 (12:37 +0200)] 
Prevent GHC from silently dying when preprocessor is not found

The Windows preprocessor code calls `runInteractiveProcess` but does
not check if an exception is thrown.
`runInteractiveProcess` calls `CreateProcess` which when given a format
the system loader does not know about
will throw an exception. This is what makes #9399 fail.

Ultimately we should not use any `CreateProcess` based calls but
instead `ShellExecuteEx` as  this would allow
us to run applications that the shell knows about instead of just the
loader. More details on #365.

This patch removes `PhaseFailed` and throws `ProgramError` instead.
`PhaseFailed` was largely unneeded since it never gave
very useful information aside from the `errorcode` which was almost
always `1`. `IOErrors` have also been eliminated and `GhcExceptions`
thrown in their place wherever possible.

Updates haddock submodule.

Test Plan:
`./validate` to make sure anything didn't break and
`make TESTS="T365"` to test that an error is now properly thrown

Reviewers: austin, thomie, bgamari

Reviewed By: thomie, bgamari

Subscribers: #ghc_windows_task_force

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

GHC Trac Issues: #365

3 years agodocs: Fix ghc_config.py.in
Ben Gamari [Sat, 3 Oct 2015 08:30:20 +0000 (10:30 +0200)] 
docs: Fix ghc_config.py.in

3 years agoMove user's guide to ReStructuredText
Ben Gamari [Wed, 30 Sep 2015 23:08:41 +0000 (01:08 +0200)] 
Move user's guide to ReStructuredText

3 years agoDon't use old linkable for hs-boot files.
Edward Z. Yang [Fri, 2 Oct 2015 21:13:03 +0000 (23:13 +0200)] 
Don't use old linkable for hs-boot files.

We should only use the old linkable when the really is nothing
to be done.  In the case of hs-boot, there should just not be
a linkable.

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

Reviewers: austin, bgamari

Reviewed By: bgamari

Subscribers: thomie

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

3 years agoFix signature of atomic builtins
Andreas Schwab [Fri, 2 Oct 2015 21:03:12 +0000 (23:03 +0200)] 
Fix signature of atomic builtins

This patch is due to Andreas Schwab.

This fixes #10926, which reports (on AArch64) errors of the form,

```
/tmp/ghc1492_0/ghc_1.hc:2844:25: warning: passing argument 1 of
'hs_atomic_xor64' makes pointer from integer without a cast
[-Wint-conversion]
     _c1Ho = hs_atomic_xor64((*Sp) + (((Sp[1]) << 0x3UL) + 0x10UL), Sp[2]);
                             ^

In file included from
/home/abuild/rpmbuild/BUILD/ghc-7.10.2/includes/Stg.h:273:0: 0,
                 from /tmp/ghc1492_0/ghc_1.hc:3:

/home/abuild/rpmbuild/BUILD/ghc-7.10.2/includes/stg/Prim.h:41:11:
     note: expected 'volatile StgWord64 *
           {aka volatile long unsigned int *}'
           but argument is of type 'long unsigned int'
     StgWord64 hs_atomic_xor64(volatile StgWord64 *x, StgWord64 val);
               ^
```

Test Plan: Validate

Reviewers: austin, simonmar

Reviewed By: simonmar

Subscribers: thomie

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

GHC Trac Issues: #10926

3 years agoMove CallStack back to base
Ben Gamari [Fri, 2 Oct 2015 13:50:34 +0000 (15:50 +0200)] 
Move CallStack back to base

CallStack requires tuples, instances of which are defined in GHC.Tuple.
Unfortunately the change made in D757 to the `Typeable` deriving
mechanism means that `GHC.Tuple` must import `GHC.Types` for types
necessary to generate type representations.  This results in a cycle.

Test Plan: Validate

Reviewers: gridaphobe, austin, hvr

Subscribers: thomie

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

3 years agoLLVM: Factor out accumulation of LLVM statements and variables
Ben Gamari [Fri, 2 Oct 2015 13:49:24 +0000 (15:49 +0200)] 
LLVM: Factor out accumulation of LLVM statements and variables

The LLVM code generator currently has a rather large amount of
boilerplate devoted to piping around and building up various AST
elements. This is rather unfortunate for a language which prides itself
on ease of abstraction and detracts from readability.

Here I continue a refactoring that I originally suggested in D991, using
`WriterT` to factor out this pattern. `WriterT` is in general a bit
problematic from an evaluation perspective, but the expressions here are
small enough that it should be a problem in practice.

Test Plan: Validate

Reviewers: austin

Reviewed By: austin

Subscribers: thomie

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

3 years agoLLVM: Implement atomic operations in terms of LLVM primitives
Ben Gamari [Fri, 2 Oct 2015 13:48:55 +0000 (15:48 +0200)] 
LLVM: Implement atomic operations in terms of LLVM primitives

This fixes Trac #7883.

This adds proper support for,
  * `MO_AtomicRMW`
  * `MO_AtomicWrite`
  * `MO_CmpXChg`

Test Plan: Validate

Reviewers: rrnewton, austin

Subscribers: thomie

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

GHC Trac Issues: #7883

3 years agonativeGen PPC: fix > 16 bit offsets in stack handling
Peter Trommler [Fri, 2 Oct 2015 13:48:30 +0000 (15:48 +0200)] 
nativeGen PPC: fix > 16 bit offsets in stack handling

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
platforms.

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
instructions.

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

Test Plan: validate (especially on powerpc (32 bit))

Reviewers: bgamari, austin, erikd

Reviewed By: erikd

Subscribers: thomie

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

GHC Trac Issues: #7830

3 years agoDocument peculiarities of `traceM`.
Matthias Fischmann [Fri, 2 Oct 2015 13:48:08 +0000 (15:48 +0200)] 
Document peculiarities of `traceM`.

Reviewers: bgamari, hvr, austin

Reviewed By: bgamari, hvr, austin

Subscribers: thomie

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

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

GHC Trac Issues: #10215, #9238

3 years agoUpdate nofib submodule again
Joachim Breitner [Fri, 2 Oct 2015 11:20:59 +0000 (13:20 +0200)] 
Update nofib submodule again

reverting my bogus commit there.

3 years agoUpdate nofib submodule
Joachim Breitner [Fri, 2 Oct 2015 09:09:31 +0000 (11:09 +0200)] 
Update nofib submodule

to contain these commits:
   commit 8bffe3cb01ce404ab493de2b4316f2c1c4a9bda9
   Author: Joachim Breitner <mail@joachim-breitner.de>
   Date:   Fri Oct 2 10:09:17 2015 +0200

       Expected output of mandel when run under valgrind

       probably due to rounding/floating point precision numbers. It looks
       broken, but so does the existing file spectral/mandel/mandel.stdout-mingw.

   commit f9a577973edf6976e4c0703bf2afac900d7b6fd8
   Author: Gabor Greif <ggreif@gmail.com>
   Date:   Fri Jul 31 00:43:38 2015 +0200

       Typos in comments

   commit 20ae9113ad31eca426883544f597a3cae9b60d94
   Author: Simon Peyton Jones <simonpj@microsoft.com>
   Date:   Fri Apr 24 15:10:02 2015 +0100

       Add exact-real-arithmetic benchmark from David Lester

3 years agoAdd Data.Semigroup and Data.List.NonEmpty (re #10365)
Herbert Valerio Riedel [Sun, 27 Sep 2015 10:01:41 +0000 (12:01 +0200)] 
Add Data.Semigroup and Data.List.NonEmpty (re #10365)

This implements phase 1 of the semigroup-as-monoid-superclass
proposal (https://ghc.haskell.org/wiki/Proposal/SemigroupMonoid).

The modules were migrated from the `semigroups-0.17` release mostly
as-is, except for dropping several trivial `{-# INLINE #-}`s,
removing CPP usage, and instances for types & classes provided
outside of `base` (e.g. `containers`, `deepseq`, `hashable`, `tagged`,
`bytestring`, `text`)

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

3 years agoTypos in comments
Joachim Breitner [Thu, 1 Oct 2015 19:55:57 +0000 (21:55 +0200)] 
Typos in comments

3 years ago.gitignore update for some test files.
Edward Z. Yang [Sat, 19 Sep 2015 05:30:12 +0000 (22:30 -0700)] 
.gitignore update for some test files.

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
3 years agoLexer: delete dead code for binary character literals
Thomas Miedema [Tue, 29 Sep 2015 15:54:32 +0000 (17:54 +0200)] 
Lexer: delete dead code for binary character literals

The Haskell 2010 report chapter 2.6 (Characters and String Literals)
says:

  "Numeric escapes such as \137 are used to designate the character with
  decimal representation 137; octal (e.g. \o137) and hexadecimal (e.g.
  \x37) representations are also allowed."

Commit 1c0b5fdc9f2b6ea8166cc565383d4cd20432343c added syntax for writing
character literals using binary notation (e.g. '\b100100'). But this
code can never be reached, because '\b' already represents "backspace".

Turn on -fwarn-overlapping-patterns to catch such bugs in the future.

Reviewed by: hvr

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

3 years agoAllow enumDeltaIntegerFB to be inlined
Joachim Breitner [Mon, 28 Sep 2015 11:48:40 +0000 (13:48 +0200)] 
Allow enumDeltaIntegerFB to be inlined

The function is very small and the compiler should be at liberty to
inline it. But it is recursive, so it did not do it before. By applying
the usual transformation with a local recursive function, GHC can now
inline it, producing the loop that one would expect.

3 years agoreify associated types when reifying typeclasses(#10891)
Ömer Sinan Ağacan [Sat, 26 Sep 2015 19:07:51 +0000 (21:07 +0200)] 
reify associated types when reifying typeclasses(#10891)

As reported in Trac #10891, Template Haskell's `reify` was not
generating Decls for associated types. This patch fixes that.

Note that even though `reifyTyCon` function used in this patch returns
some type instances, I'm ignoring that.

Here's an example of how associated types are encoded with this patch:

(Simplified representation)

    class C a where
      type F a :: *

    -->

    OpenTypeFamilyD "F" ["a"]

With default type instances:

    class C a where
      type F a :: *
      type F a = a

    -->

    OpenTypeFamilyD "F" ["a"]
    TySynInstD "F" (TySynEqn [VarT "a"] "a")

Test Plan:
This patch was already reviewed and even merged. The patch is later
reverted because apparently it broke the build some time between the
validation of this patch and merge. Creating this new ticket to fix the
validation.

Reviewers: goldfire, austin, bgamari

Reviewed By: bgamari

Subscribers: thomie

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

GHC Trac Issues: #10891

3 years agorts: Clean up whitespace in Trace.h
Ben Gamari [Sat, 26 Sep 2015 17:03:18 +0000 (19:03 +0200)] 
rts: Clean up whitespace in Trace.h

3 years agoDebug: Remove extraneous LANGUAGE CPP
Ben Gamari [Mon, 24 Aug 2015 09:42:24 +0000 (11:42 +0200)] 
Debug: Remove extraneous LANGUAGE CPP

3 years agoSkip a possible BOM in utf8 encoding
Joachim Breitner [Wed, 23 Sep 2015 08:10:03 +0000 (10:10 +0200)] 
Skip a possible BOM in utf8 encoding

and not the system locale, which might be something else. This fixes
bug #10907. A test is added, but less useful than it could be until
task #10909 is done.

Differential Revision: D1274

3 years agoDwarf: Ensure block length is encoded correctly
Ben Gamari [Fri, 25 Sep 2015 10:51:54 +0000 (12:51 +0200)] 
Dwarf: Ensure block length is encoded correctly

This is supposed to be encoded with ULEB128 which the previous
implementation would only guarranty with short lengths. This likely
holds in nearly all cases, but I'd really rather not take changes.

I fix this using the `.uleb128` directive. I'm not certain that this is
portable across assemblers but it makes this quite straightforward and
at the moment I value correctness over portability.

Test Plan: Compare implementation to DWARF spec

Reviewers: scpmw, austin

Reviewed By: austin

Subscribers: thomie

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

3 years agoDwarf: Rename binding to avoid shadowing ppr
Ben Gamari [Fri, 25 Sep 2015 10:51:01 +0000 (12:51 +0200)] 
Dwarf: Rename binding to avoid shadowing ppr

Reviewers: austin

Reviewed By: austin

Subscribers: thomie

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

3 years agoWeak: Don't require wrapping/unwrapping of finalizers
Ben Gamari [Wed, 23 Sep 2015 12:36:40 +0000 (14:36 +0200)] 
Weak: Don't require wrapping/unwrapping of finalizers

To quote Simon Marlow,

    We don't expect users to ever write code that uses mkWeak# or
    finalizeWeak#, we have safe interfaces to these. Let's document the type
    unsafety and fix the problem with () without introducing any overhead.

Updates stm submodule.

3 years agoTestsuite: add test for #10767
Thomas Miedema [Thu, 24 Sep 2015 12:51:56 +0000 (14:51 +0200)] 
Testsuite: add test for #10767

3 years agoTestsuite: properly fix T8832.stdout-ws-32 (#8832)
Thomas Miedema [Thu, 24 Sep 2015 10:10:29 +0000 (12:10 +0200)] 
Testsuite: properly fix T8832.stdout-ws-32 (#8832)

3 years agoTestsuite: update expected output for T8832 on 32-bit systems (#8832)
Thomas Miedema [Thu, 24 Sep 2015 10:04:33 +0000 (12:04 +0200)] 
Testsuite: update expected output for T8832 on 32-bit systems (#8832)

3 years agoFix DeriveGeneric for types with same OccName (#10487)
Ömer Sinan Ağacan [Thu, 24 Sep 2015 07:51:19 +0000 (00:51 -0700)] 
Fix DeriveGeneric for types with same OccName (#10487)

Summary:
DeriveGeneric generates some data types (for data type constructors and for
selectors of those constructors) and instances for those types. This patch
changes name generation for these new types to make it working with data types
with same names imported from different modules and with data types with same
names imported from same modules(using module imports).

Bonus content:

- Some refactoring in `TcGenGenerics.metaTyConsToDerivStuff` to remove some
  redundant partial function applications and to remove a duplicated function.
- Remove some unused names from `OccName`. (those were used for an old
  implementation of `DeriveGeneric`)

Reviewers: kosmikus, simonpj, dreixel, ezyang, bgamari, austin

Reviewed By: bgamari, austin

Subscribers: ezyang, thomie

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

GHC Trac Issues: #10487

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

3 years agoRevert "reify associated types when reifying typeclasses"
Austin Seipp [Wed, 23 Sep 2015 23:12:14 +0000 (18:12 -0500)] 
Revert "reify associated types when reifying typeclasses"

This caused the build to fail, due to some type checking errors. Whoops.

This reverts commit 5c115236fe795aa01f0c10106f1b1c959486a739.

3 years agoreify associated types when reifying typeclasses
Ömer Sinan Ağacan [Wed, 23 Sep 2015 18:19:58 +0000 (13:19 -0500)] 
reify associated types when reifying typeclasses

As reported in Trac #10891, Template Haskell's `reify` was not generating Decls
for associated types. This patch fixes that.

Note that even though `reifyTyCon` function used in this patch returns some
type instances, I'm ignoring that.

Here's an example of how associated types are encoded with this patch:

(Simplified representation)

    class C a where
      type F a :: *

    -->

    OpenTypeFamilyD "F" ["a"]

With default type instances:

    class C a where
      type F a :: *
      type F a = a

    -->

    OpenTypeFamilyD "F" ["a"]
    TySynInstD "F" (TySynEqn [VarT "a"] "a")

Reviewed By: goldfire

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

GHC Trac Issues: #10891

3 years agobase: export allocation counter/limit API from System.Mem
Simon Marlow [Wed, 23 Sep 2015 18:13:28 +0000 (13:13 -0500)] 
base: export allocation counter/limit API from System.Mem

Previously it was only available from GHC.Conc, but it makes sense for it to be
available from a more official place where people might find it.

While I was here, I improved the docs a little.

Reviewed By: austin

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

3 years agoUpdate Cabal to recognize DeriveLift
RyanGlScott [Wed, 23 Sep 2015 18:10:42 +0000 (13:10 -0500)] 
Update Cabal to recognize DeriveLift

This should (1) fix the ./validate build, which I accidentally broke in D1168,
and (2) update the Cabal submodule so that it recognizes `DeriveLift` as a GHC
extension.

Reviewed By: adamse, austin

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

GHC Trac Issues: #1830

3 years agoAdd constant-folding rule for Data.Bits.bit
Ben Gamari [Wed, 23 Sep 2015 18:10:13 +0000 (13:10 -0500)] 
Add constant-folding rule for Data.Bits.bit

This adds a constant-folding rule for `Integer`'s implementation of `bit` and
fixes the `T8832` testcase. Fixes #8832.

Reviewed By: simonpj, austin

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

GHC Trac Issues: #8832

3 years agoAnnotate CmmBranch with an optional likely target
Simon Marlow [Mon, 21 Sep 2015 08:14:33 +0000 (09:14 +0100)] 
Annotate CmmBranch with an optional likely target

Summary:
This allows the code generator to give hints to later code generation
steps about which branch is most likely to be taken.  Right now it
is only taken into account in one place: a special case in
CmmContFlowOpt that swapped branches over to maximise the chance of
fallthrough, which is now disabled when there is a likelihood setting.

Test Plan: validate

Reviewers: austin, simonpj, bgamari, ezyang, tibbe

Subscribers: thomie

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