darcs patch: fix darcs-all --complete

Isaac Dupree isaacdupree at charter.net
Thu Aug 9 13:05:06 EDT 2007


Thu Aug  9 12:22:17 BRT 2007  Isaac Dupree <id at isaac.cedarswampstudios.org>
   * fix darcs-all --complete
   It was passing --complete on to darcs, which made darcs fail.


I didn't want to just push a patch to darcs-all without understanding 
possible consequences. (and is the darcs-all script used in other 
places, e.g. nhc or hugs, and copied between places? I don't really 
understand that either)

I already use a non-partial "ghc" repo and now I'm getting the rest 
non-partial because darcs partial support behaved too brokenly for me. 
I've already done just about all the downloading of old patches that I 
am likely to ever need to do, using this patch, by now (and made a 
.tar.gz backup in case darcs messes up my local HEAD copy).

Isaac
-------------- next part --------------
To: cvs-ghc at haskell.org
From: Isaac Dupree <id at isaac.cedarswampstudios.org>
Subject: darcs patch: fix darcs-all --complete
X-Mail-Originator: Darcs Version Control System
X-Darcs-Version: 1.0.9 (release)
DarcsURL: http://darcs.haskell.org/ghc
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=_"

--=_
Content-Type: text/plain
Content-Transfer-Encoding: quoted-printable

Thu Aug  9 12:22:17 BRT 2007  Isaac Dupree <id at isaac.cedarswampstudios.org>
  * fix darcs-all --complete
  It was passing --complete on to darcs, which made darcs fail.

--=_
Content-Type: text/x-darcs-patch; name="fix-darcs_all-__complete.dpatch"
Content-Transfer-Encoding: quoted-printable
Content-Description: A darcs patch for your repository!


New patches:

[fix darcs-all --complete
Isaac Dupree <id at isaac.cedarswampstudios.org>**20070809152217
 It was passing --complete on to darcs, which made darcs fail.
] {
hunk ./darcs-all 44
+my $complete =3D 0;
hunk ./darcs-all 99
-    if (! grep /(?:--complete|--partial)/, @_) {
+    if (not $complete and not grep /(?:--partial)/, @_) {
hunk ./darcs-all 147
+        elsif ($arg eq "--complete") {
+            $complete =3D 1;
+        }
}

Context:

[Cabal depends on -package unix when GHC <=3D 6.2
Simon Marlow <simonmar at microsoft.com>**20070809100139] =

[joinToTargets to emit fixup code even when movement graph contains cycles
Clemens Fruhwirth <clemens at endorphin.org>**20070714083241
 =

 First, cycles can only start of with registers and their destination
 must involve a register location. This is because memory locations are
 allocated exclusively for a virtual register and hence can never cause
 a conflict in the assignment, hence need no fixup code. Therefore, we
 only have to deal with InReg -> InReg, or InReg -> InReg/InMem
 movements.  =

 =

 The strategy is to take the first cycle element, which is guaranteed
 to start with a register, spill it to a fresh memory location, compute
 the fixup for the rest, and restore from the spill slot to its
 destinations. The "rest" will degenerate into an acyclic scc, so we do
 not need take care of the empty list case in CyclicScc. =

  ***END OF DESCRIPTION***
 =

 Place the long patch description above the ***END OF DESCRIPTION*** marker=
.
 The first line of this file will be the patch name.
 =

 =

 This patch contains the following changes:
 =

 M ./compiler/nativeGen/RegisterAlloc.hs -6 +27
] =

[Make SpecConstr specialise for constant arguments again
simonpj at microsoft.com**20070805220335
 =

 Consider
   lvl =3D Just True
 =

   foo :: Maybe Bool -> Int -> Int
   foo (Just True) i =3D i
   foo _           i =3D foo lvl i
 =

 SpecConstr should specialise foo, but it wasn't doing so (spotted
 by Roman).
 =

 Reason: lvl's unfolding wasn't in the cloned version of lvl.
 Solution: extend the value environment to record top-level bindings too
 =

 At the same time I made it work if 'lvl' is a lambda, in which case it
 is again worth specialisg.  This meant renaming ConEnv to ValueEnv,
 and adding a case for 'LambdaVal'.
 =

 (To make specialisation on lambdas work properly, we have to do lambda
 lifting as well, but this gets part of the way, and fixes a bug too.)
 =

 =

] =

[Comments only: explain why StgConApp is still useful
simonpj at microsoft.com**20070805214404] =

[Add missing case to sizeofPrimRep
simonpj at microsoft.com**20070804174759] =

[Fix Trac #1037
simonpj at microsoft.com**20070804174420
 =

 It makes *sense* for a foreign import to have a zero-sized return, thus
 =

   foreign import ccall foo :: Int -> State# RealWorld
 =

 but it's not clear that it's useful, and it requires some back-end (a
 Hint for void types) to make it go right through. It's not clear that
 we really want this facility, so rather than fixing the code
 generator, I'm just making the construct illegal for now.
 =

] =

[In GHCi, filter instances by what is in scope, not just by what is in scop=
e unqualified
simonpj at microsoft.com**20070804173539
 =

 Trac #1581 was doing too much filtering; it even filtered out intances =

 defined in this very module!  The new rule shows more instances, but
 hopefully not to many.
 =

 Furthermore I have moved the filtering out of TcRnDriver (where it does
 not belong) to InteractiveEval. And I've added a note to the documentation=
.
 =

] =

[Improve pretty-printing of 'foreign' declarations
simonpj at microsoft.com**20070804172151] =

[FIX read030 (error message wibble)
Simon Marlow <simonmar at microsoft.com>**20070809085817] =

[Fix the use of emptyCopyFlags
Ian Lynagh <igloo at earth.li>**20070808231620] =

[Removed a dependency on Cabal that caused a build failure when Cabal chang=
ed
Magnus Jonsson <magnus at smartelectronix.com>**20070808221029] =

[Add blurb in the user guide re stdout buffering differing between GHC and =
GHCi
Ian Lynagh <igloo at earth.li>**20070807193139] =

[Use emptyRegisterFlags and emptyCopyFlags for reduced fragility
Duncan Coutts <duncan.coutts at worc.ox.ac.uk>**20070806152824
 So we will inherit default values for any new flags that get added,
 so things should not break if new flags are added.
] =

[remove gratuitous usage of Double in favor of Rational
Isaac Dupree <id at isaac.cedarswampstudios.org>**20070807122234] =

[Warning police: eliminate all defaulting within stage1
Isaac Dupree <id at isaac.cedarswampstudios.org>**20070807121454
 Defaulting makes compilation of multiple modules more complicated (re: #14=
05)
 Although it was all locally within functions, not because of the module
 monomorphism-restriction... but it's better to be clear what's meant, anyw=
ay.
 I changed some that were defaulting to Integer, to explicit Int, where Int
 seemed appropriate rather than Integer.
] =

[NOINLINE the global FastString.string_table
Isaac Dupree <id at isaac.cedarswampstudios.org>**20070807002859] =

[comment FastMutInt possibilities
Isaac Dupree <id at isaac.cedarswampstudios.org>**20070806211914] =

[Follow Cabal changes
Ian Lynagh <igloo at earth.li>**20070805175116] =

[Add a --supported-languages flag
Ian Lynagh <igloo at earth.li>**20070805153341
 Print the list of strings that are accepted in a LANGUAGE pragma,
 or as a -XFoo flag. (No can be prepended to any of the strings).
] =

[Whitespace
Ian Lynagh <igloo at earth.li>**20070805150302] =

[Add Distribution.System to compat
Ian Lynagh <igloo at earth.li>**20070805132856] =

[Canonicalise flags in error message
Ian Lynagh <igloo at earth.li>**20070804211415] =

[Canonicalise the flag format in the user guide
Ian Lynagh <igloo at earth.li>**20070804210145] =

[We now need to pass a version to extensionsToGHCFlag
Ian Lynagh <igloo at earth.li>**20070804192431] =

[Fix -fallow* flags
Ian Lynagh <igloo at earth.li>**20070804164930] =

[Add more of Cabal to compat
Ian Lynagh <igloo at earth.li>**20070804162241] =

[Rename Opt_Allow* to Opt_* to match the language names
Ian Lynagh <igloo at earth.li>**20070804155425] =

[Rename Opt_TH to Opt_TemplateHaskell to match the language name
Ian Lynagh <igloo at earth.li>**20070804154805] =

[Add -fparr deprecated flag, and change -XParr to -XPArr
Ian Lynagh <igloo at earth.li>**20070804154505
 -fparr did exist before, it just wasn't documented.
] =

[Rename Opt_FFI to Opt_ForeignFunctionInterface to match the language name
Ian Lynagh <igloo at earth.li>**20070804154234] =

[Remove many of the new flag variants permitted
Ian Lynagh <igloo at earth.li>**20070804153412
 Now we only allow -XFooBar syntax, not alternate case, hyphens or -f.
 There are some deprecated -f flags accordingly.
] =

[Add a comment about when maybePrefixMatch can be removed
Ian Lynagh <igloo at earth.li>**20070804153333] =

[Typo in a comment
Ian Lynagh <igloo at earth.li>**20070804020156] =

[Update the boring file
Ian Lynagh <igloo at earth.li>**20070803183835] =

[Catch exceptions on Windows, to stop it popping up dialog boxes
Ian Lynagh <igloo at earth.li>**20070803183229
 Adaptated from code from Sigbjorn Finne
] =

[FIX -ddump-cmm by temporarily disabling the gc_target part (#1582)
Simon Marlow <simonmar at microsoft.com>**20070803102143
 =

] =

[FIX part of #1372, improvements to the recompilation checker
Simon Marlow <simonmar at microsoft.com>**20070803102045
 This patch adds a check that each imported module is listed in
 the dependencies from the previous interface.  It catches the
 following cases and forces recompilation:
    - an exposed package has been upgraded
    - we are compiling with different package flags
    - a home module that was shadowing a package module has been removed
    - a new home module has been added that shadows a package module
 =

 I haven't yet added the package timestamping as described in #1372.
] =

[mkLiveness: when calculating the size of a parameter, round up not down.
Simon Marlow <simonmar at microsoft.com>**20070803093229
 Fixes read002 on x86_64 (and maybe others).  The stg_ap_f_info info
 table had the wrong liveness on it, because the float had been treated
 as having zero size.
] =

[Add PA dfuns to VectInfo
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070803020936] =

[Add a --ignore-failure flag to push-all script
Ian Lynagh <igloo at earth.li>**20070802213300] =

[Dump renamer output with -ddump-rn for command-line entry in ghci
simonpj at microsoft.com**20070802165110] =

[Fix Trac #1525
simonpj at microsoft.com**20070802111204
 =

 A Name used to have a Parent, but no longer has.  When we want to =

 print info about data type T and data constructor MkT, the info about
 T already describes MkT so we want to discard the latter.  Now that
 Names don't have a Parent, we must do that in a different way,
 using implicitTyThings
 =

 Test is ghci011
 =

 =

] =

[Wibbble to last fix to generalisation (again!); fixes Trac #1575
simonpj at microsoft.com**20070802085136] =

[Small error-message change
simonpj at microsoft.com**20070801141339] =

[Vectorise DataCon workers
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070802043712] =

[Include original tycon in PAInstance
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070802042938] =

[More refactoring
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070802022859] =

[Refactoring
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070802022840] =

[Thread lifting context implicitly in the vectorisation monad
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070802022503] =

[Fix calls to replicatePA
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070801045656] =

[Trace vectorisation failures
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070801045640] =

[Reuse the lifting context Var
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070801042441] =

[Move code
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070801042404] =

[Nicer names for hoisted functions
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070801041322] =

[Improve closure generation for functions with multiple parameters
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070801034119] =

[Rename functions
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070801014056] =

[Use new closure generation code in vectorisation
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070801013728] =

[More vectorisation-related smart constructors
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070731065024] =

[Use VectCore stuff in vectorisation
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070731063448] =

[Move vectorisation-related smart constructors into a separate module
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070731062711] =

[Use a Var instead of a CoreExpr as the lifting context during vectorisatio=
n
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070731061610] =

[Simplify handling of variables during vectorisation
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070731060917] =

[Simplify closure generation code
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070731055419] =

[New closure generation code
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070731044029] =

[Refactoring
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070731040621] =

[Optimise parallel arrays of products
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070726071308] =

[FIX recent PPC crashes introduced by the pointer-tagging patch (I hope)
Simon Marlow <simonmar at microsoft.com>**20070801140231
 There was an accidental endian-dependency in changes related to RET_FUN.
 The changes in question weren't strictly necessary - they were left
 over from the original workaround for the compacting GC problems, so
 I've just reverted those changes in this patch, which should hopefully
 fix the PPC problems.
] =

[revert accidental modification of version number
Simon Marlow <simonmar at microsoft.com>**20070801133938] =

[Fix a knot-tying bug with ghc --make
simonpj at microsoft.com**20070801124907
 =

 This bug showed up when I touched Data.Generics.Schemes, and then said
 	make build.library.base
 This compiles the base library with --make, and I got an assertion failure
 in TcIface.  The explanation is in Note [Tying the knot] in TcIface.
 =

 As well as fixing the bug, I also impoved the assertion message.
 =

 This might fix or improve other knot-tying problems with --make
 =

] =

[Spelling error
simonpj at microsoft.com**20070801124852] =

[Clarify comments
simonpj at microsoft.com**20070706094836] =

[Fix generalisation during type inference (again); fixes Trac #1564
simonpj at microsoft.com**20070801072612
 =

 Figuring out which type variables to generalise when inferring the type
 of a let-bound function is always trickier than I think!  This patch
 fixes a bug (related, inevitably, to functional depenencies) found by
 iampure, Trac #1564.  I'll add a test shortly.
 =

] =

[Only add -rpath to linker invocation when -dynamic
Clemens Fruhwirth <clemens at endorphin.org>**20070801092429] =

[fix the hardtop test for ghc-6.2.x, and make it notice failure earlier
Simon Marlow <simonmar at microsoft.com>**20070801083257] =

[compile the -inplace programs using $(HC), not $(GHC)
Simon Marlow <simonmar at microsoft.com>**20070731114925
 $(UseStage1) modifies $(HC) rather than $(GHC)
] =

[Make lndir work on Windows (by copying)
Ian Lynagh <igloo at earth.li>**20070730223152] =

[Make lndir whitespace consistent
Ian Lynagh <igloo at earth.li>**20070730193012] =

[Set hardtop_plat to hardtop to find out what, if anything, breaks
Ian Lynagh <igloo at earth.li>**20070730192513] =

[Use our own (Haskell) pwd to find the tree root
Ian Lynagh <igloo at earth.li>**20070730190808] =

[#1559 is worked around elsewhere, so validate no longer needs to
Ian Lynagh <igloo at earth.li>**20070730182806] =

[Change the strategy to determine dynamic data access
Clemens Fruhwirth <clemens at endorphin.org>**20070731095953
 =

 Instead of attaching the information whether a Label is going to be
 accessed dynamically or not (distinction between IdLabel/DynLabel and
 additional flags in ModuleInitLabel and PlainModuleInitLabel), we hand
 dflags through the CmmOpt monad and the NatM monad. Before calling
 labelDynamic in PositionIndependentCode, we extract thisPackage from
 dflags and supply the current package to labelDynamic, so it can take
 this information into account instead of extracting it from the labels
 itself. This simplifies a lot of code in codeGen that just hands
 through this_pkg.
 =

] =

[Translate dyn in GhcLibWays into --enable-shared for Cabal
Clemens Fruhwirth <clemens at endorphin.org>**20070723134124] =

[Add proper header so that cygwin recognizes this file as executable
Clemens Fruhwirth <clemens at endorphin.org>**20070722082050] =

[Add hardwire-lib-paths option and make it default for inplace invocations
Clemens Fruhwirth <clemens at endorphin.org>**20070717192622] =

[Add import facility to cmm parser
Clemens Fruhwirth <clemens at endorphin.org>**20070713210845
 =

 The cmm parser classified all unknown variables as imported. This
 behaviour is not changed with this patch. Explicitly imported
 variables get a different internal label type, namely ForeignLabel
 instead of RtsLabel. In PIC compilation, the NCG creates dynamic
 access for ForeignLabel, while RtsLabel are not treated as PIC when
 -package rts. Hence, putting explicit imports into cmm files enables
 the NCG to distinguish between RTS-external and RTS-internal symbols,
 and create the appropriate code.
] =

[Fix the knot-tying in loopDecls to actually do what its comment tells: pro=
vide access to global declarations
Clemens Fruhwirth <clemens at endorphin.org>**20070713210355] =

[windres to use the gcc given as --with-cc.
Clemens Fruhwirth <clemens at endorphin.org>**20070703145653] =

[Change package name mangling when linking against DSOs
Clemens Fruhwirth <clemens at endorphin.org>**20070628105831] =

[Allow access via manually generated SymbolPtrs. Generalize pprImportedSymb=
ol for 64 bit archs.
Clemens Fruhwirth <clemens at endorphin.org>**20070620142023] =

[FIX compacting GC (bug1010, and other failures)
Simon Marlow <simonmar at microsoft.com>**20070730153959
 Compacting GC interacts badly with the new pointer-tagging feature, as
 it also uses the low bits of a pointer to encode some information
 during a collection.  My original workaround didn't work, this more
 elaborate fix should be better.
] =

[FIX #1559, #1560.  Rearrange the way we do ifBuildable...
Simon Marlow <simonmar at microsoft.com>**20070730134346
 ifBuildable now returns an exit code, with 1 indicating an unbuildable
 non-core package, and 0 otherwise.  Hence we can now invoke the
 recursive make from the shell, sidestepping the problems in #1559 and
 #1560.
 =

] =

[* ghc-asm: Finally did away with $* in a way that works with Perl 5.6~5.10=
+, by appending /m to all regexes.
audreyt at audreyt.org**20070730122216] =

[Use "set -e" in validate, so "sh validate" still has it set
Ian Lynagh <igloo at earth.li>**20070729131809] =

[Follow cabal configurations changes
Ian Lynagh <igloo at earth.li>**20070729110711] =

[Pointer Tagging
Simon Marlow <simonmar at microsoft.com>**20070727104157
   =

 This patch implements pointer tagging as per our ICFP'07 paper "Faster
 laziness using dynamic pointer tagging".  It improves performance by
 10-15% for most workloads, including GHC itself.
 =

 The original patches were by Alexey Rodriguez Yakushev
 <mrchebas at gmail.com>, with additions and improvements by me.  I've
 re-recorded the development as a single patch.
 =

 The basic idea is this: we use the low 2 bits of a pointer to a heap
 object (3 bits on a 64-bit architecture) to encode some information
 about the object pointed to.  For a constructor, we encode the "tag"
 of the constructor (e.g. True vs. False), for a function closure its
 arity.  This enables some decisions to be made without dereferencing
 the pointer, which speeds up some common operations.  In particular it
 enables us to avoid costly indirect jumps in many cases.
 =

 More information in the commentary:
 =

 http://hackage.haskell.org/trac/ghc/wiki/Commentary/Rts/HaskellExecution/P=
ointerTagging
] =

[Fix building the HEAD with itself
Ian Lynagh <igloo at earth.li>**20070726181622] =

[Link with hpc even if GhcWithInterpreter is not set
Ian Lynagh <igloo at earth.li>**20070726164201] =

[Documentation updates for #1177
Simon Marlow <simonmar at microsoft.com>**20070726094030
 We now have a section that describes what hs_exit() does (including
 the "wait for foreign calls to return" behaviour), and more
 documentation on creating libraries of Haskell code.  I also imported
 the section "Beware of DllMain()!" from the haskell.org wiki, with
 some minor editing.
] =

[Mark PA dictionaries as __inline_me
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070726053001] =

[Add missing coercion
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070726052830] =

[Make sure DEFAULT always comes first in generated PA dictionaries
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070726052239] =

[Fix generation of lengthPA
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070726052108] =

[Modify generation of PA dictionaries to match GHC's usual behaviour
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070726044101] =

[Use the right dictionary when calling lengthPA
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070726031247] =

[Automatically derive PA for vectorised tycons
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070726031238] =

[PA instance generation code (not used yet)
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070726024551] =

[Create exported names in vectorisation monads
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070726024144] =

[Add vectorisation-related OccName derivation scheme
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070726024111] =

[PA dictionary generation
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070725041242] =

[Move code
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070725034813] =

[Generate replicatePA
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070725034354] =

[Generate lengthPA method
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070725034346] =

[Use emptyPA in vectorisation
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070725033530] =

[Add emptyPA to PrelNames
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070725030209] =

[More refactoring
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070725023017] =

[Refactoring
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070725022441] =

[make validate work on Windows
Simon Marlow <simonmar at microsoft.com>**20070725135751
 This includes automatically adding --build=3Di386-unknown-mingw32 and
 --with-gcc to ./configure, and disabling -j2 (see #1559).
 =

 Also: you can now say =

 =

   CPUS=3D3 ./validate
 =

 and the script will pass -jN to make (where N =3D $CPUS + 1).  In the
 future, when we fix #1558, it can pass THREADS=3DN to the testsuite, too.
] =

[FIX #1177, partially at least.
Simon Marlow <simonmar at microsoft.com>**20070725135504
 Now we don't wait for outstanding IO requests when shutting down at
 program exit time, but we still wait when shutting down a DLL (via
 hs_exit()).  There ought to be a better way to do this, but
 terminating the threads forcibly is not a good idea (it never is: the
 thread might be holding a mutex when it dies, for example).
 =

 I plan to add some docs to the user guide to describe how to shut
 down a DLL properly.
] =

[hs_exit()/shutdownHaskell(): wait for outstanding foreign calls to complet=
e before returning
Simon Marlow <simonmar at microsoft.com>**20070724153057
 This is pertinent to #1177.  When shutting down a DLL, we need to be
 sure that there are no OS threads that can return to the code that we
 are about to unload, and previously the threaded RTS was unsafe in
 this respect.
 =

 When exiting a standalone program we don't have to be quite so
 paranoid: all the code will disappear at the same time as any running
 threads.  Happily exiting a program happens via a different path:
 shutdownHaskellAndExit().  If we're about to exit(), then there's no
 need to wait for foreign calls to complete.
 =

] =

[Add unreg/tables-next-code output to +RTS --info
Ian Lynagh <igloo at earth.li>**20070723100135] =

[Add a +RTS --info flag print various info; partially fixes trac #1517
Ian Lynagh <igloo at earth.li>**20070722170042] =

[FIX #1215: GHC fails to respect the maximal munch rule while lexing "quali=
fied reservedids"
Simon Marlow <simonmar at microsoft.com>**20070724130417
   =

 I didn't actually fix this to respect Haskell 98, instead I changed it
 to follow the proposal for Haskell':
 =

 http://hackage.haskell.org/cgi-bin/haskell-prime/trac.cgi/wiki/QualifiedId=
entifiers
 =

 Rationale:
 =

   - We didn't respect Haskell 98 with respect to qualified symbols either
   - The Haskell' change makes things much cleaner
   - Obeying the Haskell 98 spec literally has some unintended
     consequences (e.g. M.where must lex as "M.wher" "e")
   - Any programs that compiled before this change and do not compile
     after it were illegal according to Haskell 98 anyway.
] =

[FIX #1555: Remove "exp -> pat" production in stmts
Simon Marlow <simonmar at microsoft.com>**20070723141023
 It looks like this was an experiment that accidentally got committed,
 somewhere between 6.0 and 6.2.
 =

 =

] =

[Document the new -X flags in the flag reference
Ian Lynagh <igloo at earth.li>**20070722151934] =

[Check for framework failures and unexpected passes in validate
Ian Lynagh <igloo at earth.li>**20070722135623] =

[Use CLEANUP=3D1 when running the testsuite from validate
Ian Lynagh <igloo at earth.li>**20070722125431] =

[in hpc-tools, removing the use of %error, to allow happy 1.15 to be used.
andy at galois.com**20070721000621] =

[hpc-tools: improving flag processing and help messages, small bug fixes.
andy at galois.com**20070720235703] =

[Hack: copy ld.exe to compiler/gcc-lib so Cabal can find it
Ian Lynagh <igloo at earth.li>**20070721200043] =

[Fix the Windows build
Ian Lynagh <igloo at earth.li>**20070721011817] =

[When registering base during installation, don't hide GHC.Prim
Ian Lynagh <igloo at earth.li>**20070719163920] =

[Create .hi-boot and .o-boot files in --make mode; fixes trac #1322
Ian Lynagh <igloo at earth.li>**20070719112736
 We were recompiling the .hs-boot files each time, as we were never
 writing out the compilation results.
] =

[Fix -split-obj on Mac OS via -fasm
Clemens Fruhwirth <clemens at endorphin.org>**20070706112449
 =

 The problem of the splitter was that it re-emitted section directives
 for every dynamic label found. The following was torn apart
 =

 .symbol_stubs
 .indirect <symbol>
 L_<symbol>$stub: =

 	jmp *...
 L_<symbol>$stub_binder:
 	..somebinding code..
 =

 into
 =

 .symbol_stubs
 .indirect_symbol <symbol>
 L_<symbol>$stub: =

 	jmp *...
 .symbol_stubs <--- NEW
 L_<symbol>$stub_binder:
 	..somebinding code..
 =

 This is incorrect as the Mac OS assembler enforces that every new code
 section that goes into .symbol_stubs is associated with the linker
 directive .indirect_symbol. This sanity check is obviously violated
 when we reemit .symbol_stub in the splitter. The solution is to ignore
 everything that ends with $stub_binder as new label, and chuck it into
 a single label for $stub.
 =

 Also the splitter has to recognize .section __DATA... for the lazy_ptr
 indirection symbol. Adds a reminder to PositionIndependentCode.hs to
 take care of the splitter when the code generation is changed.
 =

 This should not affect -fvia-c as the code generated by the C compiler
 is entirely different.
 =

] =

[Made the label generation in the Cmm parser more direct
Michael D. Adams <adamsmd at cs.indiana.edu>**20070718203300] =

[Typo fix in comment
Michael D. Adams <adamsmd at cs.indiana.edu>**20070716182906] =

[Default tick interval was 50ms, change it to 20ms
Simon Marlow <simonmar at microsoft.com>**20070718112652
 I think 50ms was accidental, prior to 6.6 it used to be 20ms
] =

[remove unused TICK_FREQUENCY
Simon Marlow <simonmar at microsoft.com>**20070718110655] =

[wakeUpSleepingThreads: fix off by one
Simon Marlow <simonmar at microsoft.com>**20070718092754
 The symptom of this bug is after the time of a threadDelay has
 expired, the RTS does a whole slew of extra select() calls.
 This should help with #1523, but it's not the whole story.
] =

[Fixes for the unreg build
Ian Lynagh <igloo at earth.li>**20070718111751
 * Fix code output order when printing C so things are defined before
   they are used.
 * Generate _ret rather than _entry functions for INFO_TABLE_RET.
 * Use "ASSIGN_BaseReg" rather than "BaseReg =3D".
] =

[Factor 'callerSaveVolatileRegs' out of the NCG and into CgUtil
Michael D. Adams <adamsmd at cs.indiana.edu>**20070717014257
 =

 This is needed because CgForeign and parts of the CPS pass now use
 'callerSaveVolatileRegs' and not all platforms have access to the NCG.
] =

[Refactoring
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070718045553] =

[Better names for PArray instance coercions
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070718045051] =

[Add generated PArray instances to instance environments
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070718044433] =

[Nicer names for generated PArray instances
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070718041411] =

[Generate PArray instances of vectorised tycons
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070718040828] =

[Generation of DataCons for implicit PArray instances
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070718025235] =

[Fix two typos
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070718025224] =

[More vectorisation-related OccNames
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070718025159] =

[darcs-all: allow relative path for repo in local fs
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20070718034511] =

[Implement the RTS side of GHC.Environment.getFullArgs
Ian Lynagh <igloo at earth.li>**20070717142050] =

[Typo
Ian Lynagh <igloo at earth.li>**20070716235635] =

[Corrections for warnings in the user guide
Ian Lynagh <igloo at earth.li>**20070716231741] =

[Sync the UG entries for -Wall, -w etc with reality
Ian Lynagh <igloo at earth.li>**20070716221943] =

[-w should turn off /all/ options, not just the -Wall ones
Ian Lynagh <igloo at earth.li>**20070716221442] =

[Implement -fwarn-dodgy-imports
Ian Lynagh <igloo at earth.li>**20070716220635
 You used to only be able to enable Opt_WarnDodgyImports with -W or -Wall.
 This patch adds the flag to en/disable it by name.
 (DodgyImports =3D=3D importing T(..) when only T is exported).
] =

[Doc tweaks
Ian Lynagh <igloo at earth.li>**20070716212813] =

[Remove note that -E behaviour has changed (6.0 has the same note)
Ian Lynagh <igloo at earth.li>**20070716183624] =

[Doc tweaks
Ian Lynagh <igloo at earth.li>**20070716183540] =

[User guide tweaks
Ian Lynagh <igloo at earth.li>**20070716180352] =

[Doc tweak
Ian Lynagh <igloo at earth.li>**20070716174735] =

[Doc tweak
Ian Lynagh <igloo at earth.li>**20070716174428] =

[Correct user guide on when .ghci is read
Ian Lynagh <igloo at earth.li>**20070716172448] =

[Tweak punctuation in the user guide
Ian Lynagh <igloo at earth.li>**20070716171550] =

[ghci command docs tweaks
Ian Lynagh <igloo at earth.li>**20070716170601] =

[Fix alphabetical ordering in :? output
Ian Lynagh <igloo at earth.li>**20070716165149] =

[Fix alphabetical ordering in user guide
Ian Lynagh <igloo at earth.li>**20070716155544] =

[Typo
Ian Lynagh <igloo at earth.li>**20070716153413] =

[Remove another instance of the banner from the user guide
Ian Lynagh <igloo at earth.li>**20070715221444] =

[In user guide, don't claim that ghci never generates .hi files
Ian Lynagh <igloo at earth.li>**20070715221119
 With -fobject-code it now can do.
] =

[ghci debugger documentation tweaks
Ian Lynagh <igloo at earth.li>**20070715220517] =

[Fix typo
Ian Lynagh <igloo at earth.li>**20070715122229] =

[ghci doc tweaks
Ian Lynagh <igloo at earth.li>**20070715122128] =

[Adding pushing of hpc translation status through hi files.
andy at galois.com**20070717073510
 =

 Now, if a single module *anywhere* on the module tree is built with
 -fhpc, the binary will enable reading/writing of <bin>.tix.
 =

 Previously, you needed to compile Main to allow coverage to operate.
 =

 This changes the file format for .hi files; you will need to recompile eve=
ry library.
 =

] =

[Handle unlifted tycons and tuples correctly during vectorisation
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070717064816] =

[Initialise global vectorisation environment properly
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070717064233] =

[Vectorise type declarations
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070717063309] =

[Vectorisation of data declarations (incomplete)
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070717061306] =

[Add vectorisation environment transformers
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070717054943] =

[Refactor
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070717052835] =

[Remove mapping from tycons to PA dictionaries from vect environment
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070717052323] =

[Add datacons to vectorisation environment
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070717052239] =

[Add fixV
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070717051527] =

[Classification of tycons for vectorisation
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070717050337] =

[Clean up
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070717041957] =

[Move type vectorisation code to a separate module
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070717041645] =

[Pass correct dictionary to lengthPA for single-element environments
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070716110819] =

[Abstract over all in-scope type variables when creating closures
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070716105847] =

[Pass PA dictionaries after all type arguments
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070716105619
 =

 This makes the code slightly simpler but only works because we do not supp=
ort
 rank-n types.
] =

[Fix bug in lifted environment inspection code
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070716072338] =

[Lifting contexts have type Int#
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070716065155
 =

 This tracks the corresponding change in package ndp. With this patch, we
 finally can vectorise something (f x =3D x).
] =

[Fix bug in vectorisation
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070716063548] =

[Fix bad bug in type vectorisation
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070716062833] =

[Make vectorisation part of the optimiser pipeline
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070716061900] =

[Get NDP prelnames from the right modules
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070716061816] =

[Vectorise top-level bindings of a module
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070716052406] =

[Vectorisation of top-level bindings
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070716051139] =

[Store hoisted bindings in the global environment during vectorisation
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070716050019] =

[Add support for name cloning to vectorisation monad
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070716044826] =

[Refactoring
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070716044801] =

[Adapt interface file code for vectorisation
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070716035739
 =

 For the most part, this patch simply renames functions which had been used
 for closure conversion and hence have CC in their name. It also changes th=
e
 OccNames generated by vectorisation.
] =

[Collect hoisted vectorised functions
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070716021151] =

[First incomplete version of closure vectorisation
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070713073318] =

[Refactor slightly
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070713073304] =

[Add utility function for vectorisation
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070713073227] =

[Add closedV
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070713072843] =

[Export wrapFamInstBody and unwrapFamInstScrut
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070712045434] =

[Refactoring
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070711044820] =

[Add whitespace
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070711035839] =

[Only vectorise rank-1 expressions
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070711035616] =

[Move some vectorisation utility functions
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070710140934] =

[Modify PA dictionary computation to work with the class-based scheme
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070710140221] =

[Clean up handling of PA dictionaries
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070710133124] =

[FIX problem with not using the compat lib for Set in hpc tools.
andy at galois.com**20070715213602] =

[Properly parse GC blocks for functions with info tables
Michael D. Adams <adamsmd at cs.indiana.edu>**20070715204116] =

[Removed 'allow_header_set' argument from 'pack_continuation'.
Michael D. Adams <adamsmd at cs.indiana.edu>**20070715202235
 Because branches might now go to continuations and become calls to =

 continuations, 'allow_header_set' isn't always correct.
 Removing that parameter makes the conservative approximation.
 A better approximation might save one memory store is some cases.
] =

[Fixed conditional branches to proc points
Michael D. Adams <adamsmd at cs.indiana.edu>**20070715202033
 These could occur due to GC checks.
] =

[Removed unused variable from compiler/cmm/CmmCPS.hs
Michael D. Adams <adamsmd at cs.indiana.edu>**20070715201717] =

[Removed unused import from compiler/cmm/CmmCPS.hs
Michael D. Adams <adamsmd at cs.indiana.edu>**20070715201638] =

[Keep the CPS pass from creating proc points due to unreachable parents.
Michael D. Adams <adamsmd at cs.indiana.edu>**20070715162003
 =

 The parser/flattener will generate an extra block after an if/else =

 statement even if both branches exit the function.  So it is possible
 for the input to the CPS pass to have dead/unreachable blocks.
 =

 If a dead block goes to a live block then the live block would
 have more parents than the dead block and prior to this patch
 the live block would then be identified as a proc point.
 This is fixed by adding a check to see if the parent
 has at least one owner.
] =

[Fixed CPS to account for info tables not being next to code
Michael D. Adams <adamsmd at cs.indiana.edu>**20070715011141] =

[Fix the CPS pass to pack the continuation with correct label form.
Michael D. Adams <adamsmd at cs.indiana.edu>**20070714184955
 It was using the return point label before; now it uses the info label.
] =

[Fix for print022 (round up when dividing type size by word size)
Ian Lynagh <igloo at earth.li>**20070714223940
 From Pepe Iborra (mnislaih)
] =

[Fix putting hsicon.ico into the Windows installer; fixes #1515
Ian Lynagh <igloo at earth.li>**20070714161312
 It was done in a bit of the Makefile that was if'ed out for Windows.
] =

[Update the ghci "loading" section of the user guide
Ian Lynagh <igloo at earth.li>**20070714001346] =

[Don't show the ghci :? output in the user guide
Ian Lynagh <igloo at earth.li>**20070713223017
 The ghci command list is now much larger than it used to be, and it
 tends to go out of sync with the docs anyway.
] =

[User guide tweaks
Ian Lynagh <igloo at earth.li>**20070713222656] =

[User guide tweaks
Ian Lynagh <igloo at earth.li>**20070713221258] =

[Tweak Windows installation instructions in the user guide
Ian Lynagh <igloo at earth.li>**20070713220628] =

[Update the contents of the library directy in the user guide
Ian Lynagh <igloo at earth.li>**20070713214004] =

[User guide tweaks
Ian Lynagh <igloo at earth.li>**20070713210049] =

[Don't talk about nfib from the user guide now that we no longer ship it
Ian Lynagh <igloo at earth.li>**20070713200442] =

[Remove "What bundles there are" now we only have the standard one
Ian Lynagh <igloo at earth.li>**20070713195341] =

[Update bundle installation instructions
Ian Lynagh <igloo at earth.li>**20070713194424] =

[In the users guide, talk about configure flags
Ian Lynagh <igloo at earth.li>**20070712021759
 (rather than talking about tweaking the Makefile(-vars) by hand)
] =

[Remove "install in-place" blurb from the docs as it no longer works
Ian Lynagh <igloo at earth.li>**20070712015440] =

[doc tweak
Ian Lynagh <igloo at earth.li>**20070712015340] =

[Remove outdated bundle-contents description
Ian Lynagh <igloo at earth.li>**20070712015216] =

[Merge *UnboxedTuples flags
Ian Lynagh <igloo at earth.li>**20070712011254
 Merge
     ExpressionSignaturesUnboxedTuples
     TypeSynonymUnboxedTuples
 into
     UnboxedTuples
] =

[Automatic RTTI for ghci bindings =

Pepe Iborra <mnislaih at gmail.com>**20070714114946
 =

 With this patch, ghci runs rtti (bounded in the term treewith a max. depth=
 of 10)
 automatically after evaluating any expression in the interactive env.
 In addition, a rtti step is performed on the local bindings in a breakpoin=
t,
 before returning control to the user
 =

 Let's see how well this works in practice
 =

] =

[Teach :print to not panic when the DataCon for a closure is not exposed by=
 the .hi file
Pepe Iborra <mnislaih at gmail.com>**20070712174323
 =

 Previously the behaviour was to panic.
 Now it will print an approximated representation, =

 using the names (enclosed in keys, i.e. "<...>") =

 and the pointed subterms. Non pointed subterms cannot =

 be included in this representation:
 =

 Prelude> let se =3D Data.Sequence.fromList (map Just "abc")
 Prelude> :eval se
 ()
 Prelude> :p se
 se =3D <Data.Sequence.Deep> (<Data.Sequence.One> (_t1::t)) () (<Data.Seque=
nce.Two> (_t2::t) (_t3::t))
 Prelude> :eval _t2
 ()
 Prelude> :p se
 se =3D <Data.Sequence.Deep> (<Data.Sequence.One> (_t4::t1)) () (<Data.Sequ=
ence.Two> (Just 'b') (_t5::t1))
 Prelude>
 =

 This patch also includes some fixes in the pretty printer =

 for the Term datatype
 =

 =

] =

[Fix an array indexing bug in getClosureData (used by :print)
Pepe Iborra <mnislaih at gmail.com>**20070712163012] =

[remove some leftovers of the first ghci debugger prototype
Pepe Iborra <mnislaih at gmail.com>**20070711234514] =

[Fix imports & add missing type signatures
Pepe Iborra <mnislaih at gmail.com>**20070711101749] =

[Ask for a HscEnv instead of a Session in InteractiveEval.obtainTerm
Pepe Iborra <mnislaih at gmail.com>**20070711095421
 =

 This does a better job of showing that obtainTerm does not alter the Sessi=
on
] =

[Add a max depth bound to the bfs implementation in cvReconstructType,
Pepe Iborra <mnislaih at gmail.com>**20070711092006
 =

 to avoid looping when reconstructing insufficiently evaluated, circular st=
ructures
] =

[FIX panic from the GHC API
David Waern <davve at dtek.chalmers.se>**20070714124743
 In hscFileCheck, initialize md_vect_info with noVectInfo instead of
 a panic value, since this is a strict field.
] =

[init mg_inst_env when reading ext core
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20070713073729] =

[Warning Police: No newline at end of file
Michael D. Adams <adamsmd at cs.indiana.edu>**20070713204028] =

[Warning Police: Unused imports
Michael D. Adams <adamsmd at cs.indiana.edu>**20070713201913] =

[Added libraries/parallel to .darcs-boring
Michael D. Adams <adamsmd at cs.indiana.edu>**20070713182117] =

[Adding draft and show to hpc
andy at galois.com**20070712194200
 =

 we now have =

   =

   hpc draft <TIX_FILE>
 =

 This drafts up a candidate overlay for 100% coverage.
  =

 and
 =

   hpc show  <TIX_FILE>
 =

 This show verbose details about a tix file; mainly for debugging.
 =

 =

] =

[Fixing Hpc SrcSpan usage; rejecting SrcSpans that are not in the source fi=
le
andy at galois.com**20070712171646
 =

 Now, if you #include a file, you do not get any hpc-info from the included=
 file.
 Previously, you got wrong information.
 =

 Thanks to Neil Mitchell for pointing out the problem.
 =

] =

[Revert the $* patch for earlier Perls as it breaks the build. Sorry. :/
audreyt at audreyt.org**20070712054351] =

[In mangler, lift the multiline-match pragma to toplevel and document it be=
tter.
audreyt at audreyt.org**20070711210449] =

[* Evil Mangler broke under Perl 5.9+ because $* is gone; this fixes it.
audreyt at audreyt.org**20070711182430
 =

   Perl 4's special variable $* controls multi-line matching; it's been
   deprecated from Perl 5's inception, and is finally removed in Perl
   versions 5.9 (soon to be 5.10).
 =

   Since GHC depends on Perl 5.6+ anyway, this patch introduces an
   equivalent effect to $* without using that special variable, by
   hooking into Perl's regex parsing process to add the /m flag.
 =

] =

[Remove import
David Waern <davve at dtek.chalmers.se>**20070711194005] =

[Remove comment
David Waern <davve at dtek.chalmers.se>**20070711193504] =

[* Future-proof autoconf's Perl version test.
audreyt at audreyt.org**20070711165851
 =

   GHC only works with Perl versions 5.6 and later; however
   the current test greps in a rather non-future-proof way
   (explicitly against 5.6 and 5.8).
   =

   We instead exploit the "v-string" change in 5.6, which
   displays the version string as "v5.x.y", rather than
   the earlier format "version 5.xxx_yyy".  Hence grepping
   against "v5" will make it future proof for a while.
   (At least until Perl 6 is installed as the system perl.)
 =

] =

[Tweak the start of the bin-dist docs in teh users guide
Ian Lynagh <igloo at earth.li>**20070711123755] =

[Remove reference to the now-dead fptools
Ian Lynagh <igloo at earth.li>**20070711000002] =

[Remove references to non-existent mailing lists
Ian Lynagh <igloo at earth.li>**20070710235838] =

[Remove the -bugs mailing list from the UG
Ian Lynagh <igloo at earth.li>**20070710235156
 We now have a separate bit on reporting bugs, via a different method, so
 this section didn't really make sense any more.
] =

[Users guide: Update FAQ URL
Ian Lynagh <igloo at earth.li>**20070710234509] =

[Users guide: GHC no longer comes with so many libraries
Ian Lynagh <igloo at earth.li>**20070710234236] =

[Update copyright date in teh users guide
Ian Lynagh <igloo at earth.li>**20070710233912] =

[Alpha-rename a variable
Ian Lynagh <igloo at earth.li>**20070710233308] =

[Opt_GlasgowExts is no longer used, so remove it
Ian Lynagh <igloo at earth.li>**20070710232635] =

[Implement -XStandaloneDeriving, the lexer is now glaexts-free
Ian Lynagh <igloo at earth.li>**20070710210129] =

['a'# syntax is enabled by the MagicHash extension
Ian Lynagh <igloo at earth.li>**20070710203924] =

["Foo"# syntax is enabled by the MagicHash extension
Ian Lynagh <igloo at earth.li>**20070710203606] =

[5# syntax is enabled by the MagicHash extension
Ian Lynagh <igloo at earth.li>**20070710203319] =

[{| and |} are -fgenerics syntax
Ian Lynagh <igloo at earth.li>**20070710202129] =

[Rank 2 and rank n types enable explicit forall syntax
Ian Lynagh <igloo at earth.li>**20070710202109] =

[RULES pragmas only need explicitForallEnabled, no -fglasgow-exts
Ian Lynagh <igloo at earth.li>**20070710180629] =

[Implement -XDeriveDataTypeable flag
Ian Lynagh <igloo at earth.li>**20070710180130] =

[Adding hpcError, that improves error messages with usage
andy at galois.com**20070711072454] =

[Adding support for packages into hpc tools
andy at galois.com**20070711072349] =

[Adding tick boxes to the interface syntax; fixes #1510
andy at galois.com**20070711072002] =

[calling pprPanic rather than error when something goes wrong
andy at galois.com**20070711071935] =

[Adding better support for HsSyn
andy at galois.com**20070711071842] =

[Adding support for package names into hpc outputed code
andy at galois.com**20070711070555
 We store .mix files in
 =

  .hpc/<package>/<the.module.name>.mix
 =

 The package main the empty package (aka other naming passes), =

 so Main just is stored in
 =

  .hpc/Main.tix
 =

 This change in backwards compatable.
 =

] =

[Stoping constant folding of calls to chr# that are invalid
andy at galois.com**20070711063520
 =

 import GHC.Exts
 main =3D print (C# (chr# 0xffffffff#))
 =

 This crashed at compile time (with or without hpc)
 Tickled by pending cross-module hpc inlining patch.
 =

] =

[Be finer-grained when turning on extensions for generated code
Ian Lynagh <igloo at earth.li>**20070710152406] =

[Tweak error message
Ian Lynagh <igloo at earth.li>**20070710130214] =

[Fix tcInstHeadTyNotSynonym
Ian Lynagh <igloo at earth.li>**20070710124738
 It was returning False for type variables amongst other things, so
 "instance C a" was telling us to use -XTypeSynonymInstances.
] =

[Add flag -XConstrainedClassMethods
Ian Lynagh <igloo at earth.li>**20070709204343] =

[Just alpha-rename a variable
Ian Lynagh <igloo at earth.li>**20070709200249] =

[Add -XUnliftedFFITypes flag
Ian Lynagh <igloo at earth.li>**20070709195408] =

[Implement unboxed tuples flags
Ian Lynagh <igloo at earth.li>**20070709193056
 -XUnboxedTuples
 -XExpressionSignaturesUnboxedTuples
 -XTypeSynonymUnboxedTuples
] =

[Tweak the undecidable-instance-checking logic
Ian Lynagh <igloo at earth.li>**20070709182209
 Just looking at Opt_GlasgowExts is not sufficient to see if we need
 to do an instance undecidability check. Rather than try to enumerate
 all the extensions that may require us to do the check we now always
 do it.
] =

[Define -XPartiallyAppliedClosedTypeSynonyms flag
Ian Lynagh <igloo at earth.li>**20070709181455] =

[Add -XPatternSigs flag
Ian Lynagh <igloo at earth.li>**20070709175411] =

[PA is now a class instead of a record
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070710113822] =

[Add dsLookupClass
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070710113543] =

[Lookup of class and family instances in vectorisation monad
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20070710084949] =

[oops, revert part of the +RTS -V0 patch which was accidentally included
Simon Marlow <simonmar at microsoft.com>**20070710075428] =

[FIX rts build failure for powerPC build
andy at galois.com**20070710071713
 =

 The rts was failing with =

 =

 ../compiler/ghc-inplace -H64m -Onot -fasm -optc-O2 -static -I../gmp/gmpbui=
ld -I. -#include HCIncludes.h -dcmm-lint  -hisuf thr_p_hi -hcsuf thr_p_hc -=
osuf thr_p_o -optc-DTHREADED_RTS -prof -#include posix/Itimer.h  -c PrimOps=
.cmm -o PrimOps.thr_p_o
 ghc-6.7.20070709: panic! (the 'impossible' happened)
   (GHC version 6.7.20070709 for powerpc-apple-darwin):
         iselExpr64(powerpc) %MO_U_Conv_I32_I64(16 / 4 - 2)
 =

 There was a special case for x86; so it has been transliterated to the PPC=
, and the output code looks plausable.
 =

] =

[Add vectorisation modules to package ghc
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070710060623] =

[Put vectorisation monad into a separate file
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070710060528] =

[Vectorisation of type abstractions
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070710042502] =

[Utility functions for vectorisation
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070710042319] =

[Fix #1505; failure to catch syntax error in :break command
Simon Marlow <simonmar at microsoft.com>**20070709210706] =

[Fix the +RTS -V0 option introduced recently; it didn't work at all, now it=
 does.
Simon Marlow <simonmar at microsoft.com>**20070708194423
 Also, I documented it.  +RTS -V0 disables the internal RTS timer
 completely, which is useful for repeatable debugginng.
] =

[FIX -fexcess-precision
Simon Marlow <simonmar at microsoft.com>**20070708192120
 Ugly hack; see comments for details
] =

[Remove unused binding
Ian Lynagh <igloo at earth.li>**20070709153350] =

[Add -XTypeOperators flag
Ian Lynagh <igloo at earth.li>**20070709153137] =

[Add -fprint-explicit-foralls flag; fixes trac #1474
Ian Lynagh <igloo at earth.li>**20070709143551] =

[Add -XFlexibleContexts flag
Ian Lynagh <igloo at earth.li>**20070709131353] =

[Add -XExistentialQuantification flag
Ian Lynagh <igloo at earth.li>**20070709124436] =

[Implement -XPolymorphicComponents
Ian Lynagh <igloo at earth.li>**20070709120415] =

[rename tv -> explicitForall
Ian Lynagh <igloo at earth.li>**20070709112505] =

[Implement -XUnicodeSyntax
Ian Lynagh <igloo at earth.li>**20070709093415] =

[libraries/hpc is boring (in the GHC repo)
Ian Lynagh <igloo at earth.li>**20070708173246] =

[Add flags for Rank2Types and RankNTypes
Ian Lynagh <igloo at earth.li>**20070708173150] =

[Make CPP a -X flag
Ian Lynagh <igloo at earth.li>**20070708165045] =

[Add PatternGuards flag
Ian Lynagh <igloo at earth.li>**20070708164236] =

[Add flags for TypeSynonymInstances and FlexibleInstances
Ian Lynagh <igloo at earth.li>**20070708162507] =

[Implement -XFunctionalDependencies
Ian Lynagh <igloo at earth.li>**20070708153236] =

[Implement -XRecursiveDo
Ian Lynagh <igloo at earth.li>**20070708150631] =

[Implement -XGeneralizedNewtypeDeriving
Ian Lynagh <igloo at earth.li>**20070708144354] =

[Add -XParallelListComp
Ian Lynagh <igloo at earth.li>**20070708134252] =

[Vectorise lets
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070709063753] =

[Split vectorisation environment into a global and a local part
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070709062505] =

[First cut at vectorisation of expressions
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070709053934] =

[Construction of PA dictionaries for vectorisation
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070709053918] =

[Vectorisation-specific imports
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070709053906] =

[Utilities for handling closure types during vectorisation
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070709053819] =

[Add orElse combinator for vectorisation monad
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070709053740] =

[Extend vectorisation environment
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070709053709] =

[Allow variables to be mapped to arbitrary CoreExprs in vectorisation monad
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070709042251] =

[Add failure to vectorisation monad
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070709040406] =

[Fixing native code generator for PowerPC
andy at galois.com**20070708074329] =

[Add -XMultiParamTypeClasses flag
Ian Lynagh <igloo at earth.li>**20070708122753] =

[Implement -XKindSignatures
Ian Lynagh <igloo at earth.li>**20070708120553] =

[Add -XEmptyDataDecls flag
Ian Lynagh <igloo at earth.li>**20070708112907] =

[Support the MagicHash extension as a flag and LANGUAGE pragma
Ian Lynagh <igloo at earth.li>**20070708111041] =

[Tidy up comments in DynFlags
Ian Lynagh <igloo at earth.li>**20070708102322] =

[FIX #1472 (also #249, which was not completely fixed previously): -caf-all=
 bugs
Simon Marlow <simonmar at microsoft.com>**20070707192102] =

[allow build settings to be overriden by adding mk/validate.mk
Simon Marlow <simonmar at microsoft.com>**20070707191853] =

[Remove foldl' from Util; use the Data.List one instead
Ian Lynagh <igloo at earth.li>**20070706205410] =

[undo: Get the path right for :list
Simon Marlow <simonmar at microsoft.com>**20070706152132
 This is breaking :list for someone.  If there's a problem here, we
 should fix it another way.
] =

[-ddump-hi-diffs shouldn't imply -fforce-recomp, that defeats the purpose
Simon Marlow <simonmar at microsoft.com>**20070705135320] =

[Added comment to the Cmm parser showing code for use one CPS is enabled
Michael D. Adams <t-madams at microsoft.com>**20070705170703] =

[Eliminated use of 'fromJust' from the CPS pass
Michael D. Adams <t-madams at microsoft.com>**20070705170637] =

[Fixed a bug in the CPS pass
Michael D. Adams <t-madams at microsoft.com>**20070705170515] =

[Updated the call to the CPS pass for the factoring out of cmmToRawCmm
Michael D. Adams <t-madams at microsoft.com>**20070705145031
 That call was and is commented out, but it serves as documentation
 for when the CPS pass will be turned on.
] =

[Added support for GC block declaration to the Cmm syntax
Michael D. Adams <t-madams at microsoft.com>**20070705144820] =

[Ensure no statements after CmmReturn are emitted
Michael D. Adams <t-madams at microsoft.com>**20070705094702] =

[FIX BUILD (Windows)
Simon Marlow <simonmar at microsoft.com>**20070706075931] =

[Vectorise unlifted and tuple tycons
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070704055652] =

[Vectorisation of types
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070704055239] =

[Add TyCons to vectorisation  monad
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070704051512] =

[Vectorisation monad
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070704045445] =

[Add ndp docs
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070703063738] =

[Include vectorisation into the simplifier pipeline
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070629051943] =

[Add vectorise subdirectory and dummy module
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070629051316] =

[Add -fvectorise
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070629043246] =

[Add NDP-related PrelNames
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070629041605] =

[Make package ndp wired-in
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070629015456] =

[FIX BUILD (OS X): Include correct gmp.h if using GMP.framework
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070706045649
 =

 On OS X, we have to #include <GMP/gmp.h> if we are using GMP.framework. Be=
fore
 the recent GMP changes, gcc (incorrectly) used the gmp.h supplied by ghc b=
ut
 that is gone now. =

] =

[hpc is now a corelib, so always build it
Ian Lynagh <igloo at earth.li>**20070705223137] =

[Update the in-tree GMP; fixes trac #832
Ian Lynagh <igloo at earth.li>**20070705215240
 gmp is now in a top-level directory and we only have the tarball in the
 darcs repo. It gets untarred if it is needed.
] =

[FIX BUILD (with GHC 6.2.x): System.Directory.Internals is no more
Simon Marlow <simonmar at microsoft.com>**20070705194647
 Update functions in Compat.Directory from originals in System.Directory
] =

[Warning Police
Michael D. Adams <t-madams at microsoft.com>**20070705142936] =

[Tidy up IsIrred (no need for argument any more)
simonpj at microsoft.com**20070705075937] =

[Fix Trace #1494
simonpj at microsoft.com**20070704222221
 =

 A tricky bug to do with the way the implication constraints are
 solved in TcSimplify.  See Note [Reducing implication constraints].
 =

] =

[The standard SUBDIRS in the top level Makefile should include libraries
Ian Lynagh <igloo at earth.li>**20070704140855] =

[Remove mapAccumL, mapAccumR, mapAccumB
Ian Lynagh <igloo at earth.li>**20070702122651
 mapAccumL and mapAccumR are in Data.List now.
 mapAccumB is unused.
] =

[Remove the unused "Eager monad"
Ian Lynagh <igloo at earth.li>**20070702115204] =

[Add a type signature
Ian Lynagh <igloo at earth.li>**20070702114924] =

[Remove unused functions (applyToPair, applyToFst, applyToSnd)
Ian Lynagh <igloo at earth.li>**20070702114812] =

[Remove unused cfst (=3D=3D const)
Ian Lynagh <igloo at earth.li>**20070702114709] =

[Remove prefixMatch and suffixMatch from Util
Ian Lynagh <igloo at earth.li>**20070702114208
 Use standard isPrefixOf/isSuffixOf instead.
] =

[Use $(HC), not $(GHC) to compile ghc-inplace
Simon Marlow <simonmar at microsoft.com>**20070704135704
 =

 $(GHC) is always the installed compiler, $(HC) changes depending on
 the stage.  This has the nice effect that we build stage2/ghc-inplace
 using the stage1 compiler, and get to take advantage of bugfixes in
 stage1 relative to $(GHC) (in particular I want the non-blocking stdin
 fix for stage2, otherwise piping the testsuite output through tee
 fails).
] =

[We don't need a SIGCONT handler any more
Simon Marlow <simonmar at microsoft.com>**20070704123606
 The SIGCONT handler was used to put stdin back in O_NONBLOCK mode,
 after the process is resumed, but we don't want to do that now: the
 standard handles are kept in blocking mode.
] =

[Add first cut of the validate script
Simon Marlow <simonmar at microsoft.com>**20070704122241] =

[Added support for update frames to the CPS pass
Michael D. Adams <t-madams at microsoft.com>**20070703214413
 (This required a bit of refactoring of CmmInfo.)
] =

[Fix error message in CPS pass
Michael D. Adams <t-madams at microsoft.com>**20070703212555] =

[Factor cmmToRawCmm completely out of CPS
Michael D. Adams <t-madams at microsoft.com>**20070703211734
 This patch also fixes how the CPS handles functions with an empty body.
 Factoring cmmToRawCmm out of the CPS pass made that fix easier.
] =

[Remove dead code in the CPS pass
Michael D. Adams <t-madams at microsoft.com>**20070703094735] =

[Minor formatting cleanup.
Michael D. Adams <t-madams at microsoft.com>**20070703093625] =

[Moved 'continuationToProc' into a separate file, 'CmmCPSGen.hs'.
Michael D. Adams <t-madams at microsoft.com>**20070703093444] =

[Finished support for foreign calls in the CPS pass
Michael D. Adams <t-madams at microsoft.com>**20070703091320] =

[Multiple improvements to CPS algorithm.
Michael D. Adams <t-madams at microsoft.com>**20070702084221
 These include:
  - Stack size detection now includes function arguments.
  - Stack size detection now avoids stack checks just because of
    the GC block.
  - A CmmCall followed by a CmmBranch will no longer generate an extra
    continuation consisting just of the brach.
  - Multiple CmmCall/CmmBranch pairs that all go to the same place
    will try to use the same continuation.  If they can't (because
    the return value signature is different), adaptor block are built.
  - Function entry statements are now in a separate block.
    (Fixed bug with branches to the entry block having unintended effects.)
  - Other changes that I can't recall right now.
] =

[Allow safety information on calls in Cmm files
Michael D. Adams <t-madams at microsoft.com>**20070628101133] =

[FIX BUILD (Windows): catch up with changes to .cmm syntax
Simon Marlow <simonmar at microsoft.com>**20070703205234] =

[Improve formatting of errors, and fix a typo
simonpj at microsoft.com**20070703162814] =

[Fix for function info tables: the SRT field cannot be omitted if there are=
 fields following it
Simon Marlow <simonmar at microsoft.com>**20070703140506] =

[pprTypeInfo: print slow entry pt
Simon Marlow <simonmar at microsoft.com>**20070703140304] =

[fix compilation for x86_64
Simon Marlow <simonmar at microsoft.com>**20070628124544] =

[Fix stack check amount for user declared continuation functions
Michael D. Adams <t-madams at microsoft.com>**20070628111812] =

[Remove unused parameter in force_gc_block for CPS
Michael D. Adams <t-madams at microsoft.com>**20070628101734] =

[Fix a bug in the Cmm parser where formal params didn't get bound
Michael D. Adams <t-madams at microsoft.com>**20070628101312] =

[Make CPS account for on-stack arguments when doing the stack check
Michael D. Adams <t-madams at microsoft.com>**20070628101006] =

[Comment and formatting updates for the CPS pass
Michael D. Adams <t-madams at microsoft.com>**20070628082543] =

[Fix typo from amend-record
Michael D. Adams <t-madams at microsoft.com>**20070627160555] =

[Implemented and fixed bugs in CmmInfo handling
Michael D. Adams <t-madams at microsoft.com>**20070627152130] =

[Formatting only
Michael D. Adams <t-madams at microsoft.com>**20070627151751] =

[Added stack checks to the CPS algorithm
Michael D. Adams <t-madams at microsoft.com>**20070627151503
 =

 This eliminates one of the panics introduced by =

 the previous patch:
 'First pass at implementing info tables for CPS'
   =

 The other panic introduced by that patch still remains.
 It was due to the need to convert from a
   ContinuationInfo to a CmmInfo.
   (codeGen/CgInfoTbls.hs:emitClosureCodeAndInfoTable)
   (codeGen/CgInfoTbls.hs:emitReturnTarget)
] =

[First pass at implementing info tables for CPS
Michael D. Adams <t-madams at microsoft.com>**20070627151257
 =

 This is a fairly complete implementation, however
 two 'panic's have been placed in the critical path
 where the implementation is still a bit lacking so
 do not expect it to run quite yet.
 =

 One call to panic is because we still need to create
 a GC block for procedures that don't have them yet.
 (cmm/CmmCPS.hs:continuationToProc)
 =

 The other is due to the need to convert from a
 ContinuationInfo to a CmmInfo.
 (codeGen/CgInfoTbls.hs:emitClosureCodeAndInfoTable)
 (codeGen/CgInfoTbls.hs:emitReturnTarget)
] =

[Added an SRT to each CmmCall and added the current SRT to the CgMonad
Michael D. Adams <t-madams at microsoft.com>**20070627150903] =

[Added pointerhood to LocalReg
Michael D. Adams <t-madams at microsoft.com>**20070627150133
 This version should compile but is still incomplete as it introduces
 potential bugs at the places marked 'TODO FIXME NOW'.
 It is being recorded to help keep track of changes.
] =

[Fix bug relating to the return values of prim ops
Michael D. Adams <t-madams at microsoft.com>**20070626192352
 The return values were getting put in a LocalReg
 but that LocalReg needed to be stored into the enclosing
 expression's return register (e.g. R1).
] =

[Removed trailing whitespace
Michael D. Adams <t-madams at microsoft.com>**20070621084047] =

[Fixed typo in comment
Michael D. Adams <t-madams at microsoft.com>**20070619085834] =

[Add forgotten compiler/cmm/CmmInfo.hs
Michael D. Adams <t-madams at microsoft.com>**20070613105643] =

[Add formal parameters to the Cmm parser
Michael D. Adams <t-madams at microsoft.com>**20070606090510
 This patch is incomplete and will probably not compile by itself
 but it is being recorded to help keep track of later changes.
] =

[Minor comment update
Michael D. Adams <t-madams at microsoft.com>**20070606085328] =

[Changed C-- parser to allow multiple return values
Michael D. Adams <t-madams at microsoft.com>**20070529174553] =

[Added early draft of parameter passing to the CPS converter
Michael D. Adams <t-madams at microsoft.com>**20070529150616] =

[Minor code cleanup
Michael D. Adams <t-madams at microsoft.com>**20070529150436] =

[Fix bug with proc-point detection (only a temporary fix)
Michael D. Adams <t-madams at microsoft.com>**20070529150206] =

[Move global register saving from the backend to codeGen (CPS specific part=
s)
Michael D. Adams <t-madams at microsoft.com>**20070525195732] =

[Moved global register saving from the backend to codeGen
Michael D. Adams <t-madams at microsoft.com>**20070525193804
 =

 This frees the Cmm data type from keeping a list of live global registers
 in CmmCall which helps prepare for the CPS conversion phase.
 =

 CPS conversion does its own liveness analysis and takes input that should
 not directly refer to parameter registers (e.g. R1, F5, D3, L2).  Since
 these are the only things which could occur in the live global register
 list, CPS conversion makes that field of the CmmCall constructor obsolite.
 =

 Once the CPS conversion pass is fully implemented, global register saving
 will move from codeGen into the CPS pass.  Until then, this patch
 is worth scrutinizing and testing to ensure it doesn't cause any performan=
ce
 or correctness problems as the code passed to the backends by the CPS
 converting will look very similar to the code that this patch makes codeGe=
n
 pass to the backend.
] =

[Formatting changes for CPS code.
Michael D. Adams <t-madams at microsoft.com>**20070525170845] =

[Formatted documentation for compiler/cmm/Dataflow.hs
Michael D. Adams <t-madams at microsoft.com>**20070524161414] =

[Renamed CmmCPSData to CmmBrokenBlock and documented it
Michael D. Adams <t-madams at microsoft.com>**20070524160128] =

[Minor re-organizing of compiler/cmm/CmmCPS.hs
Michael D. Adams <t-madams at microsoft.com>**20070523121521] =

[Fixed missing '#include "HsVersions.h"'
Michael D. Adams <t-madams at microsoft.com>**20070523112830] =

[Factored proc-point analysis into separate file (compiler/cmm/CmmProcPoint=
)
Michael D. Adams <t-madams at microsoft.com>**20070523112729] =

[Removed an older version of selectStackFormat
Michael D. Adams <t-madams at microsoft.com>**20070523105248] =

[Refined the handling of stack frame headers
Michael D. Adams <t-madams at microsoft.com>**20070523105112] =

[Misc. cleanups to CPS converter
Michael D. Adams <t-madams at microsoft.com>**20070523094904] =

[Fixed CPS converter to preserve function names
Michael D. Adams <t-madams at microsoft.com>**20070523094721] =

[Added Proc-Point analysis to the CPS converter (not polished yet)
Michael D. Adams <t-madams at microsoft.com>**20070522153133] =

[Make CmmProc take CmmFormals as argument
Michael D. Adams <t-madams at microsoft.com>**20070522152008
 =

 Since a CmmCall returns CmmFormals which may include
 global registers (and indeed one place in the code
 returns the results of a CmmCall into BaseReg) and
 since CPS conversion will change those return slots
 into formal arguments for the continuation of the call,
 CmmProc has to have CmmFormals for the formal arguments.
 =

 Oddly, the old code never made use of procedure arguments
 so this change only effects the types and not any of the code.
 (Because [] is both of type [LocalReg] and CmmFormals.)
] =

[A small move of the comments in ./compiler/cmm/Dataflow.hs
Michael D. Adams <t-madams at microsoft.com>**20070522135305] =

[Added forgotten ./compiler/cmm/CmmLive.hs
Michael D. Adams <t-madams at microsoft.com>**20070521182517] =

[Document use of no-break space in lexer for C--
Michael D. Adams <t-madams at microsoft.com>**20070521090939] =

[Renamed BlockExitInfo to FinalStmt and all its constructors to match usage
Michael D. Adams <t-madams at microsoft.com>**20070521090028] =

[Major cleanup of the CPS code (but more is still to come)
Michael D. Adams <t-madams at microsoft.com>**20070518213458] =

[Added listSplitUniqSupply to ./compiler/basicTypes/UniqSupply.lhs
Michael D. Adams <t-madams at microsoft.com>**20070518200942
 =

 The function
   listSplitUniqSupply :: UniqSupply -> [UniqSupply]
 splits a UniqSupply into an infinite list of supplies.
 It is a generalization of splitUniqSupply.
] =

[Second working draft of a CPS algorithm for C--.
Michael D. Adams <t-madams at microsoft.com>**20070518180004
 This is a safety check-in, before I begin a cleanup.
] =

[Fixed missing space in pretty printer for CmmJump
Michael D. Adams <t-madams at microsoft.com>**20070518132432] =

[Added spLimReg to complement spReg and hpReg
Michael D. Adams <t-madams at microsoft.com>**20070518132317] =

[Added types CmmActuals and CmmFormals for function parameters to Cmm
Michael D. Adams <t-madams at microsoft.com>**20070518132031] =

[First complete draft of a CPS algorithm.  (Still hackish needs polishing)
Michael D. Adams <t-madams at microsoft.com>**20070516160124] =

[Added "C--" foreign calling convention
Michael D. Adams <t-madams at microsoft.com>**20070516155758] =

[Added 'return' to C--, and made arguments to 'jump' into CmmExpr
Michael D. Adams <t-madams at microsoft.com>**20070516155337] =

[Typo fix in a comment.
Michael D. Adams <t-madams at microsoft.com>**20070514121231] =

[Fixed liveness analysis to use a slower but more correct solution
Michael D. Adams <t-madams at microsoft.com>**20070510135250] =

[Hooked the C-- CPS pass into the compilation pipeline
Michael D. Adams <t-madams at microsoft.com>**20070510134600
 At present it just annotates each block with a comment
 indicating what local registers are live at the start
 of the block.
] =

[Added compiler/cmm/Dataflow.hs
Michael D. Adams <t-madams at microsoft.com>**20070510103650
 Dataflow.hs contains an early draft of the live variable analysis.
 This draft contains known bugs and is being recorded only to provide
 a point to be revert back to if necessary.
] =

[Generate .LC_ indirection-symbols also on x86_64 (as on all other archs ru=
nning Linux)
Clemens Fruhwirth <clemens at endorphin.org>**20070628102432] =

[Restrict .type directives to Linux targets only
Clemens Fruhwirth <clemens at endorphin.org>**20070630082243] =

[Have the users guide just refer to the wiki page on how to report a bug
Ian Lynagh <igloo at earth.li>**20070702140936] =

[Try harder to avoid making a variable with RULES into a loop-breaker
simonpj at microsoft.com**20070702132431
 =

 See Note [Recursive rules] in OccurAnal
 =

] =

[Remove the large ghci banner, and the flags to choose which banner to show
Ian Lynagh <igloo at earth.li>**20070702110155
 Fans of the banner can add
     putStrLn "   ___         ___ _"
     putStrLn "  / _ \\ /\\  /\\/ __(_)"
     putStrLn " / /_\\// /_/ / /  | |   GHC Interactive, for Haskell 98."
     putStrLn "/ /_\\\\/ __  / /___| |   http://www.haskell.org/ghc/"
     putStrLn "\\____/\\/ /_/\\____/|_|   Type :? for help."
     putStrLn ""
 to their ~/.ghci
] =

[Print the right usage message
Ian Lynagh <igloo at earth.li>**20070702102651
 The logic for printing the ghc and ghci usage messages was inverted.
 However, the ghci case will never actually happen with the current code,
 as we print a usage message when cli_mode =3D=3D ShowUsage and choose the
 ghci usage message if cli_mode =3D=3D DoInteractive. This should be fixed
 as part of a larger options handling overhaul.
] =

[-fasm doesn't really take an argument
Ian Lynagh <igloo at earth.li>**20070702102629] =

[clean installPackage too
Simon Marlow <simonmar at microsoft.com>**20070621113023] =

[FIX #1471: print strings using Haskell quoting syntax
Simon Marlow <simonmar at microsoft.com>**20070702092257] =

[Need to build filepath before directory
Ian Lynagh <igloo at earth.li>**20070630141518] =

[Tidy up -keep* flags
Ian Lynagh <igloo at earth.li>**20070630133944] =

[Improve loop-breaker scoring in OccAnal (idea from Roman)
simonpj at microsoft.com**20070629215717
 =

 See Note [Closure conversion] in OccurAnal for details of this
 patch (which merely involves *deleting* a test!).  The test case
 was produced by Roman, and shows up when doing closure conversion
 and vectorisation for data parallelism.  But perhaps other times too.
 =

] =

[Many comments about oclose, plus a fix for Trac #1456
simonpj at microsoft.com**20070629215334
 =

 There was a rather subtle bug in the way 'oclose' works when
 generalising top-level function definitions.  See
 	Note [Important subtlety in oclose]
 in FunDeps for an explanatoin.
 =

 I also tidied up duplication in comments while I was here.
 =

] =

[Improve error message (Trac #1446)
simonpj at microsoft.com**20070629203219] =

[Fixing hpc tools for 6.2 and 6.4
andy at galois.com**20070629185307] =

[Refine printing of names in unification mis-match
simonpj at microsoft.com**20070629161337] =

[Improve name-printing on unification mis-matches, when types share a commo=
n occurrence name
simonpj at microsoft.com**20070629114833
 =

 This improvement arose from a suggestion in Trac #1465
 =

] =

[Add flags for record extensions; still not working properly though
simonpj at microsoft.com**20070628082949] =

[FIX BUILD: we need --exclude-module Trace.* too
Simon Marlow <simonmar at microsoft.com>**20070629110240] =

[unbreak "recompile utils with stage 1"
Simon Marlow <simonmar at microsoft.com>**20070629090705] =

[Checking that type indexes contain no synonym family applications
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20070629063656] =

[RHS of a type instance must be a tau type
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20070629045931] =

[Overlap check for type families
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20070629042007
 - If two "type instance"s overlap, they right-hand sides must be syntactic=
ally
   equal under the overlap substitution.  (Ie, we admit limited overlap, bu=
t
   require the system to still be confluent.)
] =

[Further compileToCore improvements
Tim Chevalier <chevalier at alum.wellesley.edu>**20070629014831
 =

 Per suggestions from Simon M:
 =

 * Changed GHC.checkModule so that it doesn't call depanal.
 * Changed GHC.checkModule to optionally return Core bindings
 as a component of the CheckedModule that it returns (and =

 resulting changes to HscMain.hscFileCheck).
 * As a result, simplified GHC.compileToCore and changed it
 to load the given file so that the caller doesn't have to.
] =

[Fixed a documentation error
Michael D. Adams <t-madams at microsoft.com>**20070608091157] =

[disable .type directives on Windows; they confuse mingw's assembler
Simon Marlow <simonmar at microsoft.com>**20070628104516] =

[Set .type @object for all global symbols in NCG
Clemens Fruhwirth <clemens at endorphin.org>**20070627165150
 =

 When linking against a dynamic library, the linker will emit a warning
 if no type information is present within the library. We generate the
 most trivial type for all externally visible labels, namely @object.
] =

[Also make proper references when not using fPIC but linking against dynami=
c libs
Clemens Fruhwirth <clemens at endorphin.org>**20070619142931] =

[Generate RelocatableReadOnlyData as .data
Clemens Fruhwirth <clemens at endorphin.org>**20070627160640
 =

 The GNU linker expects read-only sections to be relocation
 free. Presumably because the dynamic linker maps all read-only
 sections as read-only mmaps and hence can't do relocations.
 =

 If we want text-relocation-free shared libraries we have to put all
 relocations into writable sections, hence .data.  See
 http://www.mail-archive.com/cvs-all@haskell.org/msg15119.html
] =

[Generalize linkDynLib for ELF platforms
Clemens Fruhwirth <clemens at endorphin.org>**20070627090819
 =

 To create a dynamic shared object (DSO) on ELF platforms, we invoke
 "gcc -shared". This in turn invokes ld. We supply -Bsymbolic to the
 linker, as "ld -Bsymbolic -shared -o <lib> <objs>" resolves all
 references from <objs> to <objs> at library creation time. =

 =

 See http://hackage.haskell.org/trac/ghc/wiki/Commentary/PositionIndependen=
tCode
 =

] =

[Renames functions and constructors to fit their new ability for dynamic li=
nking
Clemens Fruhwirth <clemens at endorphin.org>**20070627090100
 function: staticLink -> linkBinary (will link non static binaries too)
 function: doMkDLL -> linkDynLib (as we can link on ELF too where DLL is an=
 inappropriate term)
 constructor: MkDLL -> LinkDynLib
] =

[PprMach.hs more accurate hack for x86-64, CmmLabelOff is not a relative re=
ference.
Clemens Fruhwirth <clemens at endorphin.org>**20070626134636
 =

 CmmLabelDiffOff are generated in .text and if printed as .quad, causes
 the assembler to emit a PC64 relocation. binutils prior to 2.17 don't
 understand PC64 relocation properly.
 =

 pprDataItem is also used for printing SRT description tables. They are
 part of the .data section and there no PC relative relocations are
 emited. Hence, if we print a .long here, we get a absolute 32-bit
 relocation. 32-bit relocations are problematic in dynamic libraries,
 because dynamic library load addresses are loaded beyond the 32 bit
 boundary, causing the dynamic linker to warn at dynamic linking
 (loading the executable) that there are overflows in the
 relocation. The executable still seems to work because of the small
 memory model, but this is obviously wrong. Hence, remove CmmLabelOff
 from the classification, causing these references to be printed as
 .quad, causing correct 64-bit relocation as in the rest of the .data
 section.  =

 =

 So, this hack now prints PC32 relocations in .text (mostly in the info
 tables), and absolute 64-bit relocations in .data.
 =

] =

[Fix typechecking bug with implicit parameters (Trac #1445)
simonmar at microsoft.com**20070628081105
 =

 tcSplitFunTy_maybe wasn't dealing with types like
 	(?x::Bool) =3D> Int
 Here, tcSplitFunTy_maybe should fail (as it would if there
 was a for-all), because the type is a quantified type.
 =

 See Trac #1445, and test tc230.
 =

] =

[White space only
simonmar at microsoft.com**20070628080203] =

[Improve error message when there is instance overlap
simonpj at microsoft.com**20070628073641] =

[Modify compileToCore to take just a filename
Tim Chevalier <chevalier at alum.wellesley.edu>**20070627224809
 =

 Modified compileToCore to take just a session and a =

 filename, rather than a module name as well, since the module
 name can be computed from the filename. =

] =

[making hpc live
andy at galois.com**20070627181513] =

[+RTS -xbXXXXX sets the "heap base" to 0xXXXXXX
Simon Marlow <simonmar at microsoft.com>**20070627093646
 When debugging the GC and storage manager we often want repeated runs
 of the program to allocate memory at the same addresses, so that we
 can set watch points.  Unfortunately the OS doesn't always give us
 memory at predictable addresses.  This flag gives the OS a hint as to
 where we would like our memory allocated.  Previously I did this by
 changing the HEAP_BASE setting in MBlock.h and recompiling, this patch
 just adds a flag so I don't have to recompile.
] =

[+RTS -V0 disables the interval timer completely (for repeatable debugging)
Simon Marlow <simonmar at microsoft.com>**20070627092941] =

[FIX BUILD (on Windows): follow changes to make threaded RTS compile with -=
fasm
simonmar at microsoft.com**20070627101604] =

[Fix names of coercions in newtype instances
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20070627094200
 - Thanks to Roman for spotting the problem.
] =

[Cleaning up Hpc.c; adding support for reflection into Hpc.
andy at galois.com**20070627063631] =

[Fixing Makefile hpc to use compat
andy at galois.com**20070627060721] =

[Adding Tix to compat library, so that hpc in utils can use it
andy at galois.com**20070627060430] =

[fixing creation of directory for html output; fixing html markup for 0% ba=
rs.
andy at galois.com**20070627054846] =

[Fixing -fhpc flag to allow -fno-hpc
andy at galois.com**20070627053808] =

[Fixed deriving of associated data types
Manuel M T Chakravarty <chak at cse.unsw.edu.au>**20070627054834
 - We forgot to pull the data declarations nested in class instances out of
   the instances when collecting all the predicates that we need derive.
   Thanks to Roman for spotting this.
] =

[add missing case for compiling 64-bit operations on x86
Simon Marlow <simonmar at microsoft.com>**20070626211153] =

[Make the threaded RTS compilable using -fasm
Simon Marlow <simonmar at microsoft.com>**20070626211058
 We needed to turn some inline C functions and C macros into either
 real C functions or C-- macros.
] =

[x86_64: fix a few bugs in the >8 floating point args case
Simon Marlow <simonmar at microsoft.com>**20070626103055] =

[make inplace scripts less sensitive to /bin/sh quoting by avoiding \
Simon Marlow <simonmar at microsoft.com>**20070623200006] =

[excluding Trace.Hpc.* when using the compat library
andy at galois.com**20070626072219] =

[Making -fhpc work with a stage1 build, via the compat 'package'.
andy at galois.com**20070626053429] =

[Adding hpc lib as part of the compat 'package'
andy at galois.com**20070626051136] =

[Cleanup Hpc sub-system, remove hpc-tracer implementation.
andy at galois.com**20070626041958] =

[Add a compileToCore function to the GHC API
Tim Chevalier <chevalier at alum.wellesley.edu>**20070625220608
 =

 Added a compileToCore function to the GHC API that takes a
   session, module, and filename, and returns a list of Core
   bindings if successful. This is just a first try and could
   probably be improved (for example, there's probably a way to
   get the filename from the module so that it doesn't have to =

   be passed in, I just don't see it offhand.)
 =

] =

[Define SUBDIRS in Makefile (needed for clean; fixes trac #1440)
Ian Lynagh <igloo at earth.li>**20070625174952] =

[Tweak the configuration and installation slightly
Ian Lynagh <igloo at earth.li>**20070625174011
 Make it so that the documentation ends up where Cabal expects it to be
 on Windows (prep-bin-dist-mingw used to move it).
] =

[withExtendedLinkerState: don't revert the whole state
Simon Marlow <simonmar at microsoft.com>**20070625151455
 Fixes test failures print017 and print024
] =

[Print infix type constructors in an infix way
simonpj at microsoft.com**20070625152858
 =

 Fixes Trac #1425.  The printer for types doesn't know about fixities.
 (It could be educated to know, but it doesn't at the moment.)  So it
 treats all infix tycons as of precedence less than application and functio=
n
 arrrow.
 =

 I took a slight shortcut and reused function-arrow prededence, so I think
 you may get
 	T -> T :% T
 meaning
 	T -> (T :% T)
 =

 If that becomes a problem we can fix it.
 =

] =

[Clamp -O flag to beween 0 and 2
simonpj at microsoft.com**20070625152616
 =

 Fixes Trac #1272
 =

] =

[Adding hpc tools, as a single program.
andy at galois.com**20070625070943] =

[Update version numbering policy in the users guide
Ian Lynagh <igloo at earth.li>**20070623224440] =

[Fix an error message
Ian Lynagh <igloo at earth.li>**20070623190653
 `y' in the error message
     `x' is not a (visible) method of class `y'
 had gone missing.
] =

[turning off -fhpc in stage1 built ghc
andy at galois.com**20070622225226] =

[removing -fhpc-tracer from ghc, is subsumed by the GHC debugger
andy at galois.com**20070622224226] =

[Stage2 now used the package hpc to get the hpc datastructures
andy at galois.com**20070622224038
 Stage1 no longer supports hpc (-fhpc is ignored)
 =

] =

[Fix typo in Makefile
Ian Lynagh <igloo at earth.li>**20070622222133] =

[Adding hpc package to ghc core libraries
andy at galois.com**20070622171851] =

[Change how the libraries Makefile adds --configure-option=3D flags; fixes =
#1431
Ian Lynagh <igloo at earth.li>**20070622160951
 We now assume that each configure option is quoted with '', and thus
 replace " '" with " --configure-option=3D'".
] =

[update with new libraries
Simon Marlow <simonmar at microsoft.com>**20070622131211] =

[FIX BUILD on Windows: horrible hack to work around make(?) bug
Simon Marlow <simonmar at microsoft.com>*-20070621144519] =

[FIX BUILD (on Windows): Cabal must invoke compiler/stage1/ghc-inplace
Simon Marlow <simonmar at microsoft.com>**20070622111634
 not compiler/ghc-inplace, which is a symlink.
 =

] =

[remove unnecessary cruft
Simon Marlow <simonmar at microsoft.com>**20070622075602] =

[FIX BUILD: all builds need --template, not just Windows
Simon Marlow <simonmar at microsoft.com>**20070622075444] =

[ignore all but the last --template option
Simon Marlow <simonmar at microsoft.com>**20070622075417] =

[Unbreak the stage-2 compiler (record-type changes)
simonpj at microsoft.com**20070621170131] =

[-fglasgow-exts implies -X=3DGADTs
simonpj at microsoft.com**20070621162152] =

[FIX read040: patterns with type sig on LHS of do-binding
simonpj at microsoft.com**20070621143721
 =

 f () =3D do { x :: Bool <- return True; ... }
 =

 For some reason the production for 'pat' required 'infixexp' on the
 LHS of a do-notation binding.  This patch makes it an 'exp', which =

 thereby allows an expression with a type sig.
 =

 Happily, there are no new shift-reduce errors, so I don't think this
 will break anything else.
 =

 =

 =

] =

[Another wibble to the head-exploded error message (suggested by David Roun=
dy)
simonpj at microsoft.com**20070621141144] =

[Use the correct flag for controlling scoped type variables in an instance =
decl
simonpj at microsoft.com**20070621141114] =

[Improve 'my head exploded' error message =

simonpj at microsoft.com**20070621131650] =

[FIX BUILD: add missing prime!
simonpj at microsoft.com**20070621131625] =

[FIX BUILD on Windows: horrible hack to work around make(?) bug
Simon Marlow <simonmar at microsoft.com>**20070621144519] =

[yet more fixes: Cygwin broke this time
Simon Marlow <simonmar at microsoft.com>**20070621140653] =

[fix bugs with hsc2hs-inplace
Lemmih <lemmih at gmail.com>**20070621132825] =

[mk/build.mk is optional
Lemmih <lemmih at gmail.com>**20070621130727] =

[further fixes to the inplace scripts
Lemmih <lemmih at gmail.com>**20070621130657] =

[use a binary for hsc2hs-inplace too
Simon Marlow <simonmar at microsoft.com>**20070621121426] =

[Fix problems with new inplace stuff on Cygwin
Simon Marlow <simonmar at microsoft.com>**20070621114147] =

[FIX BUILD: can't build the makefiles during make boot
Simon Marlow <simonmar at microsoft.com>**20070621095154] =

[clean up lib/{GNUmakefile,Makefile.local}
Simon Marlow <simonmar at microsoft.com>**20070620132809] =

[default_target should be "all", not "build"
Simon Marlow <simonmar at microsoft.com>**20070620132001] =

[add comment
Simon Marlow <simonmar at microsoft.com>**20070620131949] =

[Fix a problem with package.mk being included too early
Simon Marlow <simonmar at microsoft.com>**20070620122224] =

[Use setup makefile + make by default to build libraries
Simon Marlow <simonmar at microsoft.com>**20070620122009
 =

 The advantages of this are
   (a) it's a step closer to getting -j working again (make -j works in
       an individual library, but not in libraries/ yet).
   (b) it's easier to hack on libraries: make dist/build/Foo.o
   (c) it's a step closer to getting HC bootstrapping again
 =

 The build system creates <lib>/GNUmakefile as part of 'make boot'.
 This was chosen so as not to interfere with existing Makefiles, but
 it's a bit of a hack.  (previously I used CabalMakefile, but that
 means adding -f CabalMakefile each time you run make, and that's a
 pain).
] =

[Use a real binary instead of scripts for ghc-inplace
Simon Marlow <simonmar at microsoft.com>**20070621101324
 Fixes various problems with getting the scripts right on Windows.
 Binaries are universally executable by /bin/sh, cmd.exe and rawSystem,
 so this allows us to remove some platform-specific hacks.
] =

[Add several new record features
Lemmih <lemmih at gmail.com>**20070621091552
 =

 1. Record disambiguation (-fdisambiguate-record-fields)
 =

 In record construction and pattern matching (although not
 in record updates) it is clear which field name is intended
 even if there are several in scope.  This extension uses
 the constructor to disambiguate.  Thus
 	C { x=3D3 }
 uses the 'x' field from constructor C (assuming there is one)
 even if there are many x's in scope.
 =

 =

 2. Record punning (-frecord-puns)
 =

 In a record construction or pattern match or update you can =

 omit the "=3D" part, thus
 	C { x, y }
 This is just syntactic sugar for
 	C { x=3Dx, y=3Dy }
 =

 =

 3.  Dot-dot notation for records (-frecord-dot-dot)
 =

 In record construction or pattern match (but not update) =

 you can use ".." to mean "all the remaining fields".  So
 =

 	C { x=3Dv, .. }
 =

 means to fill in the remaining fields to give
 =

 	C { x=3Dv, y=3Dy }
 =

 (assuming C has fields x and y).  This might reasonably
 considered very dodgy stuff.  For pattern-matching it brings
 into scope a bunch of things that are not explictly mentioned;
 and in record construction it just picks whatver 'y' is in
 scope for the 'y' field.   Still, Lennart Augustsson really
 wants it, and it's a feature that is extremely easy to explain.
 =

 =

 Implementation
 ~~~~~~~~~~~~~~
 I thought of using the "parent" field in the GlobalRdrEnv, but
 that's really used for import/export and just isn't right for this.
 For example, for import/export a field is a subordinate of the *type
 constructor* whereas here we need to know what fields belong to a
 particular *data* constructor.
 =

 The main thing is that we need to map a data constructor to its
 fields, and we need to do so in the renamer.   For imported modules
 it's easy: just look in the imported TypeEnv.  For the module be