New patches: [Fix up .lhs delimiters a bit Samuel Bronson **20061104015642] { hunk ./compiler/simplCore/SimplUtils.lhs 785 -\end{code} +\end{code} hunk ./compiler/simplCore/SimplUtils.lhs 1259 -\end{code} +\end{verbatim} } Context: [Unlifted args are only interesting when we know what they are Samuel Bronson **20061103232013] [PrelRules for bitshifts redux Samuel Bronson **20061103231803] [Major overhaul of the Simplifier simonpj@microsoft.com**20061101164329 This big patch completely overhauls the Simplifier. The simplifier had grown old and crufty, and was hard to understand and maintain. This new version is still quite complicated, because the simplifier does a lot, but it's much easier to understand, for me at least. It does mean that I have touched almost every line of the simplifier, so the diff is a large one. Big changes are these * When simplifying an Expr we generate a simplified Expr plus a bunch of "floats", which are bindings that have floated out of the Expr. Before, this float stuff was returned separately, but not they are embedded in the SimplEnv, which makes the plumbing much easier and more robust. In particular, the SimplEnv already meaintains the "in-scope set", and making that travel with the floats helps to ensure that we always use the right in-scope set. This change has a pervasive effect. * Rather than simplifying the args of a call before trying rules and inlining, we now defer simplifying the args until both rules and inlining have failed, so we're going to leave a call in the result. This avoids the risk of repeatedly simplifying an argument, which was handled by funny ad-hoc flags before. The downside is that we must apply the substitution to the args before rule-matching; and if thep rule doesn't match that is wasted work. But having any rules at all is the exception not the rule, and the substitution is lazy, so we only substitute until a no-match is found. The code is much more elegant though. * A SimplCont is now more zipper-like. It used to have an embedded function, but that was a bit hard to think about, and now it's nice and consistent. The relevant constructors are StrictArg and StrictBind * Each Rule now has an *arity* (gotten by CoreSyn.ruleArity), which tells how many arguments it matches against. This entailed adding a field ru_nargs to a BuiltinRule. And that made me look at PrelRules; I did quite a bit of refactoring in the end, so the diff in PrelRules looks much biggger than it really is. * A little refactoring in OccurAnal. The key change is that in the RHS of x = y `cast` co we regard 'y' as "many", so that it doesn't get inlined into the RHS of x. This allows x to be inlined elsewhere. It's very like the existing situation for x = Just y where we treat 'y' as "many". ] [Improve error message from ghc --make when filename and modulename differ simonpj@microsoft.com**20061102123111] [Improve handling of unused imports (test is mod75) simonpj@microsoft.com**20061102120441] [Remove unused lookupDeprec function simonpj@microsoft.com**20061102120402] [Fix handling of non-in-scope exports (fixes test mod7) simonpj@microsoft.com**20061102120304] [Comments and layout only simonpj@microsoft.com**20061102093954] [import Maybes wibble sof@galois.com**20061101221108] [add a few #includes to make it compile sof@galois.com**20061101220950] [Trim imports simonpj@microsoft.com**20061101173439] [Default the kind of unconstrained meta-type variables before tcSimplifyTop simonpj@microsoft.com**20061101173325 This patch fixes a long standing bug, Trac #179, and a recently reported one, Trac #963. The problem in both cases was an unconstrained type variable 'a', of kind argTypeKind (printed "??") or openTypeKind ("?"). At top level we now default the kind of such variables to liftedTypeKind ("*"). This is important because then instance declarations can match it. The defaulting function is called TcMType.zonkTopTyVar, and is commented. (Most of the extra lines in the patch are comments!) ] [Comments and layout only simonpj@microsoft.com**20061101170448] [Minor refactoring simonpj@microsoft.com**20061101143416] [Remove unused import simonpj@microsoft.com**20061101142550] [Comments only simonpj@microsoft.com**20061101142343] [Make idInfo fail more informatively on TyVars simonpj@microsoft.com**20061101142246] [Improve error message (push to 6.6 branch) simonpj@microsoft.com**20061101123727] [Fix error reporting for contexts during deriving (Trac 958) simonpj@microsoft.com**20061101122120 When doing the fixpoint iteration for 'deriving' we have to be careful not to end up in a loop, even if we have -fallow-undecidable-instances. Test is tcfail169 ] [Fix a long-standing but obscure bug in worker-wrapper generation simonpj@microsoft.com**20061101110442 Worker/wrapper generation sometimes has to add a dummy void (State#) argument to retain laziness. But when generating the strictness signature for the worker, I forgot to take account of the extra argument, resulting in a bogus strictness signature. Result, chaos. Trac 317 shows this up, and this patch fixes it. ] [Move --help, --version etc to 4.4 (modes) because that is what they really are simonpj@microsoft.com**20061030135204] [remove the *.raw files Simon Marlow **20061027152129] [improve the diagnostic generated by memInventory() for a memory leak Simon Marlow **20061027133611] [count mut-list bytes, not words Simon Marlow **20061027133445] [fix calculation of GC Work for 6.6+ Simon Marlow **20061027103439] [copyright updates and add Commentary links Simon Marlow **20061026092536] [rename spin lock functions, and use macros for non-THREADED_RTS Simon Marlow **20061026091814] [Remove PAR/GRAN code from the storage manager Simon Marlow **20061025111114 ] [markRootPtrTable: write out type in full instead of using evac_fn typedef Simon Marlow **20061026085418 Fixes stage 2 build with -fvia-C ] [an expression with a TickBox round it is not in HNF. andy@galois.com**20061025203829] [Adding arrows to the acceptable code for hpc andy@galois.com**20061025201514] [fixing type error inside Hpc inc; we had a 32 bit '1'. andy@galois.com**20061025201422] [Improving error message in CmmLint andy@galois.com**20061025201338] [Changing Main.tix to .tix in the Hpc RTS andy@galois.com**20061025201229] [Add pointer to coding conventions to HACKING Manuel M T Chakravarty **20061025164331] [6.4 compatiblity andy@galois.com**20061025075900] [Haskell Program Coverage andy@galois.com**20061024212907 This large checkin is the new ghc version of Haskell Program Coverage, an expression-level coverage tool for Haskell. Parts: - Hpc.[ch] - small runtime support for Hpc; reading/writing *.tix files. - Coverage.lhs - Annotates the HsSyn with coverage tickboxes. - New Note's in Core, - TickBox -- ticked on entry to sub-expression - BinaryTickBox -- ticked on exit to sub-expression, depending -- on the boolean result. - New Stg level TickBox (no BinaryTickBoxes, though) You can run the coverage tool with -fhpc at compile time. Main must be compiled with -fhpc. ] [fix 5.04 compile Simon Marlow **20061024133943] [fix indentation wibble to make it compile with 5.04 Simon Marlow **20061024122800] [Re-enable TABLES_NEXT_TO_CODE for powerpc (was accidentally disabled) wolfgang.thaller@gmx.net**20061023203321] [Split GC.c, and move storage manager into sm/ directory Simon Marlow **20061024091357 In preparation for parallel GC, split up the monolithic GC.c file into smaller parts. Also in this patch (and difficult to separate, unfortunatley): - Don't include Stable.h in Rts.h, instead just include it where necessary. - consistently use STATIC_INLINE in source files, and INLINE_HEADER in header files. STATIC_INLINE is now turned off when DEBUG is on, to make debugging easier. - The GC no longer takes the get_roots function as an argument. We weren't making use of this generalisation. ] [fix a printf format warning Simon Marlow **20061024091323] [add prototypes for exitHashTable() Simon Marlow **20061020102934] [remove ^Ms Simon Marlow **20061019141218] [add pure spin locks Simon Marlow **20061019135620] [comments only: document allocateLocal() Simon Marlow **20061019101200] [rename allocated_bytes() to allocatedBytes() Simon Marlow **20061019101129] [remove performGCWithRoots() Simon Marlow **20061019101102 I don't think this can ever be useful, because to add more roots you need to do it consistently for every GC. The right way to add roots is to use newStablePtr. ] [Get External Core (-fext-core) working with readline Samuel Bronson **20061101003649 Had to add support for dynamic C calls and for foreign labels (Addr# constants). Actually I only did the printing side -- parsing is not done yet. But at least now you can build the libraries with -fext-core. I also got the function arrow to print out properly again (it was printing fully-qualified and z-coded!) I also added a field for calling convention name to the External data constructor in ExternalCore.Exp (for static C calls). I'm not exactly sure where to document all of this, so I haven't done that, though I did comment the code a bit. ] [Bump the HEAD to 6.7 Ian Lynagh **20061024003553] [Clean up debugging code in RnNames Manuel M T Chakravarty **20061023180503] [wibble in parseStaticFlags Simon Marlow **20061023145817 should fix profiling and unreg in HEAD ] [Improve error messages for indexed types Manuel M T Chakravarty **20061022171212] [A little abstraction basvandijk@home.nl**20061019152328] [Fix handling of family instances in the presense of this doc stuff Manuel M T Chakravarty **20061022004904 - Not sure whether I do the right thing, because I don't understand the doc stuff. However, the original code was definitely wrong and breaking the renaming of family instance declarations. - The important point is that in data instance T pats = rhs T is *not* a defining occurence of T (similarly as C is not a defining occurence in "instance C Int"). ] [TAG 2006-10-22 Ian Lynagh **20061022003640] [Fix parent position in RnNames.nubAvails Manuel M T Chakravarty **20061021035829 - `RnNames.nubAvails', which amalgamates AvailInfo items that belong to the same parent, needs to be careful that the parent name occurs first if it is in the list of subnames at all. (Otherwise, we can get funny export items in ifaces.) - I discovered this while debugging family import/exports, but I am pretty sure the bug would also have shown up without using families under the right circumstances. ] [Fix export of associated families with new name parent story Manuel M T Chakravarty **20061021002813 Given module Exp (T) where class C a where data T a :: * we need the AvailInfo for the export item to be C|{T}, not just T. This patch achieves that under the new name parent scheme. ] [Fix processing of imports involving ATs with the new name parent code Manuel M T Chakravarty **20061020180442 Associated types in import lists require special care and the new name parent code broke that. What's the problem? in the presence of ATs the name parent relation can have a depth of two (not just one as in H98). Here is an example: class GMapKey a where data GMap a :: * -> * instance GMapKey Int where data GMap Int v = GMapInt ... The data constructor GMapInt's parent is GMap whose parent in turn is the class GMapKey; ie, GMapKey is GMapInt's grand parent. In H98, data types have no parents (which is in some places in the code represented by making them their own parent). I fixed this by extending the information in filterImport's occ_env and taking the case of associated types explicitly in consideration when processing the various forms of IE items. ] [Fix family instance bug due to the name parent elimination Manuel M T Chakravarty **20061019180103 - Its important that `isImplicitTyCon' considers (a) associated families to be implicit, but (b) considers family instances *not* to be implicit (for the same reasons that a dfun is not implicit). ] [Fix show-iface for family instances & add debug ppr for type declarations Manuel M T Chakravarty **20061019165840] [Run dos2unix on all the outputs, and don't let it eat stderr Ian Lynagh **20061019134818] [Fix stage1 build with 6.2.1 (from Andy Gill) Ian Lynagh **20061019000807] [Fix the build with GHC 6.2.2 Ian Lynagh **20061018230555] [Cross-module consistency check for family instances Manuel M T Chakravarty **20061018221300] [Fixed spelling error in compiler/ghci/InteractiveUI.hs and docs/users_guide/ghci.xml basvandijk@home.nl**20061011204301] [Fix a bug in Lint (which wrongly complained when compiling Data.Sequence with -02) simonpj@microsoft.com**20061018120500] [Add the primitive type Any, and use it for Dynamics simonpj@microsoft.com**20061018115658 GHC's code generator can only enter a closure if it's guaranteed not to be a function. In the Dynamic module, we were using the type (forall a.a) as the type to which the dynamic type was unsafely cast: type Obj = forall a.a Gut alas this polytype was sometimes instantiated to (), something like this (it only bit when profiling was enabled) let y::() = dyn () in (y `cast` ..) p q As a result, an ASSERT in ClosureInfo fired (hooray). I've tided this up by making a new, primitive, lifted type Any, and arranging that Dynamic uses Any, thus: type Obj = ANy While I was at it, I also arranged that when the type checker instantiates un-constrained type variables, it now instantiates them to Any, not () e.g. length Any [] [There remains a Horrible Hack when we want Any-like things at arbitrary kinds. This essentially never happens, but see comments with TysPrim.mkAnyPrimTyCon.] Anyway, this fixes Trac #905 ] [Add comment about arity simonpj@microsoft.com**20061018112418 I'm not sure what the significance of the "arity" of a primtive TyCon is. They aren't necessarily saturated, so it's not that. I rather think that arity is only relevant for SynTyCon AlgTyCon CoercionTyCon This comment (and commit message) is just an aide memoire. ] [Spelling in comment simonpj@microsoft.com**20061018112351] [Minor refactoring simonpj@microsoft.com**20061018112320] [Comments onl simonpj@microsoft.com**20061018112235] [fix build for 6.4.x and 6.6.x Simon Marlow **20061018080526] [compensate for gmp/configure sometimes not being executable Simon Marlow **20061017132215] [Rejig TABLES_NEXT_TO_CODE: the -unreg flag was broken by earlier changes Simon Marlow **20061017094435 A GHC binary can generally build either registerised or unregisterised code, unless it is unregisterised only. The previous changes broke this, but I think I've now restored it. ] [Stage 2 fix to "Keep track of family instance modules" Manuel M T Chakravarty **20061016194048] [remove use of FiniteMap, use Text.Printf Simon Marlow **20061016151935] [fix a regular expression in banner_re Simon Marlow **20061016150802] [Don't squish "Inlined fn" into the right margin quite as much in trace output Samuel Bronson **20061016130004] [Fix build on x86_64 Simon Marlow **20061016112045 ] [Fix deadlock on second call to newSession Simon Marlow **20061016111741 Tracked down by Krasimir Angelov ] [Build the GHC package in stage 3 too Simon Marlow **20061016110926 This fixes the problem with the nightly builds not including the GHC package. ] [more fixups to make a stage 3 build do the right thing with the ghc package Simon Marlow **20061013135318] [use the correct $(HC) Simon Marlow **20061013134443] [remove unused origPkgIdMap field from PackageState Simon Marlow **20061006105148] [Cache the package database the first time it is read Simon Marlow **20061006104221 This was a slight oversight on my part, I intended to store the pristine database in the pkgDatabase of DynFlags, but managed to forget to do it. ] [fix non-DEBUG build (probably my fault, sorry) Simon Marlow **20061016105852] [Add assertion checks for mkCoVar/mkTyVar simonpj@microsoft.com**20061013162434 A type variable has a flag saying whether it is a *type* variable or a *coercion* variable. This patch adds assertions to check the flag. And it adds fixes to places which were Wrong (and hence fired the assertion)! Also removed isCoVar from Coercion, since it's done by Var.isCoVar. ] [Uncomment code to emit a space in place of a '>' in literate scripts Ian Lynagh **20061013131514 This fixes trac #210. Test is read041. ] [Change type of TcGadt.refineType, plus consequences simonpj@microsoft.com**20061013115801] [cachegrind-analyse: Sort with increased things at the *top* Samuel Bronson **20061021231339] [Fix parsing a little... (added a few trys) Samuel Bronson **20061021225743] [cachegrind-annotate: handle parse errors correctly Samuel Bronson **20061021225442] [New utility cachegrind-analyse to compare cachegrind output from two runs Samuel Bronson **20061021215951] [Count cased-over primops on the off chance that it will help Samuel Bronson **20061018204652] [Merge imports Samuel Bronson **20061011221237] [Teach the inliner about primitive comparisons against constants Samuel Bronson **20061010204301] [Try to get the right output for nofib-analyse Samuel Bronson **20061014175855] [Get nofib-analyse to build with 6.4 at least... Samuel Bronson **20061014163442] [More refactoring in RnNames simonpj@microsoft.com**20061013094230 I rather self-indulgently spent a chunk of yesterday working on refactoring RnNames further. The result is significantly simpler: * A GlobalRdrElt gets an extra field, gre_par, which records the parent (if any) of the name * ImportAvails has two fields deleted: imp_env and imp_parent. The information provided by these fields was only used when processing the export list; and the same information is now readily generated from the GlobalRdrElts in the GlobalRdrEnv I also did some tidying up; notably moving AvailEnv stuff from TcRnTypes to RnNames. The result is tha the compiler is some 130 lines shorter than before ] [Keep track of family instance modules Manuel M T Chakravarty **20061013004223 - Now each modules carries (1) a flag saying whether it contains family instance declarations and (2) a list of all modules further down in the import tree that contain family instance declarations. (The information is split into these two parts for the exact same reasons why the info about orphan modules is split, too.) - This is the first step to *optimised* overlap checking of family instances coming from imported modules. *** WARNING: This patch changes the interface file format! *** *** Recompile libraries and stage2 from scratch! *** ] [Overlap check for family instances def'd in current module Manuel M T Chakravarty **20061012203737 - All family instances are checked for overlap when entered into TcGblEnv. Their are checked against all instances in the EPS and those currently in the TcGblEnv. ] [Comments only simonpj@microsoft.com**20061012160254] [Make Inst into a record type to ease subsequent changes simonpj@microsoft.com**20061011112305] [Improve pretty-printing slightly simonpj@microsoft.com**20061011112242] [Add comments about primop rules simonpj@microsoft.com**20061011112224] [fix definition of fib in example code Simon Marlow *-20061012110711] [Track changes in source packaging scheme sven.panne@aedion.de**20061012121213] [fix definition of fib in example code Simon Marlow **20061012110711] [Partially fix GHCi when unregisterised Ian Lynagh **20061012013901 We were constructing info tables designed for TABLES_NEXT_TO_CODE, but were building without TABLES_NEXT_TO_CODE. This patch also fixes a bug when we are unregisterised on amd64 and have code with an address above 2^32. ] [More import tidying and fixing the stage 2 build Simon Marlow **20061011200110] [Use relative URLs when referring to libraries; push to 6.6 branch simonpj@microsoft.com**20061011142502] [Improve documentation of concurrent and parallel Haskell; push to branch simonpj@microsoft.com**20061010155834] [Correct id to linkend simonpj@microsoft.com**20061010155814] [Fix trac #921: generate *q instructions for int-float conversions Ian Lynagh **20061011140007 We need to generate, e.g., cvtsi2sdq rather than cvtsi2sd on amd64 in order to have int-float conversions work correctly for values not correctly representable in 32 bits. ] [Module header tidyup #2 Simon Marlow **20061011143523 Push this further along, and fix build problems in the first patch. ] [remove BitSet, it isn't used Simon Marlow **20061011131614] [Module header tidyup, phase 1 Simon Marlow **20061011120517 This patch is a start on removing import lists and generally tidying up the top of each module. In addition to removing import lists: - Change DATA.IOREF -> Data.IORef etc. - Change List -> Data.List etc. - Remove $Id$ - Update copyrights - Re-order imports to put non-GHC imports last - Remove some unused and duplicate imports ] [Interface file optimisation and removal of nameParent Simon Marlow **20061011120518 This large commit combines several interrelated changes: - IfaceSyn now contains actual Names rather than the special IfaceExtName type. The binary interface file contains a symbol table of Names, where each entry is a (package, ModuleName, OccName) triple. Names in the IfaceSyn point to entries in the symbol table. This reduces the size of interface files, which should hopefully improve performance (not measured yet). The toIfaceXXX functions now do not need to pass around a function from Name -> IfaceExtName, which makes that code simpler. - Names now do not point directly to their parents, and the nameParent operation has gone away. It turned out to be hard to keep this information consistent in practice, and the parent info was only valid in some Names. Instead we made the following changes: * ImportAvails contains a new field imp_parent :: NameEnv AvailInfo which gives the family info for any Name in scope, and is used by the renamer when renaming export lists, amongst other things. This info is thrown away after renaming. * The mi_ver_fn field of ModIface now maps to (OccName,Version) instead of just Version, where the OccName is the parent name. This mapping is used when constructing the usage info for dependent modules. There may be entries in mi_ver_fn for things that are not in scope, whereas imp_parent only deals with in-scope things. * The md_exports field of ModDetails now contains [AvailInfo] rather than NameSet. This gives us family info for the exported names of a module. Also: - ifaceDeclSubBinders moved to IfaceSyn (seems like the right place for it). - heavily refactored renaming of import/export lists. - Unfortunately external core is now broken, as it relied on IfaceSyn. It requires some attention. ] [add extendNameEnvList_C Simon Marlow **20061010153137] [getMainDeclBinder should return Nothing for a binding with no variables Simon Marlow **20061010153023 See test rn003 ] [Use ":Co", not "Co" to prefix coercion TyCon names Simon Marlow **20061010134449 Avoid possibility of name clash ] [Fix another hi-boot file Ian Lynagh **20061010235157] [Removed unused unwrapFamInstBody from MkId Manuel M T Chakravarty **20061010205843] [Rejig the auto-scc wrapping stuff simonpj@microsoft.com**20061010164116] [Do not filter the type envt after each GHCi stmt simonpj@microsoft.com**20061010143225 Fixes Trac #925 A new comment in TcRnDriver in tcRnStmt reads thus: At one stage I removed any shadowed bindings from the type_env; they are inaccessible but might, I suppose, cause a space leak if we leave them there. However, with Template Haskell they aren't necessarily inaccessible. Consider this GHCi session Prelude> let f n = n * 2 :: Int Prelude> fName <- runQ [| f |] Prelude> $(return $ AppE fName (LitE (IntegerL 7))) 14 Prelude> let f n = n * 3 :: Int Prelude> $(return $ AppE fName (LitE (IntegerL 7))) In the last line we use 'fName', which resolves to the *first* 'f' in scope. If we delete it from the type env, GHCi crashes because it doesn't expect that. ] [Fail more informatively when a global isn't in the type environment simonpj@microsoft.com**20061010143145] [Rough matches for family instances Manuel M T Chakravarty **20061010044656 - Class and type family instances just got a lot more similar. - FamInst, like Instance, now has a rough match signature. The idea is the same: if the rough match doesn't match, there is no need to pull in the while tycon describing the instance (from a lazily read iface). - IfaceFamInst changes in a similar way and the list of all IFaceFamInsts is now written into the binary iface (as for class instances), as deriving it from the tycon (as before) would render the whole rough matching useless. - As a result of this, the plumbing of class instances and type instances through the various environments, ModIface, ModGuts, and ModDetails is now almost the same. (The remaining difference are mostly because the dfun of a class instance is an Id, but type instance refer to a TyCon, not an Id.) *** WARNING: The interface file format changed! *** *** Rebuild from scratch. *** ] [Tweaks and missing case in disassembler Ian Lynagh **20061009230539] [Update hi-boot files to fix building with old GHCs Ian Lynagh **20061009193218] [STM invariants tharris@microsoft.com**20061007122907] [Fix unregisterised alpha builds Ian Lynagh **20061004125857] [Comments and an import-trim simonpj@microsoft.com**20061006161403] [Mention that the module sub-directory structure for .o and .hi files is created automatically by GHC simonpj@microsoft.com**20061006151234] [Bale out before renamer errors are duplicated simonpj@microsoft.com**20061006140250 With the new Haddock patch, renamer errors can be duplicated; so we want to bale out before doing the Haddock stuff if errors are found. (E.g test mod67 shows this up.) ] [Avoid repeatedly loading GHC.Prim simonpj@microsoft.com**20061006140102 This patch changes HscTypes.lookupIfaceByModule. The problem was that when compiling the 'base' package, we'd repeatedly reload GHC.Prim. This is easily fixed by looking in the PIT too. A comment with lookupIfaceByModule explains ] [Print the 'skipping' messages at verbosity level 1 simonpj@microsoft.com**20061006140034] [Fix up the typechecking of interface files during --make simonpj@microsoft.com**20061006131932 This patch fixes Trac #909. The problem was that when compiling the base package, the handling of wired-in things wasn't right; in TcIface.tcWiredInTyCon it repeatedly loaded GHC.Base.hi into the PIT, even though that was the very module it was compiling. The main fix is by introducing TcIface.ifCheckWiredInThing. But I did some minor refactoring as well. ] [Import trimming simonpj@microsoft.com**20061006131830] [Figure out where the rest of the repositories are, based on defaultrepo Simon Marlow **20061006100049 This is a slight improvement over the patch sent by jamey@minilop.net, we now do it properly if the source repo was a GHC tree on the local filesystem too. Merge post 6.6. ] [Yet another fix to mkAtomicArgs (for floating of casts) simonpj@microsoft.com**20061006075213 Comment Note [Take care] explains. mkAtomicArgs is a mess. A substantial rewrite of Simplify is needed. ] [Improve comments and error tracing simonpj@microsoft.com**20061006075058] [Improve error message simonpj@microsoft.com**20061006072002] [Undo an accidentally-committed patch by Audrey simonpj@microsoft.com**20061006071925] [Merge Haddock comment support from ghc.haddock -- big patch davve@dtek.chalmers.se**20061005220258] [Remove casts from lvalues to allow compilation under GCC 4.0 brianlsmith@gmail.com**20060929185931] [Correct the float-coercions-out-of-let patch simonpj@microsoft.com**20061005161819] [Merge changes Ian Lynagh **20061005150630] [Improve the correlation betweens documented and existent options Ian Lynagh **20061003220354] [Document -dfaststring-stats Ian Lynagh **20061003154147] [Rearrange docs to have all the -ddump-* options together Ian Lynagh **20061003153422] [Remove unused option -femit-extern-decls Ian Lynagh **20061003145854] [Documentation updates Ian Lynagh **20061003142658] [Fix typo Ian Lynagh **20061003121926] [More bootstrapping updates Ian Lynagh **20061005145629] [TAG 2006-10-05 Lemmih **20061005150234] Patch bundle hash: cfe4378ca3cd5947798493acaebbece20d447515