ghc.git
4 years agoAllow the linker to run concurrently with the GC
Simon Marlow [Fri, 19 Dec 2014 20:10:40 +0000 (20:10 +0000)] 
Allow the linker to run concurrently with the GC

4 years agoImprove documentation for -N and -qa (#9890)
Simon Marlow [Tue, 16 Dec 2014 11:42:42 +0000 (11:42 +0000)] 
Improve documentation for -N and -qa (#9890)

4 years agoDwarf generation fixed pt 2
Peter Wortmann [Thu, 8 Jan 2015 21:19:56 +0000 (22:19 +0100)] 
Dwarf generation fixed pt 2

- Don't bracket HsTick expression uneccessarily
- Generate debug information in UTF8
- Reduce amount of information generated - we do not currently need
  block information, for example.

Special thanks to slyfox for the reports!

4 years agoFix panics of PartialTypeSignatures combined with extensions
Thomas Winant [Mon, 12 Jan 2015 11:29:50 +0000 (05:29 -0600)] 
Fix panics of PartialTypeSignatures combined with extensions

Summary:
Disallow wildcards in stand-alone deriving instances
(StandaloneDeriving), default signatures (DefaultSignatures) and
instances signatures (InstanceSigs).

Test Plan: validate

Reviewers: austin

Reviewed By: austin

Subscribers: carter, thomie, monoidal

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

GHC Trac Issues: #9922

4 years agoTrac #9878: Have StaticPointers support dynamic loading.
Alexander Vershilov [Mon, 12 Jan 2015 11:29:18 +0000 (05:29 -0600)] 
Trac #9878: Have StaticPointers support dynamic loading.

Summary:
A mutex is used to protect the SPT.

unsafeLookupStaticPtr and staticPtrKeys in GHC.StaticPtr are made
monadic.

SPT entries are removed in a destructor function of modules.

Authored-by: Facundo Domínguez <facundo.dominguez@tweag.io>
Authored-by: Alexander Vershilov <alexander.vershilov@tweag.io>
Test Plan: ./validate

Reviewers: austin, simonpj, hvr

Subscribers: carter, thomie, qnikst, mboes

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

GHC Trac Issues: #9878

4 years agoPackage environments
Edsko de Vries [Mon, 12 Jan 2015 11:22:22 +0000 (05:22 -0600)] 
Package environments

Summary: Package environments are files with package IDs that indicate which packages should be visible; see entry in user guide for details.

Reviewers: duncan, austin

Reviewed By: duncan, austin

Subscribers: carter, thomie

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

4 years agoadd -th-file which generates a th.hs file
Greg Weber [Mon, 12 Jan 2015 11:16:37 +0000 (05:16 -0600)] 
add -th-file which generates a th.hs file

Summary:
see Trac #8624

similar functionality is now available
with -ddump-to-file -ddump-splices

However, users are already accustomed to -ddump-splices
having a particular format, and this format is not completely valid code
The goal of -th-file is to dump valid Haskell code

Additionally, the convention of -ddump-to-file is to name the file after
the flag, so the file is .dump-splices
Given that the goal of the new flag is to generate valid Haskell,
The extension should be .hs

Additionally, -ddump-to-file effects all other dump flags

Test Plan:
look at the output of using the -th-file flag
and compare it to the output of using -ddump-to-file and -ddump-splices
I want to add test cases, but just need some pointers on getting started there

Reviewers: thomie, goldfire, simonpj, austin

Reviewed By: simonpj, austin

Subscribers: thomie, carter

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

GHC Trac Issues: #8624

4 years agoaclocal.m4: fix == bashism in FIND_LLVM_PROG
Tuncer Ayaz [Mon, 12 Jan 2015 11:14:45 +0000 (05:14 -0600)] 
aclocal.m4: fix == bashism in FIND_LLVM_PROG

Reviewers: austin, erikd

Reviewed By: erikd

Subscribers: erikd, carter, thomie

Projects: #ghc

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

4 years agoEvent Manager: Make one-shot a per-registration property
Ben Gamari [Mon, 12 Jan 2015 23:36:23 +0000 (18:36 -0500)] 
Event Manager: Make one-shot a per-registration property

Summary:
Currently the event manager has a global flag for whether to create
epoll-like notifications as one-shot (e.g. EPOLLONESHOT, where an fd
will be deactivated after its first event) or standard multi-shot
notifications.

Unfortunately this means that the event manager may export either
one-shot or multi-shot semantics to the user. Even worse, the user has
no way of knowing which semantics are being delivered. This resulted in
breakage in the usb[1] library which deadlocks after notifications on
its fd are disabled after the first event is delivered.  This patch
reworks one-shot event support to allow the user to choose whether
one-shot or multi-shot semantics are desired on a per-registration
basis. The event manager can then decide whether to use a one-shot or
multi-shot epoll.

A registration is now defined by a set of Events (as before) as well as
a Lifetime (either one-shot or multi-shot). We lend monoidal structure
to Lifetime choosing OneShot as the identity. This allows us to combine
Lifetime/Event pairs of an fd to give the longest desired lifetime of
the registration and the full set of Events for which we want
notification.

[1] https://github.com/basvandijk/usb/issues/7

Test Plan: Add more test cases and validate

Reviewers: tibbe, AndreasVoellmy, hvr, austin

Reviewed By: austin

Subscribers: thomie, carter, simonmar

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

4 years agoUpdate Cabal submodule to latest 1.22.0.1 snapshot
Herbert Valerio Riedel [Mon, 12 Jan 2015 21:37:19 +0000 (22:37 +0100)] 
Update Cabal submodule to latest 1.22.0.1 snapshot

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

4 years agoMove libffi configuration after basic toolchain setup
Reid Barton [Mon, 12 Jan 2015 15:59:11 +0000 (10:59 -0500)] 
Move libffi configuration after basic toolchain setup

Summary:
The relevant aspect is that the libffi configuration's AC_CHECK_LIB
and AC_CHECK_HEADERS are moved after FIND_GCC. There are two reasons
to do this:

1. We should detect the presence of libffi using the C compiler
that we are eventually going to use to build GHC.

2. Running AC_CHECK_HEADERS before FIND_GCC pollutes the CPP variable
with "gcc -E" (wrong when cross-compiling), and CPP is not reset
by FIND_GCC. Thus this patch fixes x86_64 -> i386 cross-compilation
of integer-gmp2.

Test Plan: Local x86_64 -> i386 cross-compiling validate; Harbormaster

Reviewers: austin

Reviewed By: austin

Subscribers: erikd, carter, thomie

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

4 years agoinplace: Don't add empty component to LD_LIBRARY_PATH when it is empty
Reid Barton [Mon, 12 Jan 2015 15:56:58 +0000 (10:56 -0500)] 
inplace: Don't add empty component to LD_LIBRARY_PATH when it is empty

Summary: Avoids a confusing inconsistency when testing #9386 (about ghci finding .so files in .).

Test Plan: validate

Reviewers: austin

Reviewed By: austin

Subscribers: carter, thomie

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

GHC Trac Issues: #9386

4 years agoMore comments on HsBang
Simon Peyton Jones [Sun, 11 Jan 2015 23:07:24 +0000 (23:07 +0000)] 
More comments on HsBang

In particular about the dcSrcBangs field of an imported DataCon

4 years agoUpdate pretty submodule to 1.1.2.0 release
Herbert Valerio Riedel [Fri, 9 Jan 2015 22:53:19 +0000 (23:53 +0100)] 
Update pretty submodule to 1.1.2.0 release

4 years agoNewtype CoreMap and TypeMap so their keys are user-friendly.
Edward Z. Yang [Thu, 8 Jan 2015 23:57:57 +0000 (15:57 -0800)] 
Newtype CoreMap and TypeMap so their keys are user-friendly.

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

Test Plan: validate

Reviewers: simonpj, austin

Subscribers: carter, thomie

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

GHC Trac Issues: #9960

4 years agoInline all of the .*[TCE] methods, and then rename .*[TCE]X to vacated name.
Edward Z. Yang [Thu, 8 Jan 2015 22:09:23 +0000 (14:09 -0800)] 
Inline all of the .*[TCE] methods, and then rename .*[TCE]X to vacated name.

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
4 years agoMiscellaneous improvements to TrieMap, from D608 code review.
Edward Z. Yang [Thu, 8 Jan 2015 21:33:23 +0000 (13:33 -0800)] 
Miscellaneous improvements to TrieMap, from D608 code review.

Summary:
    - Add SPECIALIZE pragmas for the lkG/xtG/mapG/fdG family of functions

    - Rename wrapEmptyXX to just emptyXX

    - New deBruijnize function for initializing DeBruijn elements

    - Some extra documentation

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

Reviewers: simonpj, austin

Subscribers: carter, thomie

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

GHC Trac Issues: #9960

4 years agoFix Trac #9973 (buglet in -fwarn-redundant-constraints)
Simon Peyton Jones [Fri, 9 Jan 2015 16:45:03 +0000 (16:45 +0000)] 
Fix Trac #9973 (buglet in -fwarn-redundant-constraints)

4 years agoPattern synonym names need to be in scope before renaming bindings (#9889)
Dr. ERDI Gergo [Wed, 17 Dec 2014 14:09:06 +0000 (22:09 +0800)] 
Pattern synonym names need to be in scope before renaming bindings (#9889)

I did a bit of refactoring at the same time, needless to say

4 years agoFix up test for T7861
Simon Peyton Jones [Fri, 9 Jan 2015 13:00:16 +0000 (13:00 +0000)] 
Fix up test for T7861

Fixes Trac #9972

4 years agoA little tidying up in the flattener
Simon Peyton Jones [Fri, 9 Jan 2015 11:51:52 +0000 (11:51 +0000)] 
A little tidying up in the flattener

Particularly, flatten_many was exported, but the caller was not doing
runFlatten.  Moreover it was always used at nominal role.

This patch makes the API clearer, and more robust

4 years agoComments only
Simon Peyton Jones [Fri, 9 Jan 2015 10:53:26 +0000 (10:53 +0000)] 
Comments only

4 years agoPattern synonyms do work in GHCi now (see #9900)
Dr. ERDI Gergo [Fri, 9 Jan 2015 11:30:04 +0000 (19:30 +0800)] 
Pattern synonyms do work in GHCi now (see #9900)

4 years agoUpdate syntax of pattern synonym type signature in documentation (fixes #9967)
Dr. ERDI Gergo [Fri, 9 Jan 2015 11:29:28 +0000 (19:29 +0800)] 
Update syntax of pattern synonym type signature in documentation (fixes #9967)

4 years agoA little tidying up in ErrUtils
Simon Peyton Jones [Fri, 9 Jan 2015 10:07:02 +0000 (10:07 +0000)] 
A little tidying up in ErrUtils

This module is a disorganised mess.

For example, there is literally *no* documentation of what the *seven*
different forms of 'Severity' are intended to connote.

Anyway this patch makes a tiny step by not exporting unused functions
pprMsgBag and isWarning, and a little bit of internal refactoring

4 years agoMake TcRnMonad.reportWarning call makeIntoWarning
Simon Peyton Jones [Fri, 9 Jan 2015 09:47:57 +0000 (09:47 +0000)] 
Make TcRnMonad.reportWarning call makeIntoWarning

Previously the caller had do to that, and sometimes forgot

4 years agoReturn a [HsImplBang] from dataConImplBangs even with NoDataConRep
Simon Peyton Jones [Fri, 9 Jan 2015 09:46:37 +0000 (09:46 +0000)] 
Return a [HsImplBang] from dataConImplBangs even with NoDataConRep

This fixes Trac #9969, a new crash in T7562 that I somehow missed when
fiddling with HsBang

4 years agoApply GenMap to CoreMap and CoercionMap.
Edward Z. Yang [Thu, 8 Jan 2015 03:13:28 +0000 (19:13 -0800)] 
Apply GenMap to CoreMap and CoercionMap.

Summary:
The biggest chore is the Eq (DeBrujin a) instances (all the more a chore
because we already have an implementation of them, but a CmEnv is not an
RnEnv2), but otherwise a fairly mechanical transformation.

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

Reviewers: simonpj, austin

Subscribers: carter, thomie

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

GHC Trac Issues: #9960

4 years agoAdd 'DeBruijn' constructor, which generalizes "key modulo alpha-renaming."
Edward Z. Yang [Thu, 8 Jan 2015 01:50:42 +0000 (17:50 -0800)] 
Add 'DeBruijn' constructor, which generalizes "key modulo alpha-renaming."

Summary:
We need equality over Types, etc; and this equality has to be modulo alpha
renaming. Previously, we baked CmEnv into the generic "empty, singleton, many"
structure. This isn't great, really GenMap should be more generic than that.

The insight: we've defined the key wrong: the key should be *equipped*
with the alpha-renaming information (CmEnv) and a TrieMap queried with this.
This is what the DeBruijn constructor does.

Now, when we define TrieMap instances, we don't have to synthesize an emptyCME
to pass to the helper functions: we have all the information we need. To make a
recursive call, we construct a new DeBruijn with the updated CME and then
call lookupTM on that. We can even define a plain old Eq instance on DeBruijn
respecting alpha-renaming.  There are number of other good knock-on effects.

This patch does add a bit of boxing and unboxing, but nothing the optimizer
shouldn't be able to eliminate.

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

Reviewers: simonpj, austin

Subscribers: carter, thomie

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

GHC Trac Issues: #9960

4 years agoRecenter T6048 performance numbers
Joachim Breitner [Thu, 8 Jan 2015 21:30:20 +0000 (22:30 +0100)] 
Recenter T6048 performance numbers

4 years agoBump haddock.base according to whats observed on ghcspeed
Joachim Breitner [Thu, 8 Jan 2015 20:02:56 +0000 (21:02 +0100)] 
Bump haddock.base according to whats observed on ghcspeed

4 years agoImprove HsBang
Simon Peyton Jones [Thu, 8 Jan 2015 15:54:39 +0000 (15:54 +0000)] 
Improve HsBang

Provoked by questions from Johan

 - Improve comments, fix misleading stuff
 - Add commented synonyms for HsSrcBang, HsImplBang, and use them throughout
 - Rename HsUserBang to HsSrcBang
 - Rename dataConStrictMarks to dataConSrcBangs
          dataConRepBangs    to dataConImplBangs

This renaming affects Haddock in a trivial way, hence submodule update

4 years agoSpelling error in comment
Simon Peyton Jones [Thu, 8 Jan 2015 13:16:13 +0000 (13:16 +0000)] 
Spelling error in comment

4 years agoImprove documentation of -fwarn-redundant-constraints
Simon Peyton Jones [Thu, 8 Jan 2015 13:15:50 +0000 (13:15 +0000)] 
Improve documentation of -fwarn-redundant-constraints

4 years agoFix out of date comment.
Edward Z. Yang [Thu, 8 Jan 2015 06:49:36 +0000 (22:49 -0800)] 
Fix out of date comment.

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
4 years agoGeneralize TrieMap compression to GenMap.
Edward Z. Yang [Wed, 7 Jan 2015 21:48:10 +0000 (13:48 -0800)] 
Generalize TrieMap compression to GenMap.

I still haven't applied the optimization to anything besides TypeMap.

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

Reviewers: simonpj, austin

Subscribers: carter, thomie

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

GHC Trac Issues: #9960

4 years agoCompress TypeMap TrieMap leaves with singleton constructor.
Edward Z. Yang [Tue, 6 Jan 2015 21:34:18 +0000 (13:34 -0800)] 
Compress TypeMap TrieMap leaves with singleton constructor.

Suppose we have a handful H of entries in a TrieMap, each with a very large
key, size K. If you fold over such a TrieMap you'd expect time O(H). That would
certainly be true of an association list! But with TrieMap we actually have to
navigate down a long singleton structure to get to the elements, so it takes
time O(K*H).  The point of a TrieMap is that you need to navigate to the point
where only one key remains, and then things should be fast.

This is a starting point: we can improve the patch by generalizing the
singleton constructor so it applies to CoercionMap and CoreMap; I'll do this
in a later commit.

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

Test Plan: validate

Reviewers: simonpj, austin

Subscribers: carter, thomie

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

GHC Trac Issues: #9960

4 years agoMark T9938 as expect_broken again
Simon Peyton Jones [Wed, 7 Jan 2015 13:56:19 +0000 (13:56 +0000)] 
Mark T9938 as expect_broken again

It's failing reliable for me (as I think it should) and Edward.
See Trac #9938.

Reverts commit 633814f5

4 years agoFix stderr for T9939
Simon Peyton Jones [Wed, 7 Jan 2015 13:51:27 +0000 (13:51 +0000)] 
Fix stderr for T9939

4 years agoFix undefined GHC.Real export with integer-simple
Erik de Castro Lopo [Wed, 7 Jan 2015 09:37:54 +0000 (20:37 +1100)] 
Fix undefined GHC.Real export with integer-simple

Test Plan: Check that GHC.Real compiles without OPTIMISE_INTEGER_GCD_LCM nor MIN_VERSION_integer_gmp defined.

Reviewers: carter, ezyang, erikd, hvr, dfeuer, austin

Reviewed By: erikd, hvr, dfeuer, austin

Subscribers: erikd, dfeuer, carter, thomie

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

4 years agoMake comments less beautiful in order to pacify Haddock
Simon Peyton Jones [Tue, 6 Jan 2015 17:26:03 +0000 (17:26 +0000)] 
Make comments less beautiful in order to pacify Haddock

4 years agoAnother fix to genprimopcode, when generating Prim.hs
Simon Peyton Jones [Tue, 6 Jan 2015 17:25:17 +0000 (17:25 +0000)] 
Another fix to genprimopcode, when generating Prim.hs

When haddock processes Prim.hs, it was calling TcEnv.tcGetDefaultTys,
and that made it look for Integer and String, which are not in
ghc-prim.  Result was a crash.

But we don't need defaulting in Prim.hs, so add
   default ()

4 years agoUpdate haddock submodule, and fix haddock input file from genprimopcode
Simon Peyton Jones [Tue, 6 Jan 2015 16:43:52 +0000 (16:43 +0000)] 
Update haddock submodule, and fix haddock input file from genprimopcode

* A module in haddock an unused constraint, now fixed and pushed to ghc-head
  This patch records the new commit in GHC repo

* genprimopcode generates a dummy Prim.hs for haddock.  But then Haddock was
  complaining about redundant constraints.  So this patch makes genprimopcode
  generate a warning-suppression OPTIONS_GHC pragma in Prim.hs

4 years agoTest Trac #9939
Simon Peyton Jones [Tue, 6 Jan 2015 15:28:16 +0000 (15:28 +0000)] 
Test Trac #9939

4 years agoRemove redundant constraints from libraries, discovered by -fwarn-redundant-constraints
Simon Peyton Jones [Tue, 6 Jan 2015 13:46:35 +0000 (13:46 +0000)] 
Remove redundant constraints from libraries, discovered by -fwarn-redundant-constraints

This patch affects libraries, and requires a submodule update.

Some other libraries, maintained by others, have redundant constraints,
namely:
           containers
           haskeline
           transformers
           binary

I have suppressed the redundant-constraint warnings by settings in
           validate-settings.mk
(in this commit)

4 years agoRemove redundant constraints in the compiler itself, found by -fwarn-redundant-constr...
Simon Peyton Jones [Mon, 5 Jan 2015 16:57:01 +0000 (16:57 +0000)] 
Remove redundant constraints in the compiler itself, found by -fwarn-redundant-constraints

4 years agoMajor patch to add -fwarn-redundant-constraints
Simon Peyton Jones [Mon, 5 Jan 2015 13:20:48 +0000 (13:20 +0000)] 
Major patch to add -fwarn-redundant-constraints

The idea was promted by Trac #9939, but it was Christmas, so I did
some recreational programming that went much further.

The idea is to warn when a constraint in a user-supplied context is
redundant.  Everything is described in detail in
  Note [Tracking redundant constraints]
in TcSimplify.

Main changes:

 * The new ic_status field in an implication, of type ImplicStatus.
   It replaces ic_insol, and includes information about redundant
   constraints.

 * New function TcSimplify.setImplicationStatus sets the ic_status.

 * TcSigInfo has sig_report_redundant field to say whenther a
   redundant constraint should be reported; and similarly
   the FunSigCtxt constructor of UserTypeCtxt

 * EvBinds has a field eb_is_given, to record whether it is a given
   or wanted binding. Some consequential chagnes to creating an evidence
   binding (so that we record whether it is given or wanted).

 * AbsBinds field abs_ev_binds is now a *list* of TcEvBiinds;
   see Note [Typechecking plan for instance declarations] in
   TcInstDcls

 * Some significant changes to the type checking of instance
   declarations; Note [Typechecking plan for instance declarations]
   in TcInstDcls.

 * I found that TcErrors.relevantBindings was failing to zonk the
   origin of the constraint it was looking at, and hence failing to
   find some relevant bindings.  Easy to fix, and orthogonal to
   everything else, but hard to disentangle.

Some minor refactorig:

 * TcMType.newSimpleWanteds moves to Inst, renamed as newWanteds

 * TcClassDcl and TcInstDcls now have their own code for typechecking
   a method body, rather than sharing a single function. The shared
   function (ws TcClassDcl.tcInstanceMethodBody) didn't have much code
   and the differences were growing confusing.

 * Add new function TcRnMonad.pushLevelAndCaptureConstraints, and
   use it

 * Add new function Bag.catBagMaybes, and use it in TcSimplify

4 years agoPrint singleton consraints without parens
Simon Peyton Jones [Mon, 5 Jan 2015 12:56:46 +0000 (12:56 +0000)] 
Print singleton consraints without parens

The main change is in TypeRep.pprTheta, so we print
       Eq a
for a singleton, but
      (Eq a, Show a)
for multiple constraints.

There are lots of trivial knock-on changes to error messages

4 years agoUse a less fragile method for defaulting
Simon Peyton Jones [Mon, 5 Jan 2015 10:53:37 +0000 (10:53 +0000)] 
Use a less fragile method for defaulting

When doing top-level defaulting, in TcSimplify.applyDefaultingRules, we
were temporarily making a unification variable equal to the default type
(Integer, say, or Float), as a 'given', and trying to solve. But this
relied on the unification variable being untouchable, which seems
complicated.  It's much simpler just to generate a new set of
constraints to solve, using newWantedEvVarNC in disambigGroup.

(I tripped over an ASSERT failure, and this solved it in a robust way.)

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

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

See Note [Partial type signatures and generalisation] in TcBinds

4 years agoReplace fixVarSet with transCloVarSet
Simon Peyton Jones [Sat, 3 Jan 2015 23:36:09 +0000 (23:36 +0000)] 
Replace fixVarSet with transCloVarSet

I think the new implementation is a bit more efficient, because
it uses a work-list, rather than iterating over the entire set
every time

4 years agoModify a couple of error messages slightly
Simon Peyton Jones [Sat, 3 Jan 2015 23:27:21 +0000 (23:27 +0000)] 
Modify a couple of error messages slightly

In particular
  In the type signature for:
     f :: Int -> Int
I added the colon

Also reword the "maybe you haven't applied a function to enough arguments?"
suggestion to make grammatical sense.

These tiny changes affect a lot of error messages.

4 years agoUpdaete perf numbers for 32-bit machines
Simon Peyton Jones [Tue, 6 Jan 2015 12:29:03 +0000 (12:29 +0000)] 
Updaete perf numbers for 32-bit machines

4 years agoMake the location in TcLclEnv and CtLoc into a RealSrcSpan
Simon Peyton Jones [Tue, 6 Jan 2015 12:28:37 +0000 (12:28 +0000)] 
Make the location in TcLclEnv and CtLoc into a RealSrcSpan

Previously it was a SrcSpan, which can be an UnhelpulSrcSpan,
but actually for TcLclEnv and CtLoc we always know it is
a real source location, and it's good to make the types
reflect that fact.

There is a continuing slight awkwardness (not new with this
patch) about what "file name" to use for GHCi code.  Current
we say "<interactive>" which seems just about OK.

4 years agosubmodule update: remove html dependency from nofib.
Edward Z. Yang [Mon, 5 Jan 2015 21:20:46 +0000 (13:20 -0800)] 
submodule update: remove html dependency from nofib.

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
4 years agoUpdate Cabal submodule to latest 1.22 snapshot
Herbert Valerio Riedel [Sat, 3 Jan 2015 22:17:14 +0000 (23:17 +0100)] 
Update Cabal submodule to latest 1.22 snapshot

4 years agoFix #9243 so recompilation avoidance works with -fno-code
Edward Z. Yang [Sat, 27 Dec 2014 18:50:01 +0000 (10:50 -0800)] 
Fix #9243 so recompilation avoidance works with -fno-code

Summary:
Where we track timestamps of object files, also track timestamps
for interface files.  When -fno-code -fwrite-interface is enabled, use
the interface file timestamp as an extra check to see if the files are
up-to-date.  We had to apply this logic to one-shot and make modes.

This fix would be good to merge into 7.10; it makes using -fno-code
-fwrite-interface for flywheel type checking usable.

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

Reviewers: austin

Subscribers: carter, thomie

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

GHC Trac Issues: #9243

4 years agoDon't do a half-hearted recompilation check in compileOne
Edward Z. Yang [Sat, 27 Dec 2014 05:56:54 +0000 (21:56 -0800)] 
Don't do a half-hearted recompilation check in compileOne

Summary:
The isNothing maybe_old_linkable check predates
48bc81ad466edfc80237015dbe5d78ba70eb5095, which fixed #481 by requiring
recompilation information to be passed in as an argument to compileOne.
As a result, the check here is redundant: the client has already taken
a look at the object file to see if it is available or not.

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

Reviewers: simonmar, austin

Subscribers: carter, thomie

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

4 years agoMark T9938 as not broken
Joachim Breitner [Sat, 3 Jan 2015 13:39:52 +0000 (14:39 +0100)] 
Mark T9938 as not broken

either one of the two recent commits (d8d0031, fd97d2a) fixed it, or
there is some nondeterminism here. See #9938.

4 years agoWhen solving one Given from another, use the depth to control which way round
Simon Peyton Jones [Wed, 31 Dec 2014 10:21:43 +0000 (10:21 +0000)] 
When solving one Given from another, use the depth to control which way round

See Note [Replacement vs keeping].

There's a bit further to go with this change (to report unused givens).
But it's already an improvement; see the latent bug described in the Note.

4 years agoEliminate the final two calls to xCtEvidence
Simon Peyton Jones [Wed, 31 Dec 2014 10:02:24 +0000 (10:02 +0000)] 
Eliminate the final two calls to xCtEvidence

I always found calls to TcCanonical.xCtEvidence hard to grok; and I
found that we only had two left. This patch eliminates them, along
with xCtEvidence, its accompanying comments, and the auxiliary
XEvTerm type.

The two remaining calls were these:

 * One was in newSCWorkFromFlavored, where we'd already done
   case-splitting for given/wanted/derived.  So inlining the xCtEvidence
   made the code simpler, clearer, and faster.

 * The other was in canTuple; here all of xCtEvidence's functionality
   was needed, but inlining again made a net gain in code size and
   clarity.

4 years agoComments only, mainly on superclasses
Simon Peyton Jones [Tue, 30 Dec 2014 16:36:36 +0000 (16:36 +0000)] 
Comments only, mainly on superclasses

This tidies up all the comments about recursive superclasses
and when to add superclasses.  Lots of duplicate and contradictory
comments removed!

4 years agoComments only (mainly about HsWithBndrs)
Simon Peyton Jones [Tue, 30 Dec 2014 13:55:45 +0000 (13:55 +0000)] 
Comments only (mainly about HsWithBndrs)

4 years agoImprove documentation of -XFlexibleInstances
Simon Peyton Jones [Tue, 30 Dec 2014 10:58:15 +0000 (10:58 +0000)] 
Improve documentation of -XFlexibleInstances

I ended up introducing a new sub-section on instance termination.

4 years agoUpdate nofib submodule, unbreak cryptarithm2
Joachim Breitner [Tue, 30 Dec 2014 11:49:40 +0000 (12:49 +0100)] 
Update nofib submodule, unbreak cryptarithm2

4 years agoRefine test case for #9938
Joachim Breitner [Tue, 30 Dec 2014 10:38:25 +0000 (11:38 +0100)] 
Refine test case for #9938

By passing -O2, the bug appears depending on the order of clauses in
"solve", hence adding T9938B as the other variant.

Currently, T9938 is marked as broken, but maybe the bug is actually in
T9938B, where something (possibly inlining, as suggested by rwbarton)
affected the requirement to link against transformers.

4 years agoTest case for #9938
Joachim Breitner [Mon, 29 Dec 2014 18:37:19 +0000 (19:37 +0100)] 
Test case for #9938

Marked as known_broken

4 years agoSkip T2276_ghci on Darwin, since stdcall is not supported.
Edward Z. Yang [Mon, 29 Dec 2014 16:36:21 +0000 (11:36 -0500)] 
Skip T2276_ghci on Darwin, since stdcall is not supported.

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

Test Plan: validate

Reviewers: austin, erikd

Reviewed By: erikd

Subscribers: erikd, carter, thomie

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

4 years agoFix system linker on Mac OS X
Peter Trommler [Mon, 29 Dec 2014 16:33:24 +0000 (11:33 -0500)] 
Fix system linker on Mac OS X

Summary:
Flag `-l:` is GNU ld specific and not supported by the
Mac OS X link editor. So we create a temporary file name
lib<tmpname>.<so_ext> and link with the standard -l<tmpname>
option on Linux and OS X.

Fixes #9875

Test Plan: validate on Mac OS X

Reviewers: austin, hvr, ezyang

Reviewed By: ezyang

Subscribers: carter, thomie, ezyang

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

GHC Trac Issues: #9875

4 years agoFix `heapSizeSuggesionAuto` typo (#9934)
Herbert Valerio Riedel [Mon, 29 Dec 2014 08:14:05 +0000 (09:14 +0100)] 
Fix `heapSizeSuggesionAuto` typo (#9934)

This was introduced in 1617a10a (re #5364)

4 years agoLlvmCodeGen cross-compiling fixes (#9895)
Erik de Castro Lopo [Sat, 27 Dec 2014 10:11:52 +0000 (21:11 +1100)] 
LlvmCodeGen cross-compiling fixes (#9895)

Summary:
* Throw an error when cross-compiling without a target definition.
  When cross compiling via LLVM, a target 'datalayout' and 'triple' must
  be defined or LLVM will generate code for the compile host instead of
  the compile target.

* Add aarch64-unknown-linux-gnu target.
  The datalayout and triple lines were found by using clang to compile a
  small C program and -emit-llvm to get the LLVM IR output.

Signed-off-by: Erik de Castro Lopo <erikd@mega-nerd.com>
Test Plan: validate

Reviewers: rwbarton, carter, hvr, bgamari, austin

Reviewed By: austin

Subscribers: carter, thomie, garious

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

GHC Trac Issues: #9895

4 years agoSupport pattern synonyms in GHCi (fixes #9900)
Dr. ERDI Gergo [Sun, 28 Dec 2014 03:51:00 +0000 (11:51 +0800)] 
Support pattern synonyms in GHCi (fixes #9900)

This involves recognizing lines starting with `"pattern "` as declarations,
keeping non-exported pattern synonyms in `deSugar`, and including
pattern synonyms in the result of `hscDeclsWithLocation`.

4 years agoUpdate validate-settings.mk
Herbert Valerio Riedel [Sun, 28 Dec 2014 10:54:44 +0000 (11:54 +0100)] 
Update validate-settings.mk

This drops a couple of `-fno-warn-*` which seem to have become obsolete
by now.

Moreover, with the cleaned up settings `./validate` passes with GHC
7.10.1 as bootstrap compiler.

4 years agoUpdate parallel submodule to 3.2.0.6 release
Herbert Valerio Riedel [Sun, 28 Dec 2014 10:14:50 +0000 (11:14 +0100)] 
Update parallel submodule to 3.2.0.6 release

4 years agoAdd export lists to some modules.
David Feuer [Sun, 28 Dec 2014 01:53:37 +0000 (20:53 -0500)] 
Add export lists to some modules.

Summary:
This makes it easier to see what is exported, and allows us to
add non-exported top-level names.

Reviewers: hvr, austin, ezyang

Reviewed By: ezyang

Subscribers: ezyang, carter, thomie

Projects: #ghc

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

GHC Trac Issues: #9852

4 years agoUpdate hoopl and hpc submodules
Herbert Valerio Riedel [Sat, 27 Dec 2014 22:50:21 +0000 (23:50 +0100)] 
Update hoopl and hpc submodules

This removes compile warnings triggered by those modules due to redundant
imports and/or due to tabs

4 years agoAvoid redundant-import warning (w/o CPP)
Herbert Valerio Riedel [Sat, 27 Dec 2014 22:43:20 +0000 (23:43 +0100)] 
Avoid redundant-import warning (w/o CPP)

4 years agoUpdate hsc2hs submodule for de-tabbing
Herbert Valerio Riedel [Sat, 27 Dec 2014 22:39:18 +0000 (23:39 +0100)] 
Update hsc2hs submodule for de-tabbing

4 years agoUse directory-style database for bootstrapping database
Edward Z. Yang [Sat, 27 Dec 2014 15:57:30 +0000 (10:57 -0500)] 
Use directory-style database for bootstrapping database

Summary:
This allows GHC HEAD to be bootstrapped using 7.10.

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

Reviewers: austin

Subscribers: carter, thomie

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

GHC Trac Issues: #9652

4 years agoWe do emit a warning for stdcall now.
Edward Z. Yang [Sat, 27 Dec 2014 15:10:37 +0000 (10:10 -0500)] 
We do emit a warning for stdcall now.

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
4 years agoRun T9762 only if dynamic libraries are available
Joachim Breitner [Sat, 27 Dec 2014 15:01:54 +0000 (16:01 +0100)] 
Run T9762 only if dynamic libraries are available

4 years agoCopy GHC's config.guess/sub over libffi's versions
Herbert Valerio Riedel [Sat, 27 Dec 2014 08:11:16 +0000 (09:11 +0100)] 
Copy GHC's config.guess/sub over libffi's versions

This should address #9924 as GHC's config.guess/sub versions need to be
up to date anyway.

4 years ago2nd attempt to fix T9032 test-case
Herbert Valerio Riedel [Thu, 25 Dec 2014 22:16:28 +0000 (23:16 +0100)] 
2nd attempt to fix T9032 test-case

First attempt via 7a2c9dde24b72f wasn't working properly. This attempt
should work better as it doesn't cause the makefile recipe to fail which
causes `make` to emit additional varying output.

4 years agoFix linker interaction between Template Haskell and HPC (#9762)
Reid Barton [Tue, 23 Dec 2014 21:53:16 +0000 (16:53 -0500)] 
Fix linker interaction between Template Haskell and HPC (#9762)

Summary:
I'm not really happy about perpetuating the hackish fix for #8696,
but at least in the context of building with -fhpc, the performance
cost should be negligible.

I'm suspicious about PlainModuleInitLabel and the Windows stuff too,
but I don't know what it does / can't test it (respectively) so I'll
leave those alone for now.

Hopefully out-of-process TH will save us from these hacks some day.

The test is an adaptation of T8696. It's a bit more awkward since
I couldn't think of a way to get cross-module tickbox references
without optimizations (inlining), but ghci doesn't permit -O for
some reason.

Test Plan: harbormaster; validate

Reviewers: austin

Reviewed By: austin

Subscribers: carter, thomie

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

GHC Trac Issues: #9762

Conflicts:
testsuite/tests/ghci/scripts/all.T

4 years agoMake ghc -e fail on invalid declarations
Reid Barton [Tue, 23 Dec 2014 21:16:29 +0000 (16:16 -0500)] 
Make ghc -e fail on invalid declarations

Summary:
Note: This commit includes an API change to GhciMonad.runDecls
to allow the caller to determine whether the declarations were
run successfully or not.

Test Plan: harbormaster

Reviewers: austin

Reviewed By: austin

Subscribers: carter, thomie

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

4 years agoMake ghc -e not exit on valid import commands (#9905)
Reid Barton [Tue, 23 Dec 2014 20:22:01 +0000 (15:22 -0500)] 
Make ghc -e not exit on valid import commands (#9905)

Summary:
Some Trues and Falses were mixed up due to Bool being used in
different senses in different parts of GHCi.

Test Plan: harbormaster; validate

Reviewers: austin

Reviewed By: austin

Subscribers: carter, thomie

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

GHC Trac Issues: #9905

Conflicts:
ghc/InteractiveUI.hs

4 years agoFixup edd233acc19d269385 (T9032 test)
Herbert Valerio Riedel [Tue, 23 Dec 2014 17:10:20 +0000 (18:10 +0100)] 
Fixup edd233acc19d269385 (T9032 test)

This is not a proper fix as the `x` in `make[x]: ...` changes depending on how
the testsuite was called. So this probably only works when invoked via ./validate.

4 years agoTest earlier for self-import (Trac #9032)
Simon Peyton Jones [Tue, 23 Dec 2014 15:59:30 +0000 (15:59 +0000)] 
Test earlier for self-import (Trac #9032)

This patch makes the renamer check for self-import, especially when
dependencies change, because the typechecker can fall over if that
happens.

I'm still uneasy about *indirect* self-import, but I'll leave that for
another day

4 years agoAttempt to improve cleaning
Simon Peyton Jones [Tue, 23 Dec 2014 15:45:09 +0000 (15:45 +0000)] 
Attempt to improve cleaning

I found several tests that failed when the interface file format changed,
due to leftover .hi file droppings.

I'm not sure I've done this right, but it should be a bit better

4 years agoA bit of refactoring to TcErrors
Simon Peyton Jones [Tue, 23 Dec 2014 15:44:00 +0000 (15:44 +0000)] 
A bit of refactoring to TcErrors

This replaces a bunch of boolean flags in ReportErrCtxt with
an algebraic data type to say how to handle expression holes
and type holes

No change in functionality; I just found myself unable to understand
the code easily, when thinking about something else.  Result is
quite nice, I think.

4 years agoComments only
Simon Peyton Jones [Tue, 23 Dec 2014 15:41:59 +0000 (15:41 +0000)] 
Comments only

4 years agoAdd a couple of missing cases to isTcReflCo and isTcReflCo_maybe
Simon Peyton Jones [Tue, 23 Dec 2014 15:40:54 +0000 (15:40 +0000)] 
Add a couple of missing cases to isTcReflCo and isTcReflCo_maybe

4 years agoEliminate so-called "silent superclass parameters"
Simon Peyton Jones [Tue, 23 Dec 2014 15:39:50 +0000 (15:39 +0000)] 
Eliminate so-called "silent superclass parameters"

The purpose of silent superclass parameters was to solve the
awkward problem of superclass dictinaries being bound to bottom.
See THE PROBLEM in Note [Recursive superclasses] in TcInstDcls

Although the silent-superclass idea worked,

  * It had non-local consequences, and had effects even in Haddock,
    where we had to discard silent parameters before displaying
    instance declarations

  * It had unexpected peformance costs, shown up by Trac #3064 and its
    test case.  In monad-transformer code, when constructing a Monad
    dictionary you had to pass an Applicative dictionary; and to
    construct that you neede a Functor dictionary. Yet these extra
    dictionaries were often never used.  (All this got much worse when
    we added Applicative as a superclass of Monad.) Test T3064
    compiled *far* faster after silent superclasses were eliminated.

  * It introduced new bugs.  For example SilentParametersOverlapping,
    T5051, and T7862, all failed to compile because of instance overlap
    directly because of the silent-superclass trick.

So this patch takes a new approach, which I worked out with Dimitrios
in the closing hours before Christmas.  It is described in detail
in THE PROBLEM in Note [Recursive superclasses] in TcInstDcls.

Seems to work great!

Quite a bit of knock-on effect

 * The main implementation work is in tcSuperClasses in TcInstDcls
   Everything else is fall-out

 * IdInfo.DFunId no longer needs its n-silent argument
   * Ditto IDFunId in IfaceSyn
   * Hence interface file format changes

 * Now that DFunIds do not have silent superclass parameters, printing
   out instance declarations is simpler. There is tiny knock-on effect
   in Haddock, so that submodule is updated

 * I realised that when computing the "size of a dictionary type"
   in TcValidity.sizePred, we should be rather conservative about
   type functions, which can arbitrarily increase the size of a type.
   Hence the new datatype TypeSize, which has a TSBig constructor for
   "arbitrarily big".

 * instDFunType moves from TcSMonad to Inst

 * Interestingly, CmmNode and CmmExpr both now need a non-silent
   (Ord r) in a couple of instance declarations. These were previously
   silent but must now be explicit.

 * Quite a bit of wibbling in error messages

4 years agoAdd a small comment
Simon Peyton Jones [Mon, 22 Dec 2014 14:35:24 +0000 (14:35 +0000)] 
Add a small comment

4 years agoalways use 'mkdir -p' and fix missing dir (fixes #9876)
Joe Hillenbrand [Tue, 23 Dec 2014 15:15:20 +0000 (09:15 -0600)] 
always use 'mkdir -p' and fix missing dir (fixes #9876)

Summary: Signed-off-by: Joe Hillenbrand <joehillen@gmail.com>

Reviewers: thomie, austin

Reviewed By: thomie, austin

Subscribers: carter, thomie

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

GHC Trac Issues: #9876

4 years agodwarf: sync getIdFromTrivialExpr with exprIsTrivial (test break028 and others)
Sergei Trofimovich [Tue, 23 Dec 2014 14:55:06 +0000 (08:55 -0600)] 
dwarf: sync getIdFromTrivialExpr with exprIsTrivial (test break028 and others)

Summary:
The bug manifests when built with
    EXTRA_HC_OPTS += -g

+++ ./ghci.debugger/scripts/break028.run.stderr 2014-12-19 23:08:46.199876621 +0000
@@ -0,0 +1,11 @@
+ghc-stage2: panic! (the 'impossible' happened)
+  (GHC version 7.9.20141219 for x86_64-unknown-linux):
+       getIdFromTrivialExpr x_alJ
+
+Please report this as a GHC bug:  http://www.haskell.org/ghc/reportabug
+
+
+<interactive>:3:1: Not in scope: ‘g’
+
+<interactive>:3:3: Not in scope: data constructor ‘False’

Signed-off-by: Sergei Trofimovich <siarheit@google.com>
Reviewers: simonmar, austin, scpmw

Reviewed By: scpmw

Subscribers: carter, thomie

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

4 years agoRename NamedWildcards flag to NamedWildCards
Thomas Winant [Tue, 23 Dec 2014 14:48:29 +0000 (08:48 -0600)] 
Rename NamedWildcards flag to NamedWildCards

Summary:
Mind the capital C. As there is already a flag RecordWildCards with a capital
C, we should at least try to be consistent in the spelling of WildCards.

Test Plan: validate

Reviewers: goldfire, simonpj, austin

Reviewed By: simonpj, austin

Subscribers: carter, thomie

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

4 years agoFix panic on :kind _ in GHCi (Trac #9879)
Thomas Winant [Tue, 23 Dec 2014 14:48:15 +0000 (08:48 -0600)] 
Fix panic on :kind _ in GHCi (Trac #9879)

Summary:
Running `:kind _` in GHCi produced a panic, fix it by extracting the
wildcards. Now, `:kind _` produces `_ :: k0`. Unfortunately, a `0` is
added after the kind is tidied and I haven't found a way to get rid of
it...

This does not fix the other panic involving TemplateHaskell mentioned
in #9879.

Test Plan: new test GHCiWildcardKind should pass

Reviewers: austin, simonpj

Reviewed By: austin

Subscribers: simonpj, carter, thomie, monoidal

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

GHC Trac Issues: #9879

4 years agodocs: create 7.12.1 relnotes
Austin Seipp [Tue, 23 Dec 2014 14:46:59 +0000 (08:46 -0600)] 
docs: create 7.12.1 relnotes

Signed-off-by: Austin Seipp <austin@well-typed.com>
4 years agofix spInfoSrcLoc field name
Facundo Domínguez [Mon, 22 Dec 2014 21:20:11 +0000 (19:20 -0200)] 
fix spInfoSrcLoc field name

Reviewed By: austin

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