ghc.git
7 years agoFix caller/callee register saving on Win64
Ian Lynagh [Fri, 23 Mar 2012 21:08:53 +0000 (21:08 +0000)] 
Fix caller/callee register saving on Win64

7 years agoDisable some debug prints that a plain +RTS -DS was enabling
Ian Lynagh [Thu, 22 Mar 2012 10:55:29 +0000 (10:55 +0000)] 
Disable some debug prints that a plain +RTS -DS was enabling

7 years agoImplement the Adjustor for Win64
Ian Lynagh [Wed, 21 Mar 2012 23:47:59 +0000 (23:47 +0000)] 
Implement the Adjustor for Win64

7 years agoOnly support stdcall in Adjustor.c on i386
Ian Lynagh [Wed, 21 Mar 2012 16:07:14 +0000 (16:07 +0000)] 
Only support stdcall in Adjustor.c on i386

7 years agoDetab Adjustor.c
Ian Lynagh [Wed, 21 Mar 2012 16:06:39 +0000 (16:06 +0000)] 
Detab Adjustor.c

7 years agoFixes for the calling convention on Win64
Ian Lynagh [Wed, 21 Mar 2012 14:38:53 +0000 (14:38 +0000)] 
Fixes for the calling convention on Win64

In particular, fixes for FP arguments

7 years agoRename allArgRegs to allIntArgRegs
Ian Lynagh [Wed, 21 Mar 2012 12:30:12 +0000 (12:30 +0000)] 
Rename allArgRegs to allIntArgRegs

7 years agoFix for Win64 codegen
Ian Lynagh [Tue, 20 Mar 2012 16:11:04 +0000 (16:11 +0000)] 
Fix for Win64 codegen

We need to leave stack space for arguments that we are passing in
registers.

7 years agoCode tidy-up: Use RET_NN in stg_block_async
Ian Lynagh [Tue, 20 Mar 2012 15:00:08 +0000 (15:00 +0000)] 
Code tidy-up: Use RET_NN in stg_block_async

7 years agoFix the Win32 build: A CPP symbol name was wrong
Ian Lynagh [Tue, 20 Mar 2012 14:52:53 +0000 (14:52 +0000)] 
Fix the Win32 build: A CPP symbol name was wrong

7 years agoFix stg_block_async on registerised Win64
Ian Lynagh [Tue, 20 Mar 2012 01:32:03 +0000 (01:32 +0000)] 
Fix stg_block_async on registerised Win64

7 years agoFix mkDerivedConstants on Win64
Ian Lynagh [Mon, 19 Mar 2012 23:20:26 +0000 (23:20 +0000)] 
Fix mkDerivedConstants on Win64

It was assuming that long's are word-sized, which is not the case on
Win64.

7 years agoDefine allArgRegs correctly for Win64
Ian Lynagh [Mon, 19 Mar 2012 15:06:22 +0000 (15:06 +0000)] 
Define allArgRegs correctly for Win64

7 years agoUse win32AllocStack on Win64 too
Ian Lynagh [Mon, 19 Mar 2012 15:06:05 +0000 (15:06 +0000)] 
Use win32AllocStack on Win64 too

7 years agoFix the registers used in StgRun on Win64
Ian Lynagh [Mon, 19 Mar 2012 12:07:41 +0000 (12:07 +0000)] 
Fix the registers used in StgRun on Win64

7 years agoMerge branch 'master' of win:c:/m64/head2
Ian Lynagh [Sun, 18 Mar 2012 17:21:31 +0000 (17:21 +0000)] 
Merge branch 'master' of win:c:/m64/head2

7 years agoFixes for the threaded RTS on Win64
Ian Lynagh [Sun, 18 Mar 2012 16:30:25 +0000 (16:30 +0000)] 
Fixes for the threaded RTS on Win64

7 years agoIf we say we're treating StdCall as CCall, then actually do so
Ian Lynagh [Sun, 18 Mar 2012 15:42:31 +0000 (15:42 +0000)] 
If we say we're treating StdCall as CCall, then actually do so

7 years agoFixed for unregisterised Windows builds
Ian Lynagh [Sun, 18 Mar 2012 12:19:47 +0000 (12:19 +0000)] 
Fixed for unregisterised Windows builds

7 years agoMerge branch 'master' of darcs.haskell.org:/srv/darcs//ghc
Ian Lynagh [Sat, 17 Mar 2012 14:57:14 +0000 (14:57 +0000)] 
Merge branch 'master' of darcs.haskell.org:/srv/darcs//ghc

7 years agoFix building with devel snapshots
Ian Lynagh [Sat, 17 Mar 2012 14:55:16 +0000 (14:55 +0000)] 
Fix building with devel snapshots

7 years agoFix fingerprints for merge commits.
Geoffrey Mainland [Sat, 17 Mar 2012 09:36:15 +0000 (09:36 +0000)] 
Fix fingerprints for merge commits.

fingerprint.py executes `git log HEAD^.. --pretty=oneline` to get the hash of
the HEAD commit for each git repo, but didn't properly handle the case where the
HEAD commit is a merge. In that case, more than one hash will be output. Now
fingerprint.py executes `git log -1 --pretty=oneline` instead.

7 years agoMerge branch 'master' of win:c:/m64/head/.
Ian Lynagh [Fri, 16 Mar 2012 23:30:43 +0000 (23:30 +0000)] 
Merge branch 'master' of win:c:/m64/head/.

7 years agoMerge branch 'master' of darcs.haskell.org:/srv/darcs//ghc
Ian Lynagh [Fri, 16 Mar 2012 23:27:16 +0000 (23:27 +0000)] 
Merge branch 'master' of darcs.haskell.org:/srv/darcs//ghc

7 years agoAnother Win64 fix
Ian Lynagh [Fri, 16 Mar 2012 23:17:27 +0000 (23:17 +0000)] 
Another Win64 fix

7 years agoSoem more Wind64 fixes
Ian Lynagh [Fri, 16 Mar 2012 23:03:02 +0000 (23:03 +0000)] 
Soem more Wind64 fixes

We may need to do this differently once we get as far as building the
RTS in the dyn ways.

7 years agoFix documentation about TH and kind-promotion single-quote notation (Trac #4197)
Simon Peyton Jones [Fri, 16 Mar 2012 16:12:31 +0000 (16:12 +0000)] 
Fix documentation about TH and kind-promotion single-quote notation (Trac #4197)

7 years agoComplete the fix for Trac #5882
Simon Peyton Jones [Fri, 16 Mar 2012 15:57:20 +0000 (15:57 +0000)] 
Complete the fix for Trac #5882

7 years agoFor now, turn off the SEH code on Win64
Ian Lynagh [Fri, 16 Mar 2012 15:56:04 +0000 (15:56 +0000)] 
For now, turn off the SEH code on Win64

7 years agoRemove an unused variable; fixes a warning on Win64
Ian Lynagh [Fri, 16 Mar 2012 15:23:53 +0000 (15:23 +0000)] 
Remove an unused variable; fixes a warning on Win64

7 years agoAdd missing items to templateHaskellNames
Simon Peyton Jones [Fri, 16 Mar 2012 14:46:51 +0000 (14:46 +0000)] 
Add missing items to templateHaskellNames

7 years agoMerge branch 'master' of http://darcs.haskell.org/ghc
Simon Peyton Jones [Fri, 16 Mar 2012 14:19:00 +0000 (14:19 +0000)] 
Merge branch 'master' of darcs.haskell.org/ghc

7 years agoFix path to windres on Win64
Ian Lynagh [Fri, 16 Mar 2012 01:34:21 +0000 (01:34 +0000)] 
Fix path to windres on Win64

7 years agoFix a tiny bug in cwrapper.c
Ian Lynagh [Fri, 16 Mar 2012 01:20:35 +0000 (01:20 +0000)] 
Fix a tiny bug in cwrapper.c

Caught by -Werror

7 years agoFix another copy/paste-o in aclocal.m4
Ian Lynagh [Thu, 15 Mar 2012 21:06:36 +0000 (21:06 +0000)] 
Fix another copy/paste-o in aclocal.m4

7 years agoMore Win64 aclocal fixes
Ian Lynagh [Thu, 15 Mar 2012 19:42:00 +0000 (19:42 +0000)] 
More Win64 aclocal fixes

7 years agoMerge branch 'master' of win:c:/m64/head/.
Ian Lynagh [Thu, 15 Mar 2012 18:14:40 +0000 (18:14 +0000)] 
Merge branch 'master' of win:c:/m64/head/.

7 years agoFix tarball name for Win64 mingw
Ian Lynagh [Thu, 15 Mar 2012 18:14:05 +0000 (18:14 +0000)] 
Fix tarball name for Win64 mingw

7 years agoFix copy/paste error
Ian Lynagh [Thu, 15 Mar 2012 18:12:53 +0000 (18:12 +0000)] 
Fix copy/paste error

7 years agoMore fixes for Win64
Ian Lynagh [Thu, 15 Mar 2012 16:38:39 +0000 (16:38 +0000)] 
More fixes for Win64

7 years agoSome Win64 fixes
Ian Lynagh [Thu, 15 Mar 2012 16:54:34 +0000 (16:54 +0000)] 
Some Win64 fixes

Convert some sizes, as CLong is a different size to pointers

7 years agoMore aclocal fixes for Win64
Ian Lynagh [Thu, 15 Mar 2012 15:53:12 +0000 (15:53 +0000)] 
More aclocal fixes for Win64

7 years agoSupport making a Win64 in-tree mingw
Ian Lynagh [Thu, 15 Mar 2012 15:47:57 +0000 (15:47 +0000)] 
Support making a Win64 in-tree mingw

The Win64 mingw zip file isn't in the ghc-tarballs repo, as it's >300M.

7 years agoFix PprC for 64bit platforms with 32bit long's
Ian Lynagh [Thu, 15 Mar 2012 15:28:04 +0000 (15:28 +0000)] 
Fix PprC for 64bit platforms with 32bit long's

e.g. Win64

7 years agoFix stg_block_async on unreg compilers
Ian Lynagh [Thu, 15 Mar 2012 15:07:59 +0000 (15:07 +0000)] 
Fix stg_block_async on unreg compilers

This is only defined on Windows, so hadn't come up in our Linux
unreg builds.

7 years agoBuild the Windows ghci wrapper with stage1, not stage0
Ian Lynagh [Thu, 15 Mar 2012 14:58:38 +0000 (14:58 +0000)] 
Build the Windows ghci wrapper with stage1, not stage0

We use the in-place windres, which isn't guaranteed to work with the
stage0 compiler.

7 years agoSome configure/aclocal fixes for Win64
Ian Lynagh [Thu, 15 Mar 2012 14:56:37 +0000 (14:56 +0000)] 
Some configure/aclocal fixes for Win64

7 years agoImprove debug WARNING message
Simon Peyton Jones [Wed, 14 Mar 2012 17:28:50 +0000 (17:28 +0000)] 
Improve debug WARNING message

7 years agoAdd fixity declarations to Template Haskell (Trac #1541)
Simon Peyton Jones [Wed, 14 Mar 2012 17:28:32 +0000 (17:28 +0000)] 
Add fixity declarations to Template Haskell (Trac #1541)

There is an accompanying patch to the template-haskell library

7 years agoDeal with kind variables brought into scope by a kind signature
Simon Peyton Jones [Wed, 14 Mar 2012 17:26:20 +0000 (17:26 +0000)] 
Deal with kind variables brought into scope by a kind signature

This fixes Trac #5937, where a kind variable is mentioned only
in the kind signature of a GADT
   data SMaybe :: (k -> *) -> Maybe k -> * where ...

The main change is that the tcdKindSig field of TyData and TyFamily
now has type Maybe (HsBndrSig (LHsKind name)), where the HsBndrSig
part deals with the kind variables that the signature may bind.

I also removed the now-unused PostTcKind field of UserTyVar and
KindedTyVar.

7 years agoRemove debug trace
Simon Peyton Jones [Wed, 14 Mar 2012 13:30:25 +0000 (13:30 +0000)] 
Remove debug trace

7 years agoImprove error message when interpreter is not enabled (Trac #5919)
Simon Peyton Jones [Mon, 12 Mar 2012 09:05:25 +0000 (09:05 +0000)] 
Improve error message when interpreter is not enabled (Trac #5919)

7 years agoFix another bug in CorePrep eta-reduction (fixes Trac #5915)
Simon Peyton Jones [Mon, 12 Mar 2012 09:04:32 +0000 (09:04 +0000)] 
Fix another bug in CorePrep eta-reduction (fixes Trac #5915)

CorePrep has its own eta reducer (for tiresome reasons) and it was
being sloppy about making sure it didn't change termination behaviour.
Thanks to Michal Palka for discovering this.

7 years agoFix closure_type_names, BLACKHOLE and BLOCKING_QUEUE were swapped
Joachim Breitner [Mon, 12 Mar 2012 10:21:05 +0000 (11:21 +0100)] 
Fix closure_type_names, BLACKHOLE and BLOCKING_QUEUE were swapped

7 years agoAllow Any as an argument type to foreign prim functions
Joachim Breitner [Mon, 12 Mar 2012 08:20:12 +0000 (09:20 +0100)] 
Allow Any as an argument type to foreign prim functions

Real primops can take boxed arguments, and the Cmm code will receive the
pointer to the object on the Haskell heap, e.g. for unpackClosure#. To
be able to implement such a function in a "foreign prim" call, this
needs to be allowed as well. By only allowing Any here (instead of
arbitrary types), it is clearer that the function will not receive the
value in any marshalled form, but just the raw pointer. Haskell code
using such functions are likely to use unsafeCoerce# to turn a haskell
value into a value of type Any.

7 years agofix _BTM field of closureFlags[], and document what it means (#5923)
Simon Marlow [Wed, 14 Mar 2012 12:56:00 +0000 (12:56 +0000)] 
fix _BTM field of closureFlags[], and document what it means (#5923)

7 years agoTweak to flag parsing (#5921)
Simon Marlow [Tue, 13 Mar 2012 11:30:13 +0000 (11:30 +0000)] 
Tweak to flag parsing (#5921)

-o2/Main.exe should be an invalid flag, not a linker input

7 years agodefine TABLES_NEXT_TO_CODE in ghcautoconf.h (#5933)
Simon Marlow [Tue, 13 Mar 2012 09:26:41 +0000 (09:26 +0000)] 
define TABLES_NEXT_TO_CODE in ghcautoconf.h (#5933)

7 years agoIn ghci, reload after :e. Patch from Paolo Capriotti. Fixes #5343
Ian Lynagh [Sun, 11 Mar 2012 17:52:48 +0000 (17:52 +0000)] 
In ghci, reload after :e. Patch from Paolo Capriotti. Fixes #5343

7 years agoTypo in comment
Ian Lynagh [Fri, 9 Mar 2012 18:34:31 +0000 (18:34 +0000)] 
Typo in comment

7 years agoMerge branch 'master' of http://darcs.haskell.org/ghc
Simon Peyton Jones [Fri, 9 Mar 2012 17:19:22 +0000 (17:19 +0000)] 
Merge branch 'master' of darcs.haskell.org/ghc

7 years agoDocumentation update: Enumerations of Integers are subject to list fusion (#5670)
Joachim Breitner [Thu, 1 Dec 2011 21:31:05 +0000 (22:31 +0100)] 
Documentation update: Enumerations of Integers are subject to list fusion (#5670)

7 years agoWrap quotes in an error message
Simon Peyton Jones [Fri, 9 Mar 2012 15:26:19 +0000 (15:26 +0000)] 
Wrap quotes in an error message

7 years agoDon't defer type errors when evaluating a GHCi expression
Patrick Palka [Wed, 7 Mar 2012 00:27:40 +0000 (19:27 -0500)] 
Don't defer type errors when evaluating a GHCi expression

It is unhelpful here because the expression will get evaluated right
away anyway, thus emitting a redundant warning followed by an equivalent
runtime exception. If the expression were an ill-typed pure expression,
_three_ equivalent type errors would get emitted (due to the two-phase
typechecking done in 'Plan C')

7 years agoMerge branch 'master' of http://darcs.haskell.org/ghc
Simon Peyton Jones [Fri, 9 Mar 2012 13:28:29 +0000 (13:28 +0000)] 
Merge branch 'master' of darcs.haskell.org/ghc

7 years agoImprove reporting of type-class errors
Simon Peyton Jones [Fri, 9 Mar 2012 13:27:52 +0000 (13:27 +0000)] 
Improve reporting of type-class errors

Inspired by suggestions on Trac #5858, the errors now
mention "potential instances".  Lots of refactoring
as usual, but localised.

7 years agoTweak the HADDOCK_DOCS regex in validate
Ian Lynagh [Fri, 9 Mar 2012 00:59:59 +0000 (00:59 +0000)] 
Tweak the HADDOCK_DOCS regex in validate

It's less precise now, but still good enough for what we need, and
this way we don't need to have literal tabs in the file.

7 years agoghc-pkg: make sure info messages go to stdout and errors to stderr (#3818)
Paolo Capriotti [Wed, 7 Mar 2012 18:40:44 +0000 (18:40 +0000)] 
ghc-pkg: make sure info messages go to stdout and errors to stderr (#3818)

7 years agoGive a unfolding argument discount proportional to the number of available arguments
Max Bolingbroke [Wed, 7 Mar 2012 19:44:31 +0000 (19:44 +0000)] 
Give a unfolding argument discount proportional to the number of available arguments

Ensures that h1 gets inlined into its use sites in cases like:

"""
h1 k = k undefined undefined undefined
        undefined undefined undefined
        undefined undefined undefined
        undefined undefined undefined
        undefined undefined undefined
        undefined undefined undefined

a = h1 (\x _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -> x)
b = h1 (\_ x _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -> x)
"""

I've benchmarked this on nofib (albeit recompiling only the
benchmarks, not the library) and it hardly shifts the numbers - binary
size is up by 0.1% at most (average 0.0%) and the worst-case
allocation increase is 0.2% (best case -0.1%, 0.0% average).

If you also rebuild the libraries with this change, the only further
change is a +0.2% allocation increase in cacheprof. So this looks like
a pretty low-risk change that will considerably benefit certain
programs.

7 years agoAdd Haiku platform (#5828)
Paolo Capriotti [Wed, 7 Mar 2012 14:20:31 +0000 (14:20 +0000)] 
Add Haiku platform (#5828)

7 years agoGet correct options when calling 'clang' inplace of 'as' (#5903)
David Terei [Mon, 5 Mar 2012 04:53:37 +0000 (23:53 -0500)] 
Get correct options when calling 'clang' inplace of 'as' (#5903)

7 years agoDeal with promoted DataCons in interface files (fixes Trac #5881)
Simon Peyton Jones [Mon, 5 Mar 2012 09:27:28 +0000 (09:27 +0000)] 
Deal with promoted DataCons in interface files (fixes Trac #5881)

7 years agoFix Trac #5892: a coding errors
Simon Peyton Jones [Sun, 4 Mar 2012 09:41:52 +0000 (09:41 +0000)] 
Fix Trac #5892: a coding errors

We had a lazy pattern
  gres@(gre:_) = blah
and then a test for (null gres).  But I'd forgotten
that a demand for *any* of variables in the pattern
matches *all* of the variables in the entire pattern.
So the test for (null gres) was matching the cons,
which defeats the purpose.

7 years agoMake type trimming more conservative with -XDataKinds (fixes Trac #5912)
Simon Peyton Jones [Sun, 4 Mar 2012 09:05:34 +0000 (09:05 +0000)] 
Make type trimming more conservative with -XDataKinds (fixes Trac #5912)

See Note [When we can't trim types] in TidyPgm.  The real solution
is to do a full dependency analysis, but that seems rather overkill.

7 years agoTidy up the handling of kind generalisation
Simon Peyton Jones [Sun, 4 Mar 2012 08:25:05 +0000 (08:25 +0000)] 
Tidy up the handling of kind generalisation

In particular in forall abc. <blah> we should
kind generalise over <blah> as well as over the
kinds of a,b,c.

This fixes bug (in Trac #5862, caught by Lint) in the handling of
  data SMaybe a where
     SNothing :: SMaybe 'Nothing
where I didn't get a sufficiently general kind. And it's simpler.

7 years agoAttach INLINE pagmas in mutually recursive bindings
Simon Peyton Jones [Sun, 4 Mar 2012 08:18:09 +0000 (08:18 +0000)] 
Attach INLINE pagmas in mutually recursive bindings

This should fix #5895.  It seems that I was silently
ignoring INLINE pragmas in mutual recursion, which is
not the right thing at all.

7 years agoImproved debug printing with -dverbose-core2core
Simon Peyton Jones [Sun, 4 Mar 2012 08:08:46 +0000 (08:08 +0000)] 
Improved debug printing with -dverbose-core2core

(Roman wanted this.)

7 years agoWhite space only
Simon Peyton Jones [Fri, 2 Mar 2012 16:33:25 +0000 (16:33 +0000)] 
White space only

7 years agoHurrah! This major commit adds support for scoped kind variables,
Simon Peyton Jones [Fri, 2 Mar 2012 16:32:58 +0000 (16:32 +0000)] 
Hurrah!  This major commit adds support for scoped kind variables,
which (finally) fills out the functionality of polymorphic kinds.
It also fixes numerous bugs.

Main changes are:

Renaming stuff
~~~~~~~~~~~~~~
* New type in HsTypes:
     data HsBndrSig sig = HsBSig sig [Name]
  which is used for type signatures in patterns, and kind signatures
  in types.  So when you say
       f (x :: [a]) = x ++ x
  or
       data T (f :: k -> *) (x :: *) = MkT (f x)
  the signatures in both cases are a HsBndrSig.

* The [Name] in HsBndrSig records the variables bound by the
  pattern, that is 'a' in the first example, 'k' in the second,
  and nothing in the third.  The renamer initialises the field.

* As a result I was able to get rid of
     RnHsSyn.extractHsTyNames :: LHsType Name -> NameSet
  and its friends altogether.  Deleted the entire module!
  This led to some knock-on refactoring; in particular the
  type renamer now returns the free variables just like the
  term renamer.

Kind-checking types: mainly TcHsType
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
A major change is that instead of kind-checking types in two
passes, we now do one. Under the old scheme, the first pass did
kind-checking and (hackily) annotated the HsType with the
inferred kinds; and the second pass desugared the HsType to a
Type.  But now that we have kind variables inside types, the
first pass (TcHsType.tc_hs_type) can go straight to Type, and
zonking will squeeze out any kind unification variables later.

This is much nicer, but it was much more fiddly than I had expected.

The nastiest corner is this: it's very important that tc_hs_type
uses lazy constructors to build the returned type. See
Note [Zonking inside the knot] in TcHsType.

Type-checking type and class declarations: mainly TcTyClsDecls
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
I did tons of refactoring in TcTyClsDecls.  Simpler and nicer now.

Typechecking bindings: mainly TcBinds
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
I rejigged (yet again) the handling of type signatures in TcBinds.
It's a bit simpler now.  The main change is that tcTySigs goes
right through to a TcSigInfo in one step; previously it was split
into two, part here and part later.

Unsafe coercions
~~~~~~~~~~~~~~~~
Usually equality coercions have exactly the same kind on both
sides.  But we do allow an *unsafe* coercion between Int# and Bool,
say, used in
    case error Bool "flah" of { True -> 3#; False -> 0# }
-->
    (error Bool "flah") |> unsafeCoerce Bool Int#

So what is the instantiation of (~#) here?
   unsafeCoerce Bool Int# :: (~#) ??? Bool Int#
I'm using OpenKind here for now, but it's un-satisfying that
the lhs and rhs of the ~ don't have precisely the same kind.

More minor
~~~~~~~~~~
* HsDecl.TySynonym has its free variables attached, which makes
  the cycle computation in TcTyDecls.mkSynEdges easier.

* Fixed a nasty reversed-comparison bug in FamInstEnv:
  @@ -490,7 +490,7 @@ lookup_fam_inst_env' match_fun one_sided ie fam tys
     n_tys = length tys
     extra_tys = drop arity tys
     (match_tys, add_extra_tys)
-       | arity > n_tys = (take arity tys, \res_tys -> res_tys ++ extra_tys)
+       | arity < n_tys = (take arity tys, \res_tys -> res_tys ++ extra_tys)
        | otherwise     = (tys,            \res_tys -> res_tys)

7 years agoFix crash caused by allowing duplicate *-modules in the context (#5904)
Simon Marlow [Fri, 2 Mar 2012 11:57:32 +0000 (11:57 +0000)] 
Fix crash caused by allowing duplicate *-modules in the context (#5904)

7 years agoDrop the per-task timing stats, give a summary only (#5897)
Simon Marlow [Fri, 2 Mar 2012 10:53:34 +0000 (10:53 +0000)] 
Drop the per-task timing stats, give a summary only (#5897)

We were keeping around the Task struct (216 bytes) for every worker we
ever created, even though we only keep a maximum of 6 workers per
Capability.  These Task structs accumulate and cause a space leak in
programs that do lots of safe FFI calls; this patch frees the Task
struct as soon as a worker exits.

One reason we were keeping the Task structs around is because we print
out per-Task timing stats in +RTS -s, but that isn't terribly useful.
What is sometimes useful is knowing how *many* Tasks there were.  So
now I'm printing a single-line summary, this is for the program in

  TASKS: 2001 (1 bound, 31 peak workers (2000 total), using -N1)

So although we created 2k tasks overall, there were only 31 workers
active at any one time (which is exactly what we expect: the program
makes 30 safe FFI calls concurrently).

This also gives an indication of how many capabilities were being
used, which is handy if you use +RTS -N without an explicit number.

7 years agoIn --make, give an indication of why a module is being recompiled
Simon Marlow [Thu, 1 Mar 2012 13:55:41 +0000 (13:55 +0000)] 
In --make, give an indication of why a module is being recompiled

e.g.

[3 of 5] Compiling C                (C.hs, C.o)
[4 of 5] Compiling D                (D.hs, D.o) [C changed]
[5 of 5] Compiling E                (E.hs, E.o) [D changed]

The main motivation for this is so that we can give the user a clue
when something is being recompiled because the flags changed:

[1 of 1] Compiling Test2            ( Test2.hs, Test2.o ) [flags changed]

7 years agoOmit -osuf/-odir -hisuf/-hidir and -stubdir from the flag checker
Simon Marlow [Tue, 28 Feb 2012 09:28:09 +0000 (09:28 +0000)] 
Omit -osuf/-odir -hisuf/-hidir and -stubdir from the flag checker

The reasoning is that GHC will only skip recompilation if it has found
a valid up-to-date object file and .hi file, so there is no need to
also check that these flags have not changed, and indeed there are
valid reasons to want to change them.

7 years agoGHCi: add :seti, for options that apply only at the prompt (#3217)
Simon Marlow [Wed, 29 Feb 2012 16:23:08 +0000 (16:23 +0000)] 
GHCi: add :seti, for options that apply only at the prompt (#3217)

GHCi now maintains two DynFlags: one that applies to whole modules
loaded with :load, and one that applies to things typed at the prompt
(expressions, statements, declarations, commands).

  The :set command modifies both DynFlags.  This is for backwards
  compatibility: users won't notice any difference.

  The :seti command applies only to the interactive DynFlags.

Additionally, I made a few changes to ":set" (with no arguments):

  * Now it only prints out options that differ from the defaults,
    rather than the whole list.

  * There is a new variant, ":set -a" to print out all options (the
    old behaviour).

  * It also prints out language options.

e.g.

Prelude> :set
options currently set: none.
base language is: Haskell2010
with the following modifiers:
  -XNoDatatypeContexts
  -XNondecreasingIndentation
GHCi-specific dynamic flag settings:
other dynamic, non-language, flag settings:
  -fimplicit-import-qualified
warning settings:

":seti" (with no arguments) does the same as ":set", but for the
interactive options.  It also has the "-a" option.

The interactive DynFlags are kept in the InteractiveContext, and
copied into the HscEnv at the appropriate points (all in HscMain).

There are some new GHC API operations:

-- | Set the 'DynFlags' used to evaluate interactive expressions.
setInteractiveDynFlags :: GhcMonad m => DynFlags -> m ()

-- | Get the 'DynFlags' used to evaluate interactive expressions.
getInteractiveDynFlags :: GhcMonad m => m DynFlags

-- | Sets the program 'DynFlags'.
setProgramDynFlags :: GhcMonad m => DynFlags -> m [PackageId]

-- | Returns the program 'DynFlags'.
getProgramDynFlags :: GhcMonad m => m DynFlags

Note I have not completed the whole of the plan outlined in #3217 yet:
when in the context of a loaded module we don't take the interactive
DynFlags from that module.  That needs some more refactoring and
thinking about, because we'll need to save and restore the original
interactive DynFlags.

This solves the immediate problem that people are having with the new
flag checking in 7.4.1, because now it is possible to set language
options in ~/.ghci that do not affect loaded modules and thereby cause
recompilation.

7 years agoFix validate with tables-next-to-code off
Ian Lynagh [Mon, 27 Feb 2012 23:12:11 +0000 (23:12 +0000)] 
Fix validate with tables-next-to-code off

7 years agoFix the unregisterised build; fixes #5901
Ian Lynagh [Mon, 27 Feb 2012 22:03:39 +0000 (22:03 +0000)] 
Fix the unregisterised build; fixes #5901

7 years agoWhitespace only in nativeGen/AsmCodeGen.lhs
Ian Lynagh [Mon, 27 Feb 2012 19:05:20 +0000 (19:05 +0000)] 
Whitespace only in nativeGen/AsmCodeGen.lhs

7 years agoFix copy/paste error in the docs
Ian Lynagh [Mon, 27 Feb 2012 12:35:34 +0000 (12:35 +0000)] 
Fix copy/paste error in the docs

7 years agoraiseAsync: cope with ATOMICALLY_FRAMES inside UPDATE_FRAMES (#5866)
Simon Marlow [Mon, 27 Feb 2012 14:32:44 +0000 (14:32 +0000)] 
raiseAsync: cope with ATOMICALLY_FRAMES inside UPDATE_FRAMES (#5866)

7 years agoslight tweak to help text (#5896)
Simon Marlow [Mon, 27 Feb 2012 13:39:50 +0000 (13:39 +0000)] 
slight tweak to help text (#5896)

7 years agoMention -threaded in the intro to Concurrent Haskell
Simon Marlow [Mon, 27 Feb 2012 13:33:11 +0000 (13:33 +0000)] 
Mention -threaded in the intro to Concurrent Haskell

And make the docs a bit more concrete.

7 years agoRemove documentation that a feature was missing, because it is not. (#5896)
Simon Marlow [Mon, 27 Feb 2012 13:17:40 +0000 (13:17 +0000)] 
Remove documentation that a feature was missing, because it is not. (#5896)

7 years agoAdd sync-all new-workdir
Johan Tibell [Fri, 17 Feb 2012 03:09:55 +0000 (19:09 -0800)] 
Add sync-all new-workdir

This command calls git-new-workdir (a separate script in git's contrib
directory) on all repos.  Useful to create multiple build trees, without
cloning the repos.

Usage:
  sync-all new-workdir <new_workdir> [<branch>]

7 years agoReplace createDirectoryHierarchy with createDirectoryIfMissing True
Takano Akio [Wed, 22 Feb 2012 02:18:29 +0000 (10:18 +0800)] 
Replace createDirectoryHierarchy with createDirectoryIfMissing True

createDirectoryHierarchy consisted of an existence test followed by
createDirectory, which failed if that directory was creted just after
the test. createDirectoryifMissing does not have this problem.

7 years agotyops
Gabor Greif [Sun, 22 Jan 2012 22:41:08 +0000 (23:41 +0100)] 
tyops

7 years agoformatting tweaks
Gabor Greif [Thu, 19 Jan 2012 14:02:34 +0000 (15:02 +0100)] 
formatting tweaks

7 years ago(some) tabs -> spaces
Gabor Greif [Wed, 18 Jan 2012 17:06:47 +0000 (18:06 +0100)] 
(some) tabs -> spaces

7 years agotabs -> spaces
Gabor Greif [Thu, 19 Jan 2012 13:54:02 +0000 (14:54 +0100)] 
tabs -> spaces

7 years ago(some) tabs -> spaces
Gabor Greif [Wed, 18 Jan 2012 17:05:32 +0000 (18:05 +0100)] 
(some) tabs -> spaces

7 years ago(some) tabs -> spaces
Gabor Greif [Wed, 18 Jan 2012 17:03:40 +0000 (18:03 +0100)] 
(some) tabs -> spaces