simonpj@microsoft.com [Fri, 5 Sep 2008 17:14:58 +0000 (17:14 +0000)]
Make ASSERT2 mention msg even when debug is off (avoid warnings)
Ian Lynagh [Fri, 5 Sep 2008 12:21:09 +0000 (12:21 +0000)]
Move the "This is a generated file" to the top of GHC.Prim
Ian Lynagh [Fri, 5 Sep 2008 12:14:43 +0000 (12:14 +0000)]
Make genprimopcode generate code that haddock 2 understands
Mainly this means adding a binding for all the exports, e.g. as well as
gtAddr# :: Addr# -> Addr# -> Bool
we also generate
gtAddr# = let x = x in x
Ian Lynagh [Thu, 4 Sep 2008 18:50:42 +0000 (18:50 +0000)]
Define _BSD_SOURCE in Stg.h
This means S_ISSOCK gets defined on Linux
Ian Lynagh [Thu, 4 Sep 2008 15:49:31 +0000 (15:49 +0000)]
Add a note explaining a couple of seq's
Ross Paterson [Thu, 4 Sep 2008 16:48:16 +0000 (16:48 +0000)]
fix message for missing packages
An incorrect libraries/ prefix was being added.
dias@eecs.harvard.edu [Thu, 4 Sep 2008 13:51:55 +0000 (13:51 +0000)]
add assertion to check that UniqFM is only passed "positive" uniques
The insertion code in UniqFM fails if a unique key
produces a negative FastInt. I've added an assertion to check
that each insertion uses a positive Unique.
Where do the negative uniques come from? Both Simom M and
I have run into this problem when computing hashes for data structures.
In both cases, we have avoided the problem by ensuring that
the hashes remain positive.
Ian Lynagh [Thu, 4 Sep 2008 12:54:12 +0000 (12:54 +0000)]
Add darcs-all usage info
Ian Lynagh [Wed, 3 Sep 2008 22:35:08 +0000 (22:35 +0000)]
Re-merge concurrent,timeout,unique,st,getopt into base
Ian Lynagh [Wed, 3 Sep 2008 20:41:01 +0000 (20:41 +0000)]
Fix ifBuildable
Required libraries now have 3 fields in the packages file, not 2
simonpj@microsoft.com [Wed, 3 Sep 2008 12:02:28 +0000 (12:02 +0000)]
Major change in compilation of instance declarations (fix Trac #955, #2328)
This patch makes an important change to the way that dictionary
functions are handled. Before, they were unconditionally marked
INLIINE, but all the code written by the user in the instance
was inside that unconditionally-inlined function. Result: massive
code bloat in programs that use complicated instances.
This patch make instances behave rather as if all the methods
were written in separate definitions. That dramatically reduces
bloat. The new plan is described in TcInstDcls
Note [How instance declarations are translated]
Everything validates. The major code-bloat bug is squashed: in particular
DoCon is fine now (Trac #2328) and I believe that #955 is also better.
Nofib results:
Binary sizes
-1 s.d. +2.5%
+1 s.d. +3.1%
Average +2.8%
Allocations
-1 s.d. -6.4%
+1 s.d. +2.5%
Average -2.0%
Note that 2% improvement. Some programs improve by 20% (rewrite)!
Two get slightly worse: pic (2.1%), and gameteb (3.2%), but all others
improve or stay the same.
I am not absolutely 100% certain that all the corners are correct; for
example, when default methods are marked INLINE, are they inlined? But
overall it's better.
It's nice that the patch also removes a lot of code. I deleted some
out of date comments, but there's something like 100 fewer lines of
code in the new version! (In the line counts below, there are a lot
of new comments.)
simonpj@microsoft.com [Wed, 3 Sep 2008 11:56:29 +0000 (11:56 +0000)]
Improved specialisation of recursive groups
This patch significantly improves the way in which recursive groups
are specialised. This turns out ot be very important when specilising
the bindings that (now) emerge from instance declarations.
Consider
let rec { f x = ...g x'...
; g y = ...f y'.... }
in f 'a'
Here we specialise 'f' at Char; but that is very likely to lead to
a specialisation of 'g' at Char. We must do the latter, else the
whole point of specialisation is lost. This was not happening before.
The whole thing is desribed in
Note [Specialising a recursive group]
Simon
simonpj@microsoft.com [Tue, 2 Sep 2008 10:30:43 +0000 (10:30 +0000)]
Cope with recent versions of Perl that lack the $* feature
Simon Marlow [Tue, 2 Sep 2008 12:45:04 +0000 (12:45 +0000)]
FIX #2554: GHC.TopHandler.{runIO,runNonIO} should be GC roots
Simon Marlow [Mon, 1 Sep 2008 13:26:14 +0000 (13:26 +0000)]
Check the modification times of libraries in --make link step
When linking in --make we check the modification time of the
executable against the modification time of the object files, and only
re-link if any object file is newer. However, we should also check
the modification times of packages, since the recompilation checker
also tracks dependencies in packages.
In a GHC build this means that if you recompile stage2 and don't
manage to change any fingerpints, we won't recompile Main but we'll
still re-link it.
Ian Lynagh [Sun, 31 Aug 2008 15:24:28 +0000 (15:24 +0000)]
Make the dynlibs, ghci and ncg flags manual too
Ian Lynagh [Sat, 30 Aug 2008 23:54:30 +0000 (23:54 +0000)]
Squash a space leak
Ian Lynagh [Sat, 30 Aug 2008 19:26:19 +0000 (19:26 +0000)]
Fix a space leak
Ian Lynagh [Sat, 30 Aug 2008 19:25:26 +0000 (19:25 +0000)]
fix a space leak
Ian Lynagh [Sun, 31 Aug 2008 15:21:03 +0000 (15:21 +0000)]
Make ghc.cabal's editline flag manual, to simplify the Makefile
Judah Jacobson [Sat, 30 Aug 2008 21:14:29 +0000 (21:14 +0000)]
Don't build ghc in stage1 with editline (since we already don't build ghci). Fixes #2557.
Ian Lynagh [Sat, 30 Aug 2008 19:13:05 +0000 (19:13 +0000)]
If we want a profiled GHC then use -auto-all when building the GHC lib
Ian Lynagh [Sat, 30 Aug 2008 16:16:37 +0000 (16:16 +0000)]
Fix building the GHC API with profiling
Ian Lynagh [Sat, 30 Aug 2008 12:30:32 +0000 (12:30 +0000)]
Actually, that's use a separate haddock repo for now
Everything will be changing in a couple of weeks anyway, so let's
just keep it simple for the time being.
Ian Lynagh [Fri, 29 Aug 2008 15:21:41 +0000 (15:21 +0000)]
Always build docs/{ext-core,storage-mgt}, even when making a bindist
kili@outback.escape.de [Thu, 28 Aug 2008 15:03:31 +0000 (15:03 +0000)]
Fix linkage on OpenBSD.
Ian Lynagh [Fri, 29 Aug 2008 13:00:19 +0000 (13:00 +0000)]
push-all needs to skip repos, as we don't know how to push to them
Alternatives would be to have a GHC haddock repo (which I believe David
is keen to avoid), or to put the SSH URL in the packages file too (which
would probably mean moving to a more structured file format).
Ian Lynagh [Thu, 28 Aug 2008 22:17:01 +0000 (22:17 +0000)]
Remove install-inplace directories when cleaning
Ian Lynagh [Thu, 28 Aug 2008 19:15:12 +0000 (19:15 +0000)]
Use the right ghc-pkg when installing the rts package
Ian Lynagh [Thu, 28 Aug 2008 18:24:47 +0000 (18:24 +0000)]
When installing, we can't rely on the ghc-pkg we just installed to work
If DESTDIR is defined, then on *nix machines ghc-pkg is a script that
doesn't point to the right path. Therefore we use the ghc-pkg binary
directly.
Ian Lynagh [Thu, 28 Aug 2008 18:21:48 +0000 (18:21 +0000)]
Tweaks for installs into a DESTDIR
Ian Lynagh [Thu, 28 Aug 2008 15:14:29 +0000 (15:14 +0000)]
Handle the html target in compiler/ and ghc/
Ian Lynagh [Thu, 28 Aug 2008 14:23:20 +0000 (14:23 +0000)]
Turn on optimisation for stage2 when validating
This brings my validate down from 22mins to 16 mins.
Compiling stage2 takes longer, but we gain a faster haddock, faster
running of the tests, and faster building of the utils to be installed.
Ian Lynagh [Thu, 28 Aug 2008 14:22:10 +0000 (14:22 +0000)]
haddock 2 doc fixes
Ian Lynagh [Thu, 28 Aug 2008 13:23:16 +0000 (13:23 +0000)]
Remove an erroneous comma from the Makefile
Ian Lynagh [Thu, 28 Aug 2008 12:50:18 +0000 (12:50 +0000)]
Disambiguate some names in haddock comments
Ian Lynagh [Thu, 28 Aug 2008 12:48:14 +0000 (12:48 +0000)]
Update the build system to handle building and using haddock2
One side-effect of this is that we need to build the install-utils with
stage2 rather than stage1 as we need the ghc package.
Ian Lynagh [Thu, 28 Aug 2008 12:47:21 +0000 (12:47 +0000)]
Fix a haddock2 failure
Ian Lynagh [Thu, 28 Aug 2008 12:46:08 +0000 (12:46 +0000)]
Don't check that we have found haddock
We now use an in-tree haddock instead
Ian Lynagh [Wed, 27 Aug 2008 18:50:24 +0000 (18:50 +0000)]
Don't fail if libraries/bootstrapping already exists
Ian Lynagh [Wed, 27 Aug 2008 18:27:31 +0000 (18:27 +0000)]
When haddocking the libraries, tell Cabal where haddock is
We can't do it when configuring, because we haven't built haddock yet
Ian Lynagh [Thu, 14 Aug 2008 11:22:21 +0000 (11:22 +0000)]
Build haddock with the stage1 compiler
Ian Lynagh [Wed, 13 Aug 2008 22:01:58 +0000 (22:01 +0000)]
Teach darcs-all about absolute repos, and add haddock to packages
simonpj@microsoft.com [Thu, 28 Aug 2008 12:52:11 +0000 (12:52 +0000)]
Improve documentation of stolen syntax
This patch adds a section that summarises what syntax is stolen by
which flags. The section is at the end of the "syntactic extensions"
section of the manual.
simonpj@microsoft.com [Thu, 28 Aug 2008 12:10:06 +0000 (12:10 +0000)]
Fix Trac #2529: derived read for prefix constructor operators
simonpj@microsoft.com [Wed, 27 Aug 2008 15:33:22 +0000 (15:33 +0000)]
Fix Trac #745: improve error recoevery for type signatures
It turns out that fixing Trac #745 is easy using mapAndRecoverM,
and tidies up the code nicely in several places. Hurrah.
simonpj@microsoft.com [Wed, 27 Aug 2008 15:30:51 +0000 (15:30 +0000)]
Fix Trac #2538: better error messages when validating types
This fix solely concerns error messages, and uses a bit of contextual
information to suggest plausible flags.
It was rather more fiddly to implement than I expected. Oh well.
simonpj@microsoft.com [Wed, 27 Aug 2008 15:27:28 +0000 (15:27 +0000)]
Fix Trac #2520: duplicate symbols
The problem here was that were were quantifying over an *External* Name,
which causes no end of confusion. See Note [Const rule dicts] in DsBinds.
The fix is very easy, I'm happy to say.
simonpj@microsoft.com [Wed, 27 Aug 2008 15:25:40 +0000 (15:25 +0000)]
Only specialise on dictionaries that have some interesting structure
I discovered by accident that we were generating utterly useless
specialisations. See Note [Interesting dictionary arguments] in Specialise.
This patch used SimplUtils.interestingArg to restrict specialisation to
cases where the dictionary acutally has some information to give us.
simonpj@microsoft.com [Wed, 27 Aug 2008 15:19:26 +0000 (15:19 +0000)]
Better documentation for -XLiberalTypeSynonyms, and steal forall keyword
In my travels through the front end I discoverd that -XLiberalTypeSynonyms is
rather thinly described. Furthermore, it alleges that you can write a
forall on the RHS of a type synonym decl, so that means it should enable
the forall keyword.
Simon Marlow [Wed, 27 Aug 2008 10:24:14 +0000 (10:24 +0000)]
re-fix of #1205, fix #2542
New form of :load in GHCi:
> :load *A
forces A to be loaded as byte-code. See the manual for details. The
previous behaviour for specifying filenames vs. module names on the
command line and in :load has been restored.
The Target datatype has a new Bool field, which is True if the target
is allowed to be loaded from compiled code, or False otherwise, so
this functionality is available via the GHC API. guessTarget
understands the *-prefix form for specifying targets.
simonpj@microsoft.com [Wed, 27 Aug 2008 09:05:44 +0000 (09:05 +0000)]
Improve documentation of MagicHash and primitive types generally (Trac #2547)
Ian Lynagh [Tue, 26 Aug 2008 18:56:41 +0000 (18:56 +0000)]
Give locations of flag warnings/errors
Ian Lynagh [Tue, 26 Aug 2008 18:26:29 +0000 (18:26 +0000)]
Remove a now-redundant comment
Ian Lynagh [Tue, 26 Aug 2008 15:56:12 +0000 (15:56 +0000)]
Separate the static flag parser from the static global variables
This allows us to avoid a module import loop:
CmdLineParser -> SrcLoc -> Outputable -> StaticFlags -> CmdLineParser
Ian Lynagh [Tue, 26 Aug 2008 14:44:52 +0000 (14:44 +0000)]
Move pprFastFilePath from SrcLoc to Outputable
simonpj@microsoft.com [Tue, 26 Aug 2008 12:21:21 +0000 (12:21 +0000)]
Fix flaggery for RULES (cf Trac #2497)
This patch executes the plan described in the discussion in Trac #2497.
Specficially:
* Inside a RULE, switch on the forall-as-keyword in the lexer,
unconditionally. (Actually this is done by an earlier patch.)
* Merge the -XScopedTypeVariables and -XPatternSignatures flags,
and deprecate the latter. Distinguishing them isn't senseless,
but it's jolly confusing.
* Inside a RULE, switch on -XScopedTypeVariables unconditionally.
* Change -frewrite-rules to -fenable-rewrite-rules; deprecate the former.
Internally the DynFlag is now Opt_EnableRewriteRules.
There's a test in typecheck/should_compile/T2497.hs
Simon Marlow [Wed, 20 Aug 2008 13:29:11 +0000 (13:29 +0000)]
always treat 'forall' and '.' as reserved keywords inside RULES pragmas
simonpj@microsoft.com [Fri, 22 Aug 2008 13:34:27 +0000 (13:34 +0000)]
Fix a nasty float-in bug
This is a long-standing bug in FloatIn, which I somehow managed to
tickle (it's actually surprisingly hard to provoke which is why
it has not shown up before).
The problem was that we had a specialisation like this:
let
f_spec = ...
in let
{-# RULE f Int = f_spec #-}
f = ...
in
<body>
The 'f_spec' binding was being floated inside the binding for 'f',
which makes the RULE invalid becuase 'f_spec' isn't in scope.
We just need to add the free variables of the RULE in the right
places...
simonpj@microsoft.com [Thu, 21 Aug 2008 12:31:00 +0000 (12:31 +0000)]
Make rule printing wobble less
a) When generating specialisations, include the types in the name
of the rule, to avoid having rules with duplicate names.
(The rule name is used to put rules in canonical order for
fingerprinting.)
b) In Specialise and SpecConstr use a new function Rules.pprRulesForUser
to print rules in canonical order. This reduces unnecessary wobbling
in test output, notably in T2486
Ian Lynagh [Mon, 25 Aug 2008 21:41:24 +0000 (21:41 +0000)]
syb is now in its own package
Ian Lynagh [Mon, 25 Aug 2008 19:43:52 +0000 (19:43 +0000)]
Fix "runghc foo" where the program is foo.hs or foo.lhs
Ian Lynagh [Mon, 25 Aug 2008 19:09:12 +0000 (19:09 +0000)]
When making bindists, check that we know where we are
Ian Lynagh [Mon, 25 Aug 2008 18:32:47 +0000 (18:32 +0000)]
Fix the ghci script; fixes trac #2485
Ian Lynagh [Mon, 25 Aug 2008 15:42:49 +0000 (15:42 +0000)]
Update .darcs-boring for the new libraries, plus some other odds and ends
Ian Lynagh [Mon, 25 Aug 2008 14:59:08 +0000 (14:59 +0000)]
Read the packages file in strictly in darcs-all and push-all
This fixes a problem where darcs tries to update it while perl has it
open. On Windows this fails. Spotted by Claus Reinke.
Ian Lynagh [Mon, 25 Aug 2008 14:33:56 +0000 (14:33 +0000)]
Remove the InstallShield directory; it is no longer used
Ian Lynagh [Mon, 25 Aug 2008 14:32:14 +0000 (14:32 +0000)]
Remove the now-unused WindowsInstaller directory
Ian Lynagh [Mon, 25 Aug 2008 14:16:53 +0000 (14:16 +0000)]
Set datadir=libdir; fixes trac #2541
GHC needs package.conf and things like unlit to be in the same place
Ian Lynagh [Mon, 25 Aug 2008 12:09:07 +0000 (12:09 +0000)]
Get everything building with base 4 in the HEAD
Some things were using the base3 compat library.
Ian Lynagh [Sun, 24 Aug 2008 23:38:21 +0000 (23:38 +0000)]
Change references to the old BIN_DIST_TARBALL to the new BIN_DIST_TAR_BZ2
Ian Lynagh [Sun, 24 Aug 2008 17:51:06 +0000 (17:51 +0000)]
Fix the "have we got all the bootlibs" check
The packages file has an extra component (for "darcs" or "git") so we need
to take that into account when grepping.
Ian Lynagh [Sun, 24 Aug 2008 13:50:52 +0000 (13:50 +0000)]
concurrent, unique, timeout have now been split off from base
Ian Lynagh [Sun, 24 Aug 2008 13:50:32 +0000 (13:50 +0000)]
Actually tar up Windows bindists
Ian Lynagh [Sun, 24 Aug 2008 02:01:56 +0000 (02:01 +0000)]
getopt is now split off from base
Ian Lynagh [Sat, 23 Aug 2008 22:29:41 +0000 (22:29 +0000)]
st is now split off from base
Ian Lynagh [Thu, 21 Aug 2008 23:13:49 +0000 (23:13 +0000)]
Ignore install-docs in compiler/Makefile and ghc/Makefile
Ian Lynagh [Thu, 21 Aug 2008 22:35:37 +0000 (22:35 +0000)]
Fix making bindists
We were looking for executable things, but not requiring that they were
files. So we were adding lots of directories (and thus their contents)
to the bindists, massively inflating their size.
Ian Lynagh [Thu, 21 Aug 2008 17:31:02 +0000 (17:31 +0000)]
mk/cabal.mk now turns on -Wall
Ian Lynagh [Thu, 21 Aug 2008 17:30:51 +0000 (17:30 +0000)]
Fix warnings in runghc
Ian Lynagh [Thu, 21 Aug 2008 15:39:14 +0000 (15:39 +0000)]
Make some utils -Wall clean
Ian Lynagh [Thu, 21 Aug 2008 12:01:28 +0000 (12:01 +0000)]
unix is now warning-free
Ian Lynagh [Thu, 21 Aug 2008 11:06:20 +0000 (11:06 +0000)]
Fix references to exceptions from the RTS
We now need to make sure that they have been toException'd.
Also, the RTS doesn't know about the Deadlock exception any more.
Ian Lynagh [Thu, 21 Aug 2008 10:59:14 +0000 (10:59 +0000)]
It doesn't look like HSprel.def is used any more
Ian Lynagh [Thu, 21 Aug 2008 00:16:08 +0000 (00:16 +0000)]
base (and base3-compat) is no warning-free
Ian Lynagh [Wed, 20 Aug 2008 13:41:41 +0000 (13:41 +0000)]
Don't put symlinks in bindists, but the files they point at instead
Ian Lynagh [Mon, 18 Aug 2008 20:28:45 +0000 (20:28 +0000)]
Fix making it possible to build without the NCG
If
GhcWithNativeCodeGen = NO
then we don't build the NCG modules, and we define OMIT_NATIVE_CODEGEN
Ian Lynagh [Sun, 17 Aug 2008 21:08:51 +0000 (21:08 +0000)]
Comment fix
Ian Lynagh [Sun, 17 Aug 2008 21:02:26 +0000 (21:02 +0000)]
Remove GHC_TOP; we don't actually use it
Ian Lynagh [Sun, 17 Aug 2008 14:00:05 +0000 (14:00 +0000)]
We need to give make some more clues
Otherwise it can't work out how to make in ghc/ any more.
Ian Lynagh [Sun, 17 Aug 2008 12:33:11 +0000 (12:33 +0000)]
Change how we know whether or not we are validating
We now set Validating=YES in mk/are-validating.mk rather than on the
commandline. This means that if you build a tree with validate then
just running make in it will use the validate flags.
"make distclean" removes mk/are-validating.mk, putting us back in
standard build mode.
Ian Lynagh [Sun, 17 Aug 2008 12:10:00 +0000 (12:10 +0000)]
Don't clean the multi-stage stuff unless CLEAN_ALL_STAGES is YES
Ian Lynagh [Sun, 17 Aug 2008 11:42:02 +0000 (11:42 +0000)]
When making in compiler/, automatically make in ghc/ when we are done
Ian Lynagh [Sun, 17 Aug 2008 11:41:32 +0000 (11:41 +0000)]
Don't do the stage1 re-linking hack if we have GHC >= 6.9
Ian Lynagh [Sun, 17 Aug 2008 11:31:28 +0000 (11:31 +0000)]
Avoid scary "Package contains no library to register" message in installPackage
We only call register if we actually have a library to be registered
Simon Marlow [Thu, 21 Aug 2008 15:55:49 +0000 (15:55 +0000)]
Don't use the cc-options from packages when compiling .hc files
Now that we don't include any header files in .hc apart from our own,
the cc-options from packages are at best superfluous, so don't pass
them.
We still pass them to .c compilations, although I've just made changes
to Cabal so that cc-options from a .cabal file are not copied into the
InstalledPackageInfo. Most uses of cc-options in Cabal are clearly
intended to be local to the package, but they were being propagated
everywhere, almost certainly unintentionally.
The way is left open for Cabal to allow packages to specify cc-options
that get propagated in the future, if we find a use case for this.
simonpj@microsoft.com [Thu, 21 Aug 2008 12:35:02 +0000 (12:35 +0000)]
Improve error message when 'forall' is not a keyword
Simon Marlow [Thu, 21 Aug 2008 10:04:36 +0000 (10:04 +0000)]
move directory after Win32/unix
simonpj@microsoft.com [Thu, 21 Aug 2008 07:49:24 +0000 (07:49 +0000)]
Fix Haddock comments in TcGenDeriv
Simon Marlow [Wed, 20 Aug 2008 12:54:46 +0000 (12:54 +0000)]
Fix compacting GC on 64-bit machines
Some old experimental change leaked in with the parallel GC patches,
it seems