Starting with tag: [TAG 2006-10-22 Ian Lynagh **20061022003640] [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"). ] [A little abstraction basvandijk@home.nl**20061019152328] [Improve error messages for indexed types Manuel M T Chakravarty **20061022171212] [wibble in parseStaticFlags Simon Marlow **20061023145817 should fix profiling and unreg in HEAD ] [Clean up debugging code in RnNames Manuel M T Chakravarty **20061023180503] [Bump the HEAD to 6.7 Ian Lynagh **20061024003553] [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. ] [rename allocated_bytes() to allocatedBytes() Simon Marlow **20061019101129] [comments only: document allocateLocal() Simon Marlow **20061019101200] [add pure spin locks Simon Marlow **20061019135620] [remove ^Ms Simon Marlow **20061019141218] [add prototypes for exitHashTable() Simon Marlow **20061020102934] [fix a printf format warning Simon Marlow **20061024091323] [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. ] [Re-enable TABLES_NEXT_TO_CODE for powerpc (was accidentally disabled) wolfgang.thaller@gmx.net**20061023203321] [fix indentation wibble to make it compile with 5.04 Simon Marlow **20061024122800] [fix 5.04 compile Simon Marlow **20061024133943] [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. ] [6.4 compatiblity andy@galois.com**20061025075900] [Add pointer to coding conventions to HACKING Manuel M T Chakravarty **20061025164331] [Changing Main.tix to .tix in the Hpc RTS andy@galois.com**20061025201229] [Improving error message in CmmLint andy@galois.com**20061025201338] [fixing type error inside Hpc inc; we had a 32 bit '1'. andy@galois.com**20061025201422] [Adding arrows to the acceptable code for hpc andy@galois.com**20061025201514] [an expression with a TickBox round it is not in HNF. andy@galois.com**20061025203829] [markRootPtrTable: write out type in full instead of using evac_fn typedef Simon Marlow **20061026085418 Fixes stage 2 build with -fvia-C ] [Remove PAR/GRAN code from the storage manager Simon Marlow **20061025111114 ] [rename spin lock functions, and use macros for non-THREADED_RTS Simon Marlow **20061026091814] [copyright updates and add Commentary links Simon Marlow **20061026092536] [fix calculation of GC Work for 6.6+ Simon Marlow **20061027103439] [count mut-list bytes, not words Simon Marlow **20061027133445] [improve the diagnostic generated by memInventory() for a memory leak Simon Marlow **20061027133611] [remove the *.raw files Simon Marlow **20061027152129] [Move --help, --version etc to 4.4 (modes) because that is what they really are simonpj@microsoft.com**20061030135204] [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. ] [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 ] [Improve error message (push to 6.6 branch) simonpj@microsoft.com**20061101123727] [Make idInfo fail more informatively on TyVars simonpj@microsoft.com**20061101142246] [Comments only simonpj@microsoft.com**20061101142343] [Remove unused import simonpj@microsoft.com**20061101142550] [Minor refactoring simonpj@microsoft.com**20061101143416] [Comments and layout only simonpj@microsoft.com**20061101170448] [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!) ] [Trim imports simonpj@microsoft.com**20061101173439] [add a few #includes to make it compile sof@galois.com**20061101220950] [import Maybes wibble sof@galois.com**20061101221108] [Comments and layout only simonpj@microsoft.com**20061102093954] [Fix handling of non-in-scope exports (fixes test mod7) simonpj@microsoft.com**20061102120304] [Remove unused lookupDeprec function simonpj@microsoft.com**20061102120402] [Improve handling of unused imports (test is mod75) simonpj@microsoft.com**20061102120441] [Improve error message from ghc --make when filename and modulename differ simonpj@microsoft.com**20061102123111] [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". ] [Remove pre-5.04 code Ian Lynagh **20061024011026] [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. ] [Tidy up substitutions simonpj@microsoft.com**20061106155901 The new simplifer stuff exposed the fact that the invariants on the TvSubstEnv and IdSubstEnv were insufficiently explicit. (Resulted in a bug found by Sam Brosnon.) This patch fixes the bug, and tries to document the invariants pretty thoroughly. See Note [Extending the TvSubst] in Type Note [Extenting the Subst] in CoreSubst (Most of the new lines are comments.) ] [Various debugging print changes; nothing exciting simonpj@microsoft.com**20061106160244] [Warn only of explicit imports that are unused (test is mod177) simonpj@microsoft.com**20061106161212 This is really a long-standing bug. See test mod177. ] [Layout and comments only simonpj@microsoft.com**20061107171040] [Comment out deeply suspicious (and unused) function insertStableSymbol simonpj@microsoft.com**20061107171336 The function insertStableSymbol looks utterly wrong, because it coerces a value of type 'a' to an Addr#! That was in turn making the code generator get confused (now improved), but since insertStableSymbol isn't used at all, I'm just commenting it out. Meanwhile, this patch also enhances CoreToStg to report the most egregious cases where an unsafe coerce is going to confuse the code generator. ] [update flag settings after files were relocated Simon Marlow **20061108103806] [remove unused STANDALONE_PACKAGE stuff Simon Marlow **20061109101729] [use the right $(HC) for stage 3 Simon Marlow **20061109101753] [Do not print HsDoc field when pretty-printing patterns (messes up error message) simonpj@microsoft.com**20061108094813] [Patch to demand analyser, to handle polymorphism in zipWithDmds simonpj@microsoft.com**20061110130726] [Trim imports simonpj@microsoft.com**20061110130814] [Add new utility function, partitionWith simonpj@microsoft.com**20061110130836] [Comments and cosmetics only simonpj@microsoft.com**20061110131036] [Add HsUtils.unguardedGRHSs, and use it simonpj@microsoft.com**20061110131250] [Cosmetics only simonpj@microsoft.com**20061110131345] [Cosmetics and debug printing only simonpj@microsoft.com**20061110131513] [Use implication constraints to improve type inference simonpj@microsoft.com**20061110133123] [Added a workaround for format specifier mismatch sven.panne@aedion.de**20061110162616] [Added a comment about se.info.type being used uninitialized sven.panne@aedion.de**20061110162654] [Make all needed prototypes visible to avoid warnings sven.panne@aedion.de**20061110162743] [Make StablePtr and friends visible, this seems to be necessary for 64bit architectures sven.panne@aedion.de**20061110171626] [Remove STANDALONE_PACKAGE bits that had escaped the removal Ian Lynagh **20061110182050] [Doc nit in OccName Samuel Bronson **20061108192115] [find fop.sh claus.reinke@talk21.com**20061109164054 the fop bundle contains fop.bat and fop.sh, but not fop; let configuration find the latter. ] [Fix up .lhs delimiters a bit Samuel Bronson **20061104015642] [Zap stray whitespace in lhs formatting Samuel Bronson **20061110183633] [Fix typo "comand" (trac #965) Ian Lynagh **20061112170946] [Fixups to PelRules (esp using intResult, wordResult) simonpj@microsoft.com**20061113090517 In PrelRules we carefully use 'intResult' to trim off the overflow in compile-time calculations, but we were not doing so consistently. This patch fixes that, I think, and adds type signatures ] [Add literal-shift rewrite rules simonpj@microsoft.com**20061113093501 This is a re-factored version of Sam Bronson's patch Need to take care with logical shifts. ] [Fix (yet another) odd interaction between selector thunks and compacting GC Simon Marlow **20061114123157 This should fix errors of the form internal error: scavenge_mark_stack: unimplemented/strange closure type 28 @ 0x2b92e5f79960 But since it's quite difficult to reproduce the error, I can't be 100% certain it's gone. I certainly can't reproduce it again after the fix, anyway. ] [multipage_hp2ps Ravi Nanavati **20060929224739 Add support for splitting the key index over multiple pages in hp2ps Multipage support can be requested with the -M command-line flag or inferred if the number of bands requested is greater than 20 (the limit on the number of bands displayed has been removed) Please include this change in the 6.6 branch as well as HEAD ] [rts_ccs_length Ravi Nanavati **20060929225115 Add the -L RTS flag to control the length of the cost-centre stacks reported in a heap profile. Please include this change in the 6.6 branch as well as HEAD ] [hp_slash_fix Ravi Nanavati **20060929225324 Fix output of cost-centre stacks so that the slashes appear in the correct place Please include this patch in the 6.6 branch as well as HEAD ] [hp2ps_config_mk Ravi Nanavati **20060929225418 Add variables for hp2ps to config.mk.in ] [Be compatible with older C standards Ian Lynagh **20061114112514] [Document new -L RTS flag Ian Lynagh **20061114113542] [Remove unused Name imort, and add a comment explaining why pragmas are disabled Ian Lynagh **20061114131459] [fix types in generated C for comparison MachOps Simon Marlow **20061114160027 C comparisons have type 'int', but our generated code assumed they had type 'StgWord', leading to (very) occasional warnings from gcc. ] [simplify the generated C a little by removing some casts. Simon Marlow **20061114162846] [mark stop event handle as invalid once closed, making shutdowns more graceful. sof@galois.com**20061016223516] [move newSpark() prototype to RtsExternal.h to avoid warnings Simon Marlow **20061107115430] [remove unused includes, now that Storage.h & Stable.h are included by Rts.h Simon Marlow **20061115104111] [restore compilation with 5.04 Simon Marlow **20061115104322] [Emit .bat version of -inplace script on Windows platforms sof@galois.com**20061117012239] [Emit .bat versions of -inplace scripts on Windows platforms (Cabal-friendlier) sof@galois.com**20061117012343] [Cope with big endian float word order on little endian machines Ian Lynagh **20061120121309] [Don't make ghc threaded if GhcNotThreaded is YES Ian Lynagh **20061120121631] [Don't force -static on mips Ian Lynagh **20061120122305] [Addition of PAPI to RTS mrchebas@gmail.com**20061108171452 This patch still requires the addition of the USE_PAPI define to compile with PAPI. Also, programs must be compiled and linked with the appropriate library flags for papi. ] [Selection of PAPI events via RTS command line mrchebas@gmail.com**20061109075746] [Added configure gadgets to detect Papi, and fixed build problems 'Alexey Rodriguez '**20061109120414] [alter PAPI help message slightly Simon Marlow **20061120142722] [better error messages when PAPI_library_init() fails Simon Marlow **20061120142738] [Cosmetic improvements, no change in Papi functionality. mrchebas@gmail.com**20061109080400] [whitespace Simon Marlow **20061120142550] [No special Papi measurements taken by default mrchebas@gmail.com**20061109081120] [reorganise PAPI configuration: off by default, even if library is found Simon Marlow **20061120143657 Add GhcRtsWithPapi=YES to mk/build.mk to turn it on ] [Avoid problems with unaligned loads on alpha/mips/mipsel/arm Ian Lynagh **20061120154914 This is overly conservative, but it works. ] [Add ppr for the MKPAP case, and rearrange the other cases to match the datatype Ian Lynagh **20061120155352] [Mac OS X mangler: follow some minor gcc changes wolfgang.thaller@gmx.net**20061120171553] [Fix printf$LDBLStub workaround for Darwin wolfgang.thaller@gmx.net**20061121004953 Apparently, the original fix never really worked due to typos and oversights. ] [kill off old javagen Brian Alliet **20061121134528] [put the unsafeCoerce trace inside DEBUG, to avoid test failures Simon Marlow **20061121093748] [Fix ":i Maybe", noticed by Claus Reinke Ian Lynagh **20061121132132 It looks like this was just commented out while FC was being developed. ] [optimisation to freeGroup() to avoid an O(N^2) pathalogical case Simon Marlow **20061121134551 In the free list, we don't strictly speaking need to have every block in a coalesced group point to the head block, although this is an invariant for non-free blocks. Dropping this invariant for the free list means that coalesce() is O(1) rather than O(N), and freeGroup() is therefore O(N) not O(N^2). The bad case probably didn't happen most of the time, indeed it has never shown up in a profile that I've seen. I had a report from a while back that this was a problem with really large heaps, though. Fortunately the fix is easy. ] [fully kill off old JAVA backend Brian Alliet **20061121233308] [add new java backend Brian Alliet **20061121233341] [integrate new java backend Brian Alliet **20061121233600] [small fix to DEBUG case in coalesce/freeGroup patch Simon Marlow **20061121163416] [Remove the concept of stableRoots. Lemmih **20061121193701 StableRoots opened new possibilities in the world of plugins with their ability to link partially applied closures against object code. Exporting '(fn pluginwideState)' severely reduced the complexity of HIDE's plugin system. The previous system of global variables was both fragile and hard to scale. Good bye, StableRoots. We sure had some fun. ] [fix bug in memInventory() giving false memory leak errors Simon Marlow **20061122101604 fixes ffi009(threaded1) ] [allocatePinned(): fix n_large_blocks count after allocating a new block Simon Marlow **20061122101808] [refactor code for memInventory() Simon Marlow **20061122101906] [Improve error messages slightly simonpj@microsoft.com**20061122132821] [Retain simplifications of implication constraints simonpj@microsoft.com**20061122132844 When simplifying an implication constraint (reduceImplication), if we make progress, make a new implication constraint for the result. If we don't do this, we get a constraint that can be simplified in a unique way, and that in turn confuses reportNoInstance ] [Refactoring of where tcSimplifyTop happens simonpj@microsoft.com**20061122135121 We want to do tcSimplifyTop after checkMain, because checkMain can add useful type information that eliminates ambiguity. E.g. main = return undefined This is the way it used to be in 6.6, and I think I mistakenly moved it when doing implication constraints. This patch effectively puts it back the way it was. Cures the cg053 failure. ] [Improve recovery in hptRules simonpj@microsoft.com**20061122173415] [misc lambdavm stuff Brian Alliet **20061123104254] [add java way Brian Alliet **20061123104325] [java way in makefile Brian Alliet **20061123104609] [$(way_)o => $(osuf) in makefiles Brian Alliet **20061123104658] [temporary hack to make c foreign imports work in java mode Brian Alliet **20061123104738] [make Constants usage explicit in non-backend code Brian Alliet **20061126003913] [java int int constant fixups Brian Alliet **20061126004133] [java doesn't get to see MachDeps.h Brian Alliet **20061126004246] [java backend prim stuff Brian Alliet **20061126004332] [always define java_HOST_OS when compiling for java Brian Alliet **20061126004433] [the java way doesn't need -fjava anymore, -java does it Brian Alliet **20061126004532] [.depend is now parameterized over $(way) Brian Alliet **20061126004645] [ifdef out unsupported primitives for java in PrimopWrappers.hs Brian Alliet **20061126004755] [add hsc2hs keyword for passing a cpp command on to 'stage 2' Brian Alliet **20061126004904] [teach the makefile how to build jars Brian Alliet **20061126004933] [add hsutils and hsjava depends to makefile Brian Alliet **20061126181029] [change rts class name Brian Alliet **20061126181209] [only change hscTarget from HscAsm to HscC Brian Alliet **20061126181232] [never link when compiling with the java way Brian Alliet **20061126181248] [add --enable-java to configure Brian Alliet **20061126181303] [add WORD_SIZE_IN_BITS to the java portion of MachDeps.h Brian Alliet **20061126181332] [update config.mk with new java stuff Brian Alliet **20061126181348] [depend is way specific Brian Alliet **20061126181415] [add the java rts Brian Alliet **20061126181441] [fix failing assertion Simon Marlow **20061123135825] [Simplify TcSimplify, by removing Free simonpj@microsoft.com**20061123171602 For a long time TcSimplify used a three-way classification of constraints, into Free Irred ReduceMe (see the data type WhatToDo). In the new world of implication constraints, the Free case does not make so much sense, and I managed to elminate it altogether, thus simplifying the story somewhat. Now WhatToDo has constructors Stop ReduceMe There should be no change in behaviour. ] [Gather constraints in program order simonpj@microsoft.com**20061124084011 Provoked by a suggestion of Simon's, this patch makes a half-hearted attempt to gather constraints in program order, so that we tend to report an error at its first occurrence, rather than its last. Examples: mdofail001, tcfail015 It's "half-hearted" because generally-speaking the typechecker does not guaranteed to keep constraints in order; it treats them as a set. Nevertheless this very small change seems to improve matters, so it seems a good one. ] [Use existing function uniqAway instead of duplicating code simonpj@microsoft.com**20061124110750] [Use existing Ord instance on Int, saving code simonpj@microsoft.com**20061124110830] [Improve hashing of expressions simonpj@microsoft.com**20061124110926 We were getting too many cases where different expressions map to the same hash code (which shows up in CSE). This patch tries to improve the hash algorithm a bit. ] [Fix name-capture bug in rule matching simonpj@microsoft.com**20061124111158 The matching algorithm for RULES should respect alpha-conversion, but it wasn't doing so. In particular, if the names of the template variables clashed with a variable in scope at the call site, bad things could happen (it showed up as a CoreLint failure when compiling nofib/real/parser) This patch fixes the problem; see Note [Template binders] Test is in simplCore/should_compile/spec002, but nofib -O2 in real/parser, real/fulsom ] [Improve handling of implicit parameters simonpj@microsoft.com**20061124122120 A message to Haskell Cafe from Grzegorz Chrupala made me realise that GHC was not handling implicit parameters correctly, when it comes to choosing the variables to quantify, and ambiguity tests. Here's the note I added to TcSimplify: Note [Implicit parameters and ambiguity] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ What type should we infer for this? f x = (show ?y, x::Int) Since we must quantify over the ?y, the most plausible type is f :: (Show a, ?y::a) => Int -> (String, Int) But notice that the type of the RHS is (String,Int), with no type varibables mentioned at all! The type of f looks ambiguous. But it isn't, because at a call site we might have let ?y = 5::Int in f 7 and all is well. In effect, implicit parameters are, well, parameters, so we can take their type variables into account as part of the "tau-tvs" stuff. This is done in the function 'FunDeps.grow'. The actual changes are in FunDeps.grow, and the tests are tc219, tc219 ] [Drop redundant parens in pretty-printing simonpj@microsoft.com**20061124131813] [Make SpecConstr more aggressive, by neglecting reboxing simonpj@microsoft.com**20061124132054 SpecConstr was conservative about avoiding reboxing (see Note [Reboxing]) but that meant it lost useful opportunities. This patch makes it much more aggressive, but at the risk of doing some reboxing. Actually, the strictness analyser has the same property (it's possible for it to generate reboxing code, and thus increase allocation), but we don't worry so much about that. Maybe we should. Ideally, one would do some more sophisticated analysis that spotted the reboxing cases without excluding the useful ones. But meanwhile, let's try this. ] [small stats fix Simon Marlow **20061124162512] [Warning police: Removed unused variable sven.panne@aedion.de**20061124175900] [Fix constraint handling for lazy patterns simonpj@microsoft.com**20061124230548 Lazy patterns are quite tricky! Consider f ~(C x) = 3 Can the Num constraint from the 3 be discharged by a Num dictionary bound by the pattern? Definitely not! See Note [Hopping the LIE in lazy patterns] in TcPat The type checker wasn't ensuring this, and that was causing all manner of strange things to happen. It actually manifested as a strictness bug reported by Sven Panne. I've added his test case as tcrun040. ] [ghc-pkg: New command 'check' and made 'list' indicate broken packages Lennart Kolmodin **20061105183851 Command 'check': print a list of all packages that are broken and which dependencies they are missing. Command 'list': updated by making it put brackets around broken packages. ] [Change a comma to a colon Ian Lynagh **20061125003444] [Add some Outputable instances Ian Lynagh **20061125152307] [Cast switch scrutinees to W_ in AutoApply.cmm wolfgang.thaller@gmx.net**20061022160507 ... and make CmmLint check for this problem. This doesn't matter for -fvia-C, but passing a halfword to a switch will make the NCG generate crashing code. ] [Support RelocatableReadOnlyData section type in CmmParse, and use it where needed in AutoApply wolfgang.thaller@gmx.net**20061022160650 This is needed for position-independent code on Mac OS X (both i386 and powerpc), when compiling the RTS with -fasm. ] [i386-darwin: disable use of code stubs for dynamic linking wolfgang.thaller@gmx.net**20061120172516 We can't use lazy binding for tail-calls accross shared libraries, because dyld will crash due to incorrect stack layout. We can't get the stack alignment right for both cross-library tailcalls and foreign calls, so we have to bypass the stub code altogether and load the address to branch to from the non-lazy pointer table. ] [NCG: Really avoid the need for memory-to-memory moves in the register allocator wolfgang.thaller@gmx.net**20061124093536 This is a follow-up to "NCG: Handle loops in register allocator". The newly-introduced invariant that every virtual register is always assigned to the same spill slot wasn't kept under all circumstances. *Now* memory-to-memory moves should never be required when compiling hand-written cmm code. ] [Support I64->I32 casts in the NCG, and use them for I64->Integer conversions wolfgang.thaller@gmx.net**20061124094129 We can avoid using any other long long operations in PrimOps.cmm. One more step towards compiling the RTS using the NCG. ] [restructure java rts Brian Alliet **20061126214750] [fix a typo in the makefile jar code Brian Alliet **20061126214953] [clean rts class files Brian Alliet **20061126215008] [minor java rts bugfixes Brian Alliet **20061127084105] [pull the jar command from configure Brian Alliet **20061127140706] [don't try to split libs on java Brian Alliet **20061127140748] [fix runstdtests.prl to handle binary files Brian Alliet **20061129040252] [Initial support for x86_64-darwin wolfgang.thaller@gmx.net**20061127130602 Basic -fvia-C code generation is there, not much testing. ] [retain arity for let-bound vars in simplifier Kirsten Chevalier **20061128135143] [Make the non-threaded-RTS threadDelay wait at least as long as asked Ian Lynagh **20061128210516] [fix to isNormalComment for non-Haddock mode, and some cleanup Simon Marlow **20061129093221 Haddock documentation comments weren't being treated as comments even without the -haddock flag. Fixes nofib/spectral/simple, and probably others. ] [Fixing Alts to reflect Alternatives, rather than every pattern match in Hpc. andy@galois.com**20061101230827] [TickBox representation change andy@galois.com**20061129220957 This changes the internal representation of TickBoxes, from Note (TickBox "module" n) into case tick of _ -> tick has type :: #State #World, when the module and tick numbe are stored inside IdInfo. Binary tick boxes change from Note (BinaryTickBox "module" t f) into btick btick has type :: Bool -> Bool, with the module and tick number stored inside IdInfo. ] [Add Win32/configure.ac to the mix sof@galois.com**20061129222513] [x86_64 NCG: fix register usage for CALLs wolfgang.thaller@gmx.net**20061129013429 For varargs calls, CALL reads the %al register; record that fact for the benefit of the register allocator. (There was a previous attempt to do this, but it was broken.) ] [Make SpecConstr work right for nullary constructors simonpj@microsoft.com**20061129192421 For totally stupid reasons, SpecConstr didn't work for the (particularly easy) case of nullary constructors like True and False. I just had some equations in the wrong order, so that a Var case came first, which matches a nullary constructor, with the constructor-application case afterwards. The fix is easy. I did a bit of refactoring at the same time. ] [Comments only simonpj@microsoft.com**20061129194212] [Improve the loop-breaking heuristics simonpj@microsoft.com**20061129212440 The loop-breaking heuristics were making it a high priority to avoid choosing a variable as a loop breaker if its *type* was a data type. The reason is that it's very good to be able to "see" constructor applications. But it's only good if the constructor application is *visible*, so that is what I test for now. I found a case (when testing SpecConstr) where I had a Rec like this: rec { lvl = foo Nothing foo = ... RULE foo Nothing = ... } Even if lvl has a data type, it's much better to make lvl the loop breaker, not foo, so that foo's RULE is visible in lvl's RHS. ] [Teach SpecConstr how to handle mutually-recursive functions simonpj@microsoft.com**20061129213931 Roman found cases where it was important to do SpecConstr for mutually-recursive definitions. Here is one: foo :: Maybe Int -> Int foo Nothing = 0 foo (Just 0) = foo Nothing foo (Just n) = foo (Just (n-1)) By the time SpecConstr gets to it, it looks like this: lvl = foo Nothing foo Nothing = 0 foo (Just 0) = lvl foo (Just n) = foo (Just (n-1)) Happily, it turns out to be rather straightforward to generalise the transformation to mutually-recursive functions. Look, ma, only 4 extra lines of ocde! ] [Remove bogus comment simonpj@microsoft.com**20061129225223] [Remove trace simonpj@microsoft.com**20061129225243] [Fix _module_registered bug for sparc linux. Simon Marlow **20061006104534 Patch by Ferris McCormick This patch has been tested with GHC-6.4.2 where it fixes a huge number of testsuite failures (down from 406 to 17) ] [Update library version numbers in release notes Ian Lynagh **20061009120243] [use "lock cmpxchg" instead of "lock/cmpxchg" Simon Marlow **20061117114429 I'm not sure where the latter version came from, but it apparently doesn't generate a legal instruction on Solaris. ] [cas(): modify assembly syntax to make it work everywhere (hopefully) Simon Marlow **20061121132646] [q simonpj@microsoft.com**20061201034207] [Decouple -O from -fvia-C wolfgang.thaller@gmx.net**20061201125304 Nowadays, there are situations where -fvia-C is definitely unwanted, such as when -fPIC is used on some platforms, so we do not want implicit -fvia-C any more. ] [Remove the Windows Async IO Manager completely in THREADED_RTS mode Simon Marlow **20061201140753 It isn't used here anyway, just making sure the code doesn't get compiled in. ] [Add support for the IO manager thread on Windows Simon Marlow **20061201144823 Fixes #637. The implications of this change are: - threadDelay on Windows no longer creates a new OS thread each time, instead it communicates with the IO manager thread in the same way as on Unix. - deadlock detection now works the same way on Windows as on Unix; that is the timer interrupt wakes up the IO manager thread, which causes the scheduler to check for deadlock. - Console events now get sent to the IO manager thread, in the same way as signals do on Unix. This means that console events should behave more reliably with -threaded on Windows. All this applies only with -threaded. Without -threaded, the old ConsoleEvent code is still used. After some testing, this could be pushed to the 6.6 branch. ] [only change hscTarget from HscAsm to HscC Brian Alliet *-20061126181232] [jvm foreign imports Brian Alliet **20061203195720] [resurrect foreign types and add jvm foreign types Brian Alliet **20061203200218] [allow any product type containing a prim to be used in a foreign call (only with glasgow-exts) Brian Alliet **20061203200457] [add --default-repo option to darcs-all Brian Alliet **20061203200541] [MERGE: In hashExpr, use Word32 rather than relying on wrapping behaviour of Int Ian Lynagh **20061203223337 Fixes #952, as it turns out. When compiling via C, we are at the mercy of C's undefined behaviour with respect to overflow of signed integer operations, and this was biting us here. Perhaps we should always add the -fwrapv flag to gcc, but since Haskell doesn't define overflow on Int either, it seemed the right thing to do to fix this code anyway. ] [fix Windows GHCi Simon Marlow **20061204164326] [update the question about concurrent threads & GHCi Simon Marlow **20061205153947] [add Windows-specific GHCi information, and a FAQ about ^C in GHCi on Windows Simon Marlow **20061205161140] [we need GHC.Conc.ensureIOManagerIsRunning on Windows too Simon Marlow **20061205162435] [Make a ghc/ghci manpage Ian Lynagh **20061205235244 Set GhcManpages=YES in mk/build.mk if you want to build the manpage. ] [Comments only simonpj@microsoft.com**20061204013040] [Add documentation for seq simonpj@microsoft.com**20061204013116] [Improve dependency analysis; makes more dictionaries inlinable simonpj@microsoft.com**20061206071845 I recentl changed the scoring system used by dependency analysis for recursive bindings, that it used the *form* of the RHS of a binding, rather than just its type. In doing so I inadvertently made recursive dictionary bindings unravel less well, because I'd missed the case of c = /\a. C (...) (...) This patch fixes the problem. A good example is the instance for Monad (ST s) or Show (ST s a) in GHC.ST. It's vital for these dictionaries to be inlinable. ] [Add release note that Network.CGI.Compat uses XHtml rather than Html Ian Lynagh **20061206144946] [Kind sigs in associated data/newtype family decls may be omitted Manuel M T Chakravarty **20061206223320 * This is only a slight generalisation of the parser, so that family declarations on the toplevel and in classes are uniform. * I didn't allow that right away as it is a bit tricky to avoid reduce/reduce conflicts. ] [Fix family instance consistency check for home package modules Manuel M T Chakravarty **20061207014118 * So far, family instance modules was only available for external modules. * This fixes the "Over" test in the testsuite under indexed-types/ ] [x86_64: support PIC and therefore, Mac OS X in the NCG wolfgang.thaller@gmx.net**20061207131607 Supporting x86_64-apple-darwin in the NCG basically boils down to supporting position-independent code in the NCG. PIC code works almost exactly the same as on x86_64-linux, while position-dependent code is not supported at all. This patch implements -fPIC for x86_64-linux, too, but that is untested. ] [Tell the NCG that XOR foo, foo does *not* read foo wolfgang.thaller@gmx.net**20061207131721 On x86[-64], MachCodeGen uses the old XOR trick to zero a register. This patch makes regUsage not list the register as an input in this case. Listing the register as an input for the instruction could make it appear like an unitialised value, which is bad because unitialised values can cause the register allocator to panic (at least in the presence of a loop). ] [Unbreak previous x86_64 PIC patch wolfgang.thaller@gmx.net**20061207133108 Make things compile on Linux again ] [fix for #1013. Simon Marlow **20061207151644 We weren't getting the bitmap right for the continuation BCO in a case-of-case. ] [pass Type all the way through gcode Brian Alliet **20061208012506] [fix --default-repo in darcs-all for top_dirs Brian Alliet **20061208012639] [add primitive types for {Int,Word}{8,16} and Bool Brian Alliet **20061210101744] [make StgFCall's carry around their original argument types Brian Alliet **20061210102153] [marshal Bool to Bool# Brian Alliet **20061210102336] [we don't need the desugarer to narrow results anymore, the backend can do it Brian Alliet **20061210102501] [rewrite jvm foreign import code Brian Alliet **20061210102611] [allow {Int,Word}{8,16}# and Bool# to have derived Eq and Ord Brian Alliet **20061210102738] [change primop signs to use {Int,Word}{8,16}# Brian Alliet **20061210102840] [fix PrelRules for {Int,Word}{8,16}# Brian Alliet **20061210103026] [more native java typing in javagen Brian Alliet **20061210103144] [huge hack to work around lack of java array types in foreign imports Brian Alliet **20061210103245] [clean "inner classes" when doing make clean Brian Alliet **20061210103312] [Fixed and simplified repository calculation, works via SSH now, too sven.panne@aedion.de**20061203134824] [Make './darcs-all get --complete' work sven.panne@aedion.de**20061209125154] [Add PowerPC to the list of SMP arches Ian Lynagh **20061209174203] [Use System.IO.stderr rather than IO.stderr in GHCi. Fixes trac #1001. Ian Lynagh **20061209185152 GHCi evaluates a command to flush the stdout/stderr buffers, but this command can only use names that are in scope. It used to need IO.stderr from the haskell98 package, but this patch means it only needs things from the base package. ] [fix darcs-all breakage Brian Alliet **20061210113422] [Unbreak x86_64 PIC patch, part 2 wolfgang.thaller@gmx.net**20061210132712 Continue repairing breakage from patch "x86_64: support PIC and therefore, Mac OS X in the NCG", this time something affecting (linux && !i386) ] [add org.haskell.ghc.rts.Misc Brian Alliet **20061228074240] [ByteArray# -> UArray# :: # -> # Brian Alliet **20061211005924] [java backend debuging -ddump flags Brian Alliet **20061212053354] [Improve parsing for bang patterns (fixes Trac #1041) simonpj@microsoft.com**20061208134629] [Fix typo simonpj@microsoft.com**20061208134807] [Remove strange extra print (a temporary debug?) simonpj@microsoft.com**20061211155035] [Comments and layout only simonpj@microsoft.com**20061211160409] [Suggests -fglasgow-exts for contexts-differ-in-length error simonpj@microsoft.com**20061211160517] [Improve origin of constraints in subsumption checking simonpj@microsoft.com**20061211160557] [More refactoring of constraint simplification simonpj@microsoft.com**20061211160732 This patch fixes several bugs in the handling of impliciation constraints, thereby fixing several regression-suite failures. On the way I managed to further simplify the code in TcSimplify; the extra lines are comments. ] [When debugging, have the allocator help us a bit Ian Lynagh **20061211124950 We now check for freeing memory that isn't allocated, and overwrite memory we are about to free with 0xaa. It might be nice to also have a flag to control whether the memory actually gets free'd. ] [Add freeScheduler/freeTaskManager and call it later than exitScheduler Ian Lynagh **20061211131004 We were freeing the tasks in exitScheduler (stopTaskManager) before exitStorage (stat_exit), but the latter needs to walk down the list printing stats. Resulted in segfaults with commands like ghc -v0 -e main q.hs -H32m -H32m +RTS -Sstderr (where q.hs is trivial), but very sensitive to exact commandline and libc version or something. ] [Fix allocate name clash in the HEAD Ian Lynagh **20061211192103] [Support MO_WriteBarrier in PowerPC NCG (lwsync instruction) wolfgang.thaller@gmx.net**20061211222534] [Unbreak x86_64 PIC patch, part 3 wolfgang.thaller@gmx.net**20061211222635 This time, the PowerPC NCG suffered from a typo. (I've really grown to hate all those #if foo_TARGET_ARCH lines. I need to build GHC for at least four different platforms just to make sure that there are no typos...) ] [Add comments about pruning implication constraints simonpj@microsoft.com**20061211164333] [Add comments, plus fix zapFragileInfo to zap worker info simonpj@microsoft.com**20061211165141 This is a minor fix up to the patch * retain arity for let-bound vars in simplifier ] [Fix up yesterdays commit to TcSimplify; fixes broken HEAD simonpj@microsoft.com**20061212092556] [Fix the pattern for _hpc symbols: it incorrectly matched the _hp suffix too Simon Marlow **20061212103237 This has the undesitrable effect that stg_gc_gen_hp in the RTS was caught as an HPC symbol and put in the data segment. ] [MERGE: Fix Windows DEP violations (bug #885) Simon Marlow **20061212103623 Original patch by brianlsmith@gmail.com ] [Comments only simonpj@microsoft.com**20061212132802] [Missed a stage-2 problem in the TcSimplify refactoring simonpj@microsoft.com**20061212132813] [Detab Ian Lynagh **20061212154211] [Remove trailing spaces Ian Lynagh **20061212154307] [Beautify a bit Ian Lynagh **20061212154801] [Fix some warnings Ian Lynagh **20061212160020] [Fix more warnings Ian Lynagh **20061212161026] [More warning fixes and some code rejigging Ian Lynagh **20061212161754] [Fix more warnings Ian Lynagh **20061212162624] [More warning fixes Ian Lynagh **20061212164651] [Silence more warnings Ian Lynagh **20061212172756] [Silence some warnings Ian Lynagh **20061212173404] [Fix thd3 Ian Lynagh **20061212173427] [Detab Ian Lynagh **20061212173625] [Remove trailing white space Ian Lynagh **20061212173705] [Fix more warnings Ian Lynagh **20061212174310] [Silence some warnings Ian Lynagh **20061212182044] [Fix whitespace Ian Lynagh **20061212182215] [Fix more warnings Ian Lynagh **20061212200422] [Turn -Wall on Ian Lynagh **20061212201127] [Misc unsigned printing issues; adding magicTixNumber. andy@galois.com**20061130003024] [Adding tracing support andy@galois.com**20061209050334] [Misc Hpc improvement to dynamic tracer output andy@galois.com**20061213001917 - Added HPCRIX support for passing tracer filename. - Added thread tracing support. - Cleaned up use of HsFFI.h ] [Give a better panic if the allocation debugger is used uninitialised Ian Lynagh **20061213122602] [Don't free sched_mutex until freeTaskManager has finished with it Simon Marlow **20061212153353 Also move closeMutex() etc. into freeTaskManager, this is a free-ish thing ] [Fix allocation debugger to handle allocations in con/destructors Ian Lynagh **20061213133518 conc021 is an example of a program that broke. It doesn't handle them particularly well still, but it doesn't crash at least. ] [PowerPC NCG: support conditional branches outside +-32KB wolfgang.thaller@gmx.net**20061213133808 Work around the PowerPC architecture's +-32KB limitation for conditional branches by conditionally skipping an unconditional branch instead (unconditional branches have a +-32MB range). This requires an extra pass over the basic blocks for each CmmTop after block sequencing, to determine which branches are "far". Fixes ticket #709, "Fixup too large" error with -fasm on PowerPC ] [fixing obvious typo in darwin_HOST_OS code (currently does not compile). andy@galois.com**20061213160601] [Removing unused argument to a printf. andy@galois.com**20061213160651] [Add left-to-right impredicative instantiation simonpj@microsoft.com**20061213162915 People keep complaining, with some justification, that runST $ foo doesn't work. So I've finally caved in. The difficulty with the above is that we need to decide how to instantiate ($)'s type arguments based on the first argument (runST), and then use that info to check the second argumnent. There is a left-to-right flow of information. It's not hard to implement this, and it's clearly useful. The main change is in TcExpr.tcArgs, with some knock-on effects elsewhere. I was finally provoked into this by Trac #981, which turned out, after some head-scratching, to be another instance of the same problem. (There was some bug-fixing too; a type like ((?x::Int) => ...) is a polytype even though it has no leading for-alls, but the new TcUnify code was not treating it right.) Test for this is tc222 ] [Removing explicit Binary Tick Boxes; using Case instead. andy@galois.com**20061213184502] [fix wibble in memory leak error dump Simon Marlow **20061214101102] [Rework the block allocator Simon Marlow **20061214110901 The main goal here is to reduce fragmentation, which turns out to be the case of #743. While I was here I found some opportunities to improve performance too. The code is rather more complex, but it also contains a long comment describing the strategy, so please take a look at that for the details. ] [update, and add some more build flavours (inc. dons's fast build) Simon Marlow **20061214110947] [Updating rix output to new standard. andy@galois.com**20061214235210] [Free various things we allocate Ian Lynagh **20061215134507] [Put the task on the free list in workerTaskStop Ian Lynagh **20061215164210] [Give cap its correct type, rather than void Ian Lynagh **20061215172558] [Free all tasks on exit, not just those on the task_free_list Ian Lynagh **20061215172617] [Free more things that we allocate Ian Lynagh **20061215214430] [TAG 2006-12-16 Ian Lynagh **20061216174100] [Two new prim ops to access the Info Table and Payload of a closure: Pepe Iborra **20061209173823 - infoPtr# :: a -> Addr# - closurePayload# :: a -> (# Array b, ByteArr# #) These prim ops provide the magic behind the ':print' command ] [Retrieving the datacon of an arbitrary closure Pepe Iborra **20061210112944 This patch extends the RTS linker and the dynamic linker so that it is possible to find out the datacon of a closure in heap at runtime: - The RTS linker now carries a hashtable 'Address->Symbol' for data constructors - The Persistent Linker State in the dynamic linker is extended in a similar way. Finally, these two sources of information are consulted by: > Linker.recoverDataCon :: a -> TcM Name ] [Playing with closures Pepe Iborra **20061210173005 RtClosureInspect includes a bunch of stuff for playing with closures: - the datatype Closure is the low level representation type - the datatype Term is the high level representation type - cvObtainTerm is the main entry point, providing the Term representation of an arbitrary closure ] [Extend the GHC API with breakpoints and breakpoint handlers Pepe Iborra **20061210184027 The entry point is: setBreakpointHandler :: Session -> BkptHandler Module -> IO () ] [GHCi debugger documentation Pepe Iborra **20061210184123] [The breakpoint primitive Pepe Iborra **20061210203729] [Breakpoint code instrumentation Pepe Iborra **20061210204934 Instrumentation gets activated by the '-fdebugging' dynflag. All the instrumentation occurrs in the desugarer; it consists of inserting 'breakpoint' combinators at a number of places in the AST, namely: - Binding sites - Do-notation statements These 'breakpoint' combinators will later be further desugared (at DsExpr) into ___Jump functions. For more info about this and all the ghci.debugger see the page at the GHC wiki: http://hackage.haskell.org/trac/ghc/wiki/GhciDebugger ] [Handle breakpoint jumps while splicing TH functions in ghci Pepe Iborra **20061210222424 The dynamic linker has been modified so that it won't panic if one of the breakpointJump functions fails to resolve. Now, if the dynamic linker fails to find a HValue for a Name, before looking for a static symbol it will ask to Breakpoints.lookupBogusBreakpointVal :: Name -> Maybe HValue which returns an identity function for the Jump names or Nothing else. A TH function might contain a call to a breakpoint function. So if it is compiled to bytecodes, the breakpoints will be desugared to 'jumps'. Whenever this code is spliced, the linker will fail to find the jumpfunctions unless there is a default. ] [Capturing and keeping track of local bindins in the desugarer Pepe Iborra **20061210222540 Used in the desugaring of the breakpoint primitive ] [Prevent breakpoint instrumentation of spliced code Pepe Iborra **20061210223102] [Add the debugger related modules to package.conf Pepe Iborra **20061210223217] [Split the GHCi monad apart from InteractiveUI, together with some related functions Pepe Iborra **20061210230553 I found this convenient while I was extending ghci with the debugger. I wanted to put all the debugger stuff in a separate module, but I would need a huge hs-boot file to break the circular dependencies. This option seemed better ] [Dynamic breakpoints in GHCi Pepe Iborra **20061210231551 This patch adds dynamic breakpoints to GHCi There is a new ':breakpoint' command to manage breakpoints. GHCi simply uses the breakpoint api functions in ghc-api to install itself as a client. The mechanism used by GHCi to keep track of enabled breakpoints is a simple table. When a breakpoint is hit, a new interactive session is launched and the bindings in the breakpoint are injected. Some commands are disabled in this sub session ] [Closure inspection in GHCi Pepe Iborra **20061210232018 The :print, :sprint and :force commands for GHCi. This set of commands allows inspection of heap structures of the bindings in the interactive environment. This is useful to observe lazyness and specially to inspect things with undespecified polymorphic types, as happens often in breakpoints. ] [Fix an issue with lazyness in the closure viewer Pepe Iborra **20061211153453] [Adjust code from manual merges Pepe Iborra **20061211162027] [Toggle whether the RTS gets build with debugger support for ghci Pepe Iborra **20061211181307 Specifically, this disables the special support in the RTS for looking up the datacon name corresponding to an address. Correspondingly, the debugging commads in GHCi will not be available, and neither will the '-fdebugging' flag ] [Fix the build Ian Lynagh **20061216022535] [Fix an overlapping of uniques in PrelNames Pepe Iborra **20061216114624] [Merge DynFlags changes Ian Lynagh **20061216173957] [TAG 2006-12-17 Ian Lynagh **20061217233747] [Propagate the DEBUGGER flag to the Makefile for stage 2 Pepe Iborra **20061217001150] [Remove uses of Data.Traversable to fix stage1 on pre ghc-6.6 systems Pepe Iborra **20061218095343] [Replace association list in AddressEnv for a FiniteMap Pepe Iborra **20061218141715] [Don't overwrite old memory with 0xaa when doing a realloc Ian Lynagh **20061218152423] [Deriving for indexed data types Manuel M T Chakravarty **20061218211205 - This patch implements deriving clauses for data instance declarations (toplevel and associated) - Doesn't support standalone deriving. This could be easily supported, but requires an extension of the syntax of standalone deriving clauses. Björn, fancy adding this? - We cannot derive Typeable. This seems a problem of notation, more than anything else. Why? For a binary vanilla data type "T a b", we would generate an instance Typeable2 T; ie, the instance is for the constructor alone. In the case of a family instance, such as (S [a] (Maybe b)), we simply have no means to denote the associated constuctor. It appears to require type level lambda - something like (/\a b. S [a] (Maybe b). - Derivings are for *individual* family *instances*, not for entire families. Currently, I know of no simple translation of class instances for entire families to System F_C. This actually seems to be similar to implementing open data types à la Löh & Hinze. - This patch only covers data types, not newtypes. ] [Add HscTypes.hi-boot-6 so builds with older GHCs succeed Ian Lynagh **20061219155954] [Fixed uninitialised FunBind fun_tick field Manuel M T Chakravarty **20061219192506] [Deriving for indexed newtypes Manuel M T Chakravarty **20061219213017 - The isomorphism-based newtype-deriving isn't very useful for indexed types right now as it rejects all recursive declarations, and we have to mark all indexed type instances as recurrsive as we can't guarantee that future instances aren't going to make them part of a recursive group. ] [Fix import lists Pepe Iborra **20061220042417] [Add hook to fam inst consistency check to GHCi/--make Manuel M T Chakravarty **20061221004058] [Parse and use ghci nofib output Ian Lynagh **20061220220715] [Allow a word-sized argument for STKCHECK Ian Lynagh **20061221023825] [Documentation for class contexts in data-constructor declarations simonpj@microsoft.com**20061222093431] [Remove ' in cpp error Ian Lynagh **20061222133940] [Improve documentation about packages simonpj@microsoft.com**20061222141551] [Handle LongArg's in the FFI on x86 Ian Lynagh **20061222141554] [Remove a reference to GHC.Exts.Ptr in stage1 Pepe Iborra **20061222165541 Hopefully this will help to restore ability to build HEAD on GHC 5.0x systems ] [Parse and desugar equational constraints Manuel M T Chakravarty **20061228010348 - With -findexed-types, equational constraints can appear in contexts wherever class predicates are allowed. - The two argument types need to be boxed and rank 0. ] [Adding a GENERATED pragma andy@galois.com**20061229072948 Adding a {-# GENERATED "SourceFile" SourceSpan #-} pragma. This will be used to generate coverage for tool generated (or quoted) code. The pragma states the the expression was generated/quoted from the stated source file and source span. ] [Add newline to end of file simonpj@microsoft.com**20061229133456] [Avoid duplicate error report when renaming HsDoc stuff simonpj@microsoft.com**20061229141557 This patch is a bit of a hack to avoid a duplicate error when checking class C a where op :: a -> a op2 x = x (This is tcfail077) For reasons I don't understand, the decl of op2 generates an HsDeclEntity, and that gives a renamer error which duplicates the (better) one that comes from rnMethodBinds. A better fix might be to get rid of HsDeclEntities altogether. ] [Add missing case for documented types in the type desugarer davve@dtek.chalmers.se**20061229163224] [data family declarations are fine without any type arguments Manuel M T Chakravarty **20061229181122] [Construction of EqPred dictionaries Manuel M T Chakravarty **20061229181357] [EqPred pretty prints as ~ and equalities without brackets Manuel M T Chakravarty **20061229201751] [Make dicts for arbitrary type equalities Manuel M T Chakravarty **20061229203300] [Standardized Makefile for man page sven.panne@aedion.de**20061230115623 Use our standard build machinery for building, installing and cleaning the man page. Do not use deprecated - option for 'head'. Use $(RM) instead of explicit 'rm -f' for better portability. Note that we always build/install the man page with the 'install-docs' target now, this is the usual behaviour. "GhcManpages is dead, Jim..." This patch should unbreak 'make dist', too. ] [Warning police: Added missing #include sven.panne@aedion.de**20061230133057] [Update reference to configure.in to refer to configure.ac instead Ian Lynagh **20061231143443] [Removed some trailing spaces sven.panne@aedion.de**20070102133809] [The ghc package is not relocatable (yet), so don't claim that this is the case sven.panne@aedion.de**20070102133923] [Stylistic change: Use %{_prefix} instead of %{prefix} sven.panne@aedion.de**20070102134033] [Added the GHC commentary to the RPM sven.panne@aedion.de**20070102134238] [Added ghc man page to RPM sven.panne@aedion.de**20070102134546] [Fixed bug #744 (ghc-pkg lies about location of haddock-interfaces and haddock-html) sven.panne@aedion.de**20070102134622] [Big tidy-up of deriving code simonpj@microsoft.com**20070102154610 This tidy-up, triggered by Trac #1068, re-factors the way that 'deriving' happens. It took me way longer than I had intended. The main changes, by far are to TcDeriv; everyting else is a minor consequence. While I was at it, I changed the syntax for standalone deriving, so that it goes derive instance Show (T a) (instead of "derive Show for T"). However, there's still an implicit context, generated by the deriving code, and I wonder if it shouldn't really be derive instance (..) => Show (T a) but I have left it simple for now. I also added a function Type.substTyVars, and used it here and there, which led to some one-line changes otherwise unrelated (sorry). Loose ends: * 'deriving Typeable' for indexed data types is still not right * standalone deriving should be documented ] [Docmunent stand-alone deriving simonpj@microsoft.com**20070102161218 I also re-organised the type-system extension section, which has grown rather big. ] [Standalone deriving wibbles: keyword is 'derive' not 'derived'; and add flag documentation simonpj@microsoft.com**20070102161752] [Comments only simonpj@microsoft.com**20070103082517] [Fix another buglet in HsDoc stuff simonpj@microsoft.com**20070103094058 A 'foreign export' represents an *occurrence* of a Haskell name, not a *binding* site for the Haskell name. (This was making cc012 fail; Trac #1054. ] [Better error messages for deriving simonpj@microsoft.com**20070103095412] [Add newline at end simonpj@microsoft.com**20070103102408] [Change to Unix line-line-endings simonpj@microsoft.com**20070103102419] [Make warnings come out in deterministic order simonpj@microsoft.com**20070103102438 Fixes Trac #1053 ] [Comments only simonpj@microsoft.com**20070103103524] [Fix several bugs related to finding free variables simonpj@microsoft.com**20070103115009 Now that coercion variables mention types, a type-lambda binder can have free variables. This patch adjusts the free-variable finder to take account of this, by treating Ids and TyVars more uniformly. In addition, I fixed a bug in the specialiser that was missing a free type variable in a binder. And a bug in tyVarsOfInst that was missing the type variables in the kinds of the quantified tyvars. ] [Fix stupid error in rehashing TcRnDriver (fixes TH test errors) simonpj@microsoft.com**20070103121540] [Fix bug in cast optimisation; fixes Trac #995 simonpj@microsoft.com**20070103153530 There was a plain bug in the cast-optimiation code -- a call to splitCoercionKind_maybe instead of coercionKind! Result was that we missed useful opportunities to move casts around. Trac #995 is an example, but I bet there are more. ] [Be more relaxed about reporting ambiguous class methods simonpj@microsoft.com**20070103160703 (MERGE to STABLE branch, pls) This patch makes us a bit more relaxed about ambiguous class method types. See tc223 for an example. Reported by Yitzchak Gale ] [Comments only simonpj@microsoft.com**20070103175558] [Comments only simonpj@microsoft.com**20070103175638] [Add a type synonym for FamInstEnvs simonpj@microsoft.com**20070103175913] [Record-ise the liberate-case envt, in preparation for new stuff simonpj@microsoft.com**20070103175932] [Fix and improve deriving for indexed data types Manuel M T Chakravarty **20070104013156 - The test for being able to derive the requested classes needs to be made with the representation tycon (not the family tycon). - Standalone deriving for indexed types requires the instance types in the derive clause to match a data/newtype instance exactly (modulo alpha). ] [HsSyn clean up for indexed types Manuel M T Chakravarty **20070105012619 - This patch cleans up the HsSyn representation of type family declarations. - The new representation is not only less delicate, it also simplified teh code a bit. - I took the opportunity of stream lining the terminology and function names at the same time. - I also updated the description on the wiki at ] [disable an incorrect ASSERTion in the non-THREADED_RTS case (bug #1067) Simon Marlow **20070105123403] [wrap Main.main in GHC.TopHandler.runIOFastExit Simon Marlow **20070105114608 This is so that exceptions raised by Main.main do exactly the same thing as they would in a compiled program, including writing the message to stderr and shutting down with the correct exit code. ] [Eagerly raise a blocked exception when entering 'unblock' or exiting 'block' Simon Marlow **20070105135715 This fixes #1047 ] [Remove the DocEntity type. Fixes the problem with duplicate error messages at davve@dtek.chalmers.se**20070105174346 its root. Also gets rid of the getDeclMainBinder function which isn't needed anylonger. ] [Fixed errors in "clunky" definition for pattern guards ijones@syntaxpolice.org**20070107215249 Amusingly, this little error in the GHC manual came from the original SPJ proposal for pattern guards from 1997 and even slipped into the Haskell Workshop 2000 paper by SPJ and Martin Erwig. It's almost 10 years old. ] [Updates to the ghci debugger docs Pepe Iborra **20061231132844] [This patch fixes ticket #1083 in the ghci debugger Pepe Iborra **20070105173851 A module loaded under debugging mode but owning no breakpoints was erroneously identified by ghci as a non-under debugging module, producing a confusing error msg when the user tried to set a breakpoint The fix inserts an empty list of sites in the module-sites dictionary used by the debugger ] [Improved an error message, giving a more concrete suggestion Pepe Iborra **20070105174525] [Remove a tracing statement, change a comment, and make more obvious an unexpected condition Pepe Iborra **20070105174858] [Reload modules after ':break stop' Pepe Iborra **20070106100509 This is necessary to revert CAFs. Previously to this patch the user would get a msg "You may need to reload your modules". This patch takes care of that ] [More informative message in a breakpoint Pepe Iborra **20070106100736] [Extended the debugger documentation with a 'tips' section Pepe Iborra **20070107191227] [Try to emulate the output of 'deriving Show' in the Term pretty printer Pepe Iborra **20070107204319 ] [Have the mangler keep .note.GNU-stack Ian Lynagh **20070108122642] [Have the splitter duplicate the .note.GNU-stack Ian Lynagh **20070108125916] [fix version checking of .hi files Simon Marlow **20070108151006 I broke it during my recent interface-file overhaul ] [When setting stdout and stderr to NoBuffering in GHCi, do stdin too. Ian Lynagh **20070108162838 Fixes trac #929. Merge to 6.6 branch. ] [Unbreak usage of ASSERTM Pepe Iborra **20070109074258] [reorganise text in the "using packages" section Simon Marlow **20070109091758 ] [Fix egregious bug in implication constraints simonpj@microsoft.com**20070109134719 Build an implication constraint if there is a non-trivial refinement, even if there are no other 'given' constraints. Test = gadt/set.hs ] [Preserve rigidity for GADTs when typechecking explicit tuples simonpj@microsoft.com**20070109135314] [Handle synonym families in check_tau_type Manuel M T Chakravarty **20070109215541] [Comments only simonpj@microsoft.com**20070110111331] [Fix apparently-long-standing bug in FloatIn simonpj@microsoft.com**20070110111344 The float-in pass wasn't doing the right thing when you have let x{rule mentions y} = rhs in body It allowed a binding mentioning y to float into the body, which is obviously wrong. I think this bug has been there a long time; I don't really know why it has not come up before. It showed up when compiling Text.Regex.Base.Context with WAY=p in package regex-base. ] [remove old building guide, change links to point to the wiki Simon Marlow **20070110161112] [checkTauTvUpdate: take synonym families into account Manuel M T Chakravarty **20070110184451] [Adding command channel for the hpc debugger to the hpc part of the RTS andy@galois.com**20070109194011] [Dynamically allocating the tix box breakpoint array andy@galois.com**20070109194631] [Changing bootstrapping for pipes between debugger and debuggee andy@galois.com**20070110202635 - Now we use two pipes and a fork rather than use named pipes - We use the HPCRIX env var to send the pipe numbers in %d:%d format - We now always breakpoint for special events - We check to see we are the original process before each breakpoint event sub processes are not debugged; this lets us debug the debugger. ] [Update comments simonpj@microsoft.com**20070111082907] [Fix a nasty recursive loop in typechecking interface files simonpj@microsoft.com**20070111082950] [Spelling correction only simonpj@microsoft.com**20070111084521] [Add comments (AT-related) simonpj@microsoft.com**20070111084645] [Remove redundant import simonpj@microsoft.com**20070111084702] [Improve command-line parser (add OptIntSuffix); make -fliberate-case-threshold dynamic simonpj@microsoft.com**20070111084851] [Log-message for: Improve command-line parser (add OptIntSuffix); make -fliberate-case-threshold dynamic simonpj@microsoft.com**20070111090123 (Alas, Darcs failed to record my log-message for the above patch, so this patch is an attempt to add the log message retrospectively.) Parsing options numeric arguments, such as -fliberate-case-threshold=30 for dynamic flags wasn't being handled well. I elaborated the command-line parser to have a new constructor, OptIntSuffix, for this case, and did the consequential changes. This patch also makes the -fliberate-case-threshold flag into a dynamic flag. ] [Log message for: Fix a nasty recursive loop in typechecking interface files simonpj@microsoft.com**20070111090252 (Alas, Darcs failed to record my log-message for the above patch, so this patch is an attempt to add the log message retrospectively.) Roman found a case where the type-checker for interface files would go into a loop. Here it is: module BarAT where class Foo a where data FooT a :: * int :: FooT a -> Int module Baz where import BarAT foo :: FooT Int -> Int foo = foo The trouble turned out to be that Foo gives rise to a *newtype*, and using a newtpe caused a little bit too much strictness in BuildTyCl.mkNewTyConRhs. Specifically, mkNewTypeCoercion did pattern matching, which forced the call to eta_reduce in mkNewTyConRhs. This is all too delicate really. But for now I've fixed the bug, and added an explanatory comment. I'll add a test for it, in indexed-types/should_compile/ATLoop ] [Add the function TypeRep.pprTypeApp, and use it simonpj@microsoft.com**20070111090704 pprTypeApp :: SDoc -> [Type] -> SDoc pprTypeApp pp tys = hang pp 2 (sep (map pprParendType tys)) ] [Comments simonpj@microsoft.com**20070111090837] [Comments simonpj@microsoft.com**20070111090922] [Add comments about invariants simonpj@microsoft.com**20070111091003] [Make the LiberateCase transformation understand associated types simonpj@microsoft.com**20070111091533 Consider this FC program: data family AT a :: * data instance AT Int = T1 Int Int f :: AT Int -> Int f t = case t of DEFAULT -> We'd like to replace the DEFAULT by a use of T1, so that if we scrutinise t inside we share the evaluation: f t = case (t `cast` co) of T1 x y -> I decided to do this as part of the liberate-case transformation, which is already trying to avoid redundant evals. The new transformation requires knowledge of the family instance environment, so I had to extend ModGuts to carry the fam_inst_env, and put that envt into the liberate-case environment. Otherwise it's all pretty straightforward. ] [Comments only simonpj@microsoft.com**20070111091623] [Comments only Pepe Iborra **20070111111707] [Fix some text in the GHCi help message that was going over 80 columns Pepe Iborra **20070111111742] [This patch teaches ghci to announce that a module has beeen loaded in debugging mode Pepe Iborra **20070111112351 Usually ghci announces when a module has been loaded interpreted. Now it will also announce it when the module has been instrumented for debugging ] [Sort rules and instances lexicographically in interface files simonpj@microsoft.com**20070110124327 We should sort rules and instances lexicographically, not by Unique, in interface files, else we get unnecessary "rules changed" and hence unnecessary recompilation. This bug has been there since the interface-file upheaval that put Names into IfaceSyn. ] [Correct spelling simonpj@microsoft.com**20070110133324] [Comments simonpj@microsoft.com**20070111085331] [Add -ddump-rule-firings simonpj@microsoft.com**20070111130804] [Avoid duplicate defns of 'main' in module Main simonpj@microsoft.com**20070111131029] [Slightly improve -ddump-hi-diffs output simonpj@microsoft.com**20070111131226] [Wibble simonpj@microsoft.com**20070111131423] [:cd is a top level only command, that is, not allowed in inferior ghci sessions Pepe Iborra **20070111131156] [Added the new :breakpoint continue option Pepe Iborra **20070111131359 Previously, when in a breakpoint, :quit was used to continue execution. This is not the right thing to do, so this patch restores :quit to its original meaning whether or not ghci is in an inferior session. The continue behavior is now provided by ":breakpoint continue". I added a synonim command in :continue because it is much shorter, but this is optional ] [Comments only Pepe Iborra **20070111131431] [An object code module in ghci is not and cannot be handled by the GHCi debugger Pepe Iborra **20070111145634 This patch should provide more informative messages to the user ] [Fixed .spec file (no building guide anymore) sven.panne@aedion.de**20070111162956] [Remove bogus assertion in getCallMethod Kirsten Chevalier **20070111172501 With my as-yet-uncommitted changes to the demand analyzer, code got generated for some programs that caused this assertion to fail. The transformation I was doing was correct; it was the assertion that wasn't. So, the assertion is removed. This is actually Simon PJ's patch rather than mine, but I noticed that it wasn't checked in and it seems completely safe to do so. ] [expand $topdir in the output of 'ghc-pkg field' Simon Marlow **20070109170019 this fixed #937, and gets us further towards 'setup haddock' working for Cabal on Windows. ] [Add a warning for tabs in source files Ian Lynagh **20070112164732] [Fix an obscure bug in rule-matching simonpj@microsoft.com**20070113220425 This bug is the cause of Trac #1092. The fix is easy by making the RnEnv2 implementation do the right thing. See Note [rnBndrLR] in VarEnv. Test case is simplCore/should_compile/rule1 ] [Too agressive breakpoint coalescing politics Pepe Iborra **20070111172555] [Remove a false assertion Pepe Iborra **20070112144040] [Add a header for GhciMonad.hs Pepe Iborra **20070114130815] [Add TcGadt to package.conf Pepe Iborra **20070114130853 I'm assuming that this was overlooked during the System Fc overhaul If TcGadt is not supposed to be in package.conf please rollback this patch ] [Documentation for the new ':breakpoint continue' command Pepe Iborra **20070115095643] [Fix ghc-pkg now showError has been removed Ian Lynagh **20070115124441] [Give -fwrapv to gcc when it supports it Ian Lynagh **20070115194250 Fixes trac #952: Haskell requires consistent overflow behaviour, which gcc doesn't give without this flag. ] [Check with sysconf _POSIX_THREAD_CPUTIME is available before we try to use it. Ian Lynagh **20070116012907 Calling clock_gettime(CLOCK_THREAD_CPUTIME_ID,_) regardless was causing a segfault (trac #1030). ] [allow 'ghci -threaded' (fixes #1101) Simon Marlow **20070116120409] [Remove special lambda unicode character, it didn't work anyway Simon Marlow **20070116161100 Since lambda is a lower-case letter, it's debatable whether we want to steal it to mean lambda in Haskell source. However if we did, then we would probably want to make it a "special" symbol, not just a reserved symbol, otherwise writing \x->... (using unicode characters of course) wouldn't work, because \x would be treated as a single identifier, you'd need a space. ] [addition to "Eagerly raise a blocked exception" to fix unreg case Simon Marlow **20070117095944] [prettifying Cmm a bit: convert (x + (-N)) to (x - N) mrchebas@gmail.com**20070117130037] [prettifying Cmm: print MachOps as identifiers by replacing ' ' with '_' mrchebas@gmail.com**20070117133234] [Don't start a GHC session before answering --version/--numeric-version Ian Lynagh **20070119155231 This also fixes bootstrapping issues, as when bootstrapping we don't have a package.conf when we run configure, so it fails to work out what version of GHC it is which causes breakage later on. ] [User's guide: length is not a good consumer anymore. Spencer Janssen **20070104075243] [Tweak hc-build Ian Lynagh **20070119220850 Touch all the object files at the end of hc-build, as otherwise make gets upset as the .h files are newer than them and tries to rebuild stuff (and fails). Print a nice message when we're finished. ] [Reorganizing my mess a bit Pepe Iborra **20070107211240] [Add obtainTerm1 to the GHC api Pepe Iborra **20070120185249] [Fix a bug in the closure viewer Pepe Iborra **20070120201105] [Refactoring of Debugger.hs Pepe Iborra **20070121105909 A big motivation to start with it was getting several independently useful functions out of the Ghci monad and into the IO monad instead. Working in debugger integration for Emacs via the ghc-api is helping me to improve reusability.. While I was there, I tried to make the code less tangled, easier to understand, switched from implicit Exceptions to explicit Eithers in the bkptTable code, etc. ] [Comments only Pepe Iborra **20070121110344] [Improve presentation of :print output Pepe Iborra **20070121110610] [Add support for overloaded string literals. lennart@augustsson.net**20061221210147 The class is named IsString with the single method fromString. Overloaded strings work the same way as overloaded numeric literals. In expressions a string literals gets a fromString applied to it. In a pattern there will be an equality comparison with the fromString:ed literal. Use -foverloaded-strings to enable this extension. ] [Document the overloaded string extension. lennart@augustsson.net**20070120161436] [Add -stdout-binary and -stderr-binary flags to bypass dos2unix Simon Marlow **20070123123843 Apparently some versions of dos2unix can detect a binary file and ignore it, but others can't, so provide a way to tell runstdtest that the output is in binary. ] [Comments and layout only simonpj@microsoft.com**20070125125448] [Save the Win32 error code where necessary Simon Marlow **20070126162620 Similarly to the way we save errno across context switches and suspendThread/resumeThread, we must save and restore the Win32 error code via GetLastError()/SetLastError(). Fixes #896. ] [pass primop type args down to cgPrimOp Brian Alliet **20070208221421] [typed byte arrays Brian Alliet **20070208223146] [update javagen for uarray changes Brian Alliet **20070208223649] [some weird darcs conflict resolution that i don't really understand Brian Alliet **20070208225348] [more weird darcs conflict resolution that i don't really understand Brian Alliet **20070208230046] [Fix GHCi on PowerPC OS X Ian Lynagh **20070128213216 David Kirkman and Peter Tanski noticed that a line had been removed during a patch merge which meant that oc->image pointed to the wrong place and ultimately caused an error from realloc. ] [fix bug in GetLastError/SetLastError patch Simon Marlow **20070129124559] [Fix for #936 Simon Marlow **20070130101306 We must traverse dependencies recursively if we encounter any [boot] modules in the dependencies. ] [Fix Trac #1122; spot absence of TyCon in data/newtype header simonpj@microsoft.com**20070130161330] [Add note about Template Haskell and mutual recursion simonpj@microsoft.com**20070131091451] [Fix a typo Pepe Iborra **20070131104001] [BugFix: do not insert breakpoints around expressions with unlifted kind Pepe Iborra **20070131102821 I have added a check, and while there removed a few kludges in my code. Kudos to -dcore-lint for uncovering this. I think that this restriction could be lifted, if GHC.Base.breakpoint could have kind ?? -> ??. But is this a legal type? Does not look so to me. ] [Fix typo Ian Lynagh **20070131112724] [Fix typo causing the PowerPC OS X build to fail Ian Lynagh **20070131120153] [Two new warnings: arity differing from demand type, and strict IDs at top level Kirsten Chevalier **20070129225533 I added two new Core Lint checks in lintSingleBinding: 1. Check that the id's arity is equal to the number of arguments in its demand type, if it has a demand type at all (i.e., if demand analysis already happened). 2. Check that top-level or recursive binders aren't demanded. ] [Use Id.isStrictId simonpj@microsoft.com**20070131150616] [Slight refactoring for overloaded strings simonpj@microsoft.com**20070131150701] [Always pay attention to -keep-tmp-files when we want to delete files Ian Lynagh **20070131151058] [Partial fix for #926 Simon Marlow **20070201114047 It seems that when a program exits with open DLLs on Windows, the system attempts to shut down the DLLs, but it also terminates (some of?) the running threads. The RTS isn't prepared for threads to die unexpectedly, so it sits around waiting for its workers to finish. This bites in two places: ShutdownIOManager() in the the unthreaded RTS, and shutdownCapability() in the threaded RTS. So far I've modified the latter to notice when worker threads have died unexpectedly and continue shutting down. It seems a bit trickier to fix the unthreaded RTS, so for now the workaround for #926 is to use the threaded RTS. ] [some dynamic flags cannot be used with OPTIONS_GHC, e.g. -i, -package Simon Marlow **20070201124058 fixes #1108 ] [chmod +x install-sh, see bug #978 Simon Marlow **20070201131125] [Adhere to the new GNU Coding Standards, avoiding a warning with autoconf 2.59c and later sven.panne@aedion.de**20070201134243] [Warning police: Avoid warning about unused variable sven.panne@aedion.de**20070201150839] [Fix imports Pepe Iborra **20070202100502] [Refactoring of DsBreakpoint.hs Pepe Iborra **20070202105907] [Extend the local bindings at a breakpoint with one for the wrapped expression Pepe Iborra **20070202112629 By popular request, in a breakpoint it is possible now to inspect the result of the expression wrapped by the breakpoint. The user interface for this is right now preliminar; there is a new binding called '_result' at every breakpoint. Suggestions are welcome! ] [Record arity of the worker, to maintain consistency of arity and strictness information (checked by Lint) simonpj@microsoft.com**20070202151051] [Reset the demand info on bindings going to top level (since they cannot be strict) simonpj@microsoft.com**20070202151206] [Don't dump floated bindings just outside a lambda simonpj@microsoft.com**20070202155452 We do not want the FloatOut pass to transform f = \x. e to f = let lvl = ... in \x.e The arity pinned on f isn't right any more; and see Note [Floating out of RHSs]. Core Lint is now spotting the arity lossage (for a letrec), which is how I spotted this bug. I also re-jigged the code around floatBind; it's a bit tidier now. ] [clarify that -main-is sets main module and function andrew.pimlott.ctr@metnet.navy.mil**20070131223921] [One more wibble to FloatOut, fixes HEAD breakage (I hope) simonpj@microsoft.com**20070202225348] [Fix a pair of classic, but tricky, bugs in the type matcher; exposed by a program from Roman simonpj@microsoft.com**20070202233634] [Comments only simonpj@microsoft.com**20070202233750] [Warning police: "%p" format expects a void* sven.panne@aedion.de**20070203123141] [Fix a typo. lennart@augustsson.net**20070204190855] [Fix a typo. lennart@augustsson.net**20070204192329] [Fix a comment typo. lennart@augustsson.net**20070204193040] [Look through Notes when generating and matching RULES simonpj@microsoft.com**20070202173527] [Make HsRecordBinds a data type instead of a synonym. lennart@augustsson.net**20070204015905] [Export nameEnvUniqueElts, similar to nameEnvElts, but giving the Unique as well. lennart@augustsson.net**20070204190921] [Export a function to grab the local environment as a function. lennart@augustsson.net**20070204192855] [TAG 2007-02-05 Ian Lynagh **20070205121210] [One more PAPI measurement, dropped precise cycle counting and replaced it with instructions. Alexey Rodriguez **20061221115615] [Extension of testing script to parse PAPI results from GHC programs. Alexey Rodriguez **20061221115709] [Small optimisation for comparisons mrchebas@gmail.com**20070119150433 Comparison of literal with narrowed/widened operand: perform the comparison at a different width, as long as the literal is within range. We only do this on x86/x86_64 at the moment, where we have comparisons at different sizes available. ] [don't make jump tables for small switches (<= 4 branches) mrchebas@gmail.com**20070119150749 Only affects -fasm: gcc makes its own decisions about jump tables ] [small debugging output cleanup mrchebas@gmail.com**20070119150800] [x86: disable assertion that conditionals are not on I8; they can be mrchebas@gmail.com**20070119160501 ] [Semi-tagging optimisation Simon Marlow **20070122114016 In the generated code for case-of-variable, test the tag of the scrutinee closure and only enter if it is unevaluated. Also turn *off* vectored returns. ] [optimisation: shortcut branches when possible (x86/x86_64 only for now) mrchebas@gmail.com**20070122114201 This is only turned on with -O, and probably won't make much difference at the moment, but it will be important for semi-tagging. ] [Simpler, more self-contained, "make dist" Simon Marlow **20070205140727 This version does all its work in a subdirectory (no more destructive 'make distclean' in the current build tree), and results in the exact -src.tar.bz2 distributions that we will put up for download. ] [don't forget to remove html-docs as part of 'make clean' Simon Marlow **20070205140800] [Semi-tagging optimisation Simon Marlow *-20070122114016 In the generated code for case-of-variable, test the tag of the scrutinee closure and only enter if it is unevaluated. Also turn *off* vectored returns. ] [Make binary-dist tarballs automatically, and add support for uploading Simon Marlow **20070205144847 Moving functionality that was previously in the nightly build scripts into the top-level Makefile, so it's easier to use from BuildBot. ] [Move #ifdef __GLASGOW_HASKELL__ < 604 to cover the CSIDL definitions too Simon Marlow **20070205160229 Fixes bug exposed by compiling base w/ -fasm on Windows ] [Improve simplification of coercions simonpj@microsoft.com**20070205163324 At the moment GHC really does very little simplification of coercions. This patch improves matters, but it's still not great, especially when you have chains linked together with 'trans'. I'm also concerned that I have not yet implemented the 'leftc' and 'rightc' coercions we added to the paper. But at least things are better than they were. In particular g `trans` sym g now cancels to give the identity. ] [Establish the CoreSyn let/app invariant simonpj@microsoft.com**20070205173150 This patch clears up a long-standing wart. For some time it's been the case that the RHS of a non-recursive let can be unlifed iff the RHS is ok-for-speculation This patch extends the invariant to the argument of an App, and establishes it by the smart constructors mkDsApp, mkDsApps in the desugarer. Once established, it should be maintained by the optimiser. This tides up some awkward cases, notably in exprIsHNF, and I think it fixes a outright strictness bug in Simplify.prepareRhs. ] [Use exprIsCheap in floating, just as the simplifier does simonpj@microsoft.com**20070205173456] [Float casts out of lambdas simonpj@microsoft.com**20070205173544 See Note [Casts and lambdas] in SimplUtils. I found this transformation when staring at some cast-heavy code generated by Language.Haskell.Lexer.hs in the haskell-src library. The basic transformation is this: (\x. e `cast` g1) --> (\x.e) `cast` (tx -> g1) where x:tx. ] [Improve handling of partial applications involving casts simonpj@microsoft.com**20070205174058 This patch improves prepareRhs, so that it deals better with casts. We want to deal well cases like this v = (f e1 `cast` co) e2 Here we want to make e1,e2 trivial and get x1 = e1; x2 = e2; v = (f x1 `cast` co) v2 This really happens in parser libraries, which wrap functions in newtypes. ] [Implement the PushT rule from the FC paper simonpj@microsoft.com**20070205174334] [fix memory leak in allocExec/freeExec (see bug #985) Simon Marlow **20070205102102] [Fix syntax error Ian Lynagh **20070205203125] [Don't use compat when compiling utils with stage1 Ian Lynagh **20070206003232] [Expose rnInScopeSet from VarEnv simonpj@microsoft.com**20070206120737] [Fix a small bug when comparing patterns for equality simonpj@microsoft.com**20070206121518] [Do more wild-carding in SpecConstr; I'm not quite sure about this, but it does no harm simonpj@microsoft.com**20070206121552] [Improve rule-matching for let expressions simonpj@microsoft.com**20070206122233] [Comments and debug output simonpj@microsoft.com**20070206122435] [Rename local variable (no semantic effect) simonpj@microsoft.com**20070206122456] [Check for escape when unifying forall-types simonpj@microsoft.com**20070206165456 This egregious omission led to Trac #1128. ] [Detect the snapshot version number using darcs Simon Marlow **20070206212536 For non-release builds, we want to append a date to the version number (e.g. 6.7.20070206). Previously this was done by the nightly build script, this new method figures out the snapshot version by querying the darcs repository and finding the date of the most recent patch (actually it finds the most recent of the last 100 patches, but that should be good enough). This is done by the configure script. To handle source distributions, we create a file VERSION in the top-level directory that contains the version number, and ship this in the source distribution. The configure script picks up the version from this file if it doesn't see a _darcs directory. ] [Lightweight ticky-ticky profiling Kirsten Chevalier **20070207081404 The following changes restore ticky-ticky profiling to functionality from its formerly bit-rotted state. Sort of. (It got bit-rotted as part of the switch to the C-- back-end.) The way that ticky-ticky is supposed to work is documented in Section 5.7 of the GHC manual (though the manual doesn't mention that it hasn't worked since sometime around 6.0, alas). Changes from this are as follows (which I'll document on the wiki): * In the past, you had to build all of the libraries with way=t in order to use ticky-ticky, because it entailed a different closure layout. No longer. You still need to do make way=t in rts/ in order to build the ticky RTS, but you should now be able to mix ticky and non-ticky modules. * Some of the counters that worked in the past aren't implemented yet. I was originally just trying to get entry counts to work, so those should be correct. The list of counters was never documented in the first place, so I hope it's not too much of a disaster that some don't appear anymore. Someday, someone (perhaps me) should document all the counters and what they do. For now, all of the counters are either accurate (or at least as accurate as they always were), zero, or missing from the ticky profiling report altogether. This hasn't been particularly well-tested, but these changes shouldn't affect anything except when compiling with -fticky-ticky (famous last words...) Implementation details: I got rid of StgTicky.h, which in the past had the macros and declarations for all of the ticky counters. Now, those macros are defined in Cmm.h. StgTicky.h was still there for inclusion in C code. Now, any remaining C code simply cannot call the ticky macros -- or rather, they do call those macros, but from the perspective of C code, they're defined as no-ops. (This shouldn't be too big a problem.) I added a new file TickyCounter.h that has all the declarations for ticky counters, as well as dummy macros for use in C code. Someday, these declarations should really be automatically generated, since they need to be kept consistent with the macros defined in Cmm.h. Other changes include getting rid of the header that was getting added to closures before, and getting rid of various code having to do with eager blackholing and permanent indirections (the changes under compiler/ and rts/Updates.*). ] [Update to manual section for ticky-ticky Kirsten Chevalier **20070207084527 I added a slightly more helpful remark in the profiling section of the manual about how to use ticky-ticky. ] [Fix bug in -ddump-minimal imports Trac #1025 simonpj@microsoft.com**20070207094945 The code for -ddump-minimal-imports was erroneously using loadSrcInterface, which looks only for *exposed* modules. It should instead use loadSysInterface which looks for all interfaces. The fix is straightforward. MERGE to 6.6 branch. ] [Spelling fix simonpj@microsoft.com**20070207095153] [Force recompilation with -ddump-minimal-imports simonpj@microsoft.com**20070207100053] [Force recompilation on all -ddump flags simonpj@microsoft.com**20070207100245] [update version hack to work on partial repositories Simon Marlow **20070207105929 Instead of asking for the last 100 patches, we just get the first 500 lines of output from darcs changes (ugh, better ideas welcome). ] [Make the User's Guide DocBook XML 4.2 conformant again sven.panne@aedion.de**20070207161927] [Improved naming of generated HTML files by using nice IDs sven.panne@aedion.de**20070207163404] [Teach darcs-all how to get testsuite and nofib Ian Lynagh **20070207165344] [Optimize dynamic breakpoints for speed Pepe Iborra **20070207082110 Made a bit faster the test which gets done every time a running program hits a dynamic breakpoint. I moved the bounds checking inside a DEBUG pragma and replaced (IArray.!) for unsafeAt ] [Type reconstruction/RTTI: improve handling of newtypes Pepe Iborra **20070207205947 Newtypes have always been a problem because they are not there at runtime, but we need to take them into account. Tests ghci.debugger/print011 and ghci.debugger/print012 cover this ] [Fixed typo in devel1 flavor Kirsten Chevalier **20070207225957 Under GhcStage2HcOpts, "O" should be "-O"; fixed. ] [fix cut-and-pasto in code for binary-dist upload Simon Marlow **20070208120712] [make VERSION a dependency of dist Simon Marlow **20070208121555] [Make it a warning, not an error, if the version date cannot be determined Simon Marlow **20070208151323 This happens when the build tree is a link-tree to the source tree, because lndir will normally omit the _darcs directory. ] [Ticky is an RTS-only way; also fix collateral damage to other ways Simon Marlow **20070209140818 The ticky static flag was being poked too early, which lead to breakage in the -prof way amongst other things. I've installed some sanity checking to make sure we catch this earlier if it happens again. ] [Refactor the simplifier's treatment of case expressions simonpj@microsoft.com**20070209172938 (NB: this patch could conceivably require some bits of the following SpecConstr patch to compile cleanly. It's conceptually independent, but I'm not 100% certain that I've included all the necessary bits here.) This patch cleans up the simplifier's handling of various otimisations for case expressions, notably - case elimination (discarding the case altogether) - merging identical alternatives - discarding impossible alternative - merging nested cases Previously this was partly handled before, and partly after, simplifying the case alternatives. The trouble with that is that the dead-ness information on the case binders gets munged during simplification, and that turned out to mean that case elmination essentially never happened -- stupid. Now I've moved it all to before simplifying the alterntives. In fact this reduces the amount of code, I think, and it's certainly tidier. I don't think there is any loss. ] [Major improvement to SpecConstr simonpj@microsoft.com**20070209173645 This patch improves the SpecConstr pass, by a) making it work with join points b) making it generate specialisations transitively As part of it, SpecConstr now carries a substitution with it, which runs over the whole program as it goes. This turned out to be a big win; simplified the implementation quite a bit. I have *disabled* the specialisation on lambdas; it's pretty fragile, and sometimes generates more and more specialisations. Something to come back to, perhaps. I rejigged the flag-handling a bit. Now the specification of passes in DynFlags is a bit nicer; see - optLevelFlags top-level data structure - runWhen function - CoreDoPasses constructor There are now command-line flags -fspec-constr -fliberate-case -fspec-threshold=N which do the obvious thing. -O2 switches on both spec-constr and liberate-case. You can use -fno-liberate-case, -fno-spec-constr after -O2 to switch them off again. The spec-threshold applies to both these transformations; default value 200 for now. ] [Using RTS debug tracing support inside Hpc.c andy@galois.com**20070213184402] [Fixing bad allocation of tix box breakpointing array. andy@galois.com**20070213220203] [fix closure_sizeW_() for AP closures Simon Marlow **20070214120401 Since thunks grew an extra padding word in GHC 6.6, closure_sizeW() has been wrong for AP closures because it assumed compatible layout between PAPs and APs. One symptom is that the compacting GC would crash if it encountered an AP. APs conly crop up in GHCi or when using asynchronous exceptions. Fixes #1010 ] [add a ToDo, reference bug #1147 Simon Marlow **20070214144716] [When the pipeline just copies the file, prepend a LINE pragma Simon Marlow **20070215115852 For example, "ghc -E Foo.hs -o Foo.bar" just copies Foo.hs to Foo.bar. This patch adds a LINE pragma to the beginning of Foo.bar so that further processing can track the location of the original file. The motiviation for this is bug #1044. When generating Haddock docs, we preprocess the .hs to a .raw-hs, sometimes this doesn't involve any actual preprocessing and in those cases we lose track of the original filename. ] [Modify the breakpoint desugaring to introduce more laziness Pepe Iborra **20070213203043 Benchmarks have shown that making the formation of the list of locals more lazy can improve performance of -fdebugging up to 50% in some cases ] [Fixed a bug in the datacon names extension in the dynamic linker Pepe Iborra **20070215181934 My code was doing unnecessary work when trying to get hold of all the BCOs in order to sniff the datacon names. This involved calculating the transitive closure of a relation and was causing a huge performance slowdown in GHCi, as benchmarks uncovered. It turns out that this calculation was unnecessary. ] [conflict resolution in darcs-all Brian Alliet **20070216043226] [ByteArray -> UArray in linker.c Brian Alliet **20070216043803] [ditch GHC.Pack, it isn't needed Brian Alliet **20070218012241] [string literals are now of type String# Brian Alliet **20070218012330] [uArrayCopy# primop Brian Alliet **20070218085153] [implement uArrayCopy# in javagen Brian Alliet **20070218085243] [support for new primitive types in javagen Brian Alliet **20070218085301] [Fix left-bias in ghci tab-completion code Judah Jacobson **20070214034234] [Taught :breakpoint add to guess the module name if not given Pepe Iborra **20070216193810 Now the user can say > :break add 13 at the ghci prompt and the debugger will use the first top level module as the target for the breakpoint ] [Uniform user interface Pepe Iborra **20070216195424 Print "Breakpoint set at Main:26:13" instead of "Breakpoint set at (26,13)" ] [Fixed a bug with the :print command spotted by Bernie Pope. Pepe Iborra **20070216201052 Test ghci.debugger/scripts/print018 covers this ] [Signature type variables must not be instantiated with tycons simonpj@microsoft.com**20070219175248 An egregious bug in the type checker meant that it was possible for a "signature type variable" (a MetaTv of SigTv form) to be instantatiated with a type-constructor application. This destroys the invariant for SigTv. The fix is easy; adding the predicate TcType.isTyConableTyVar Fixes Trac #1153 ] [Fix sleep delay for the non-threaded Windows RTS Simon Marlow **20070220090716 This is the Windows counterpart to "Make the non-threaded-RTS threadDelay wait at least as long as asked" ] [freeTaskManager: don't free Tasks that are still in use Simon Marlow **20070220095456 See conc059. ] [describe the Z-encoding for __stginit symbol names (addresses #1014) Simon Marlow **20070220132532] [Fix obscure bug in reportDeprecations simonpj@microsoft.com**20070220174714 Fixes Trac #1128 Please merge to STABLE A rather obscure bug related to -fno-implicit-prelude. See Note [Used names with interface not loaded] in RnNames. Easily fixed, however. Test is rn051 ] [Fix case-merge bug that was breaking the HEAD simonpj@microsoft.com**20070221091123 My re-org of the case-merging transformation introduced a bug, which led to incorrect code. This only showed up occasionally, but it generated incorrect code for PprC.pprCastReg in the stage-2 compiler. As a result the stage-2 compiler ran without crashing, but itself generated bogus C. For a change, this is one that Core Lint couldn't find, so the trail was a bit longer. The fix is easy (and commented). ] [MERGE from 6.6: Windows fix for stdcall foreign-import-wrapper, fixes ffi012(ghci) Simon Marlow **20070221092950] [Fix defaulting for overloaded strings simonpj@microsoft.com**20070221103645 This patch fixes the typechecking of the default declaration itself, when overloaded strings are involved. It also documents the behaviour in the user manual. nofib/spectral/power should work again now! ] [Fix a deriving bug, arising from recent refactoring simonpj@microsoft.com**20070221124739 This one is a hangover from something I did a month or two ago, but didn't get quite right. tcSimplifyDefault should not check for no-instances; instead the checkValidInstance in TcDeriv does so. Conal's DeepArrow needs this fix. Test is drv015. ] [Remove dead code from FunDeps simonpj@microsoft.com**20070221131340 I forgot to to this when refactoring some months ago! ] [Deal more correctly with orphan instances simonpj@microsoft.com**20070221163047 Conal Eliott (Trac #1145) exposed a nasty flaw in the way in which orphan instances are computed, when there are functional dependencies in the class. It took me some time to figure out what was going on, and led to more refactoring. Briefly: * Elaborate comments about orphan-hood and versioning added to IfaceSyn * The is_orph field vanishes from InstEnv.Instance * Similarly ru_orph vanishes from CoreSyn.CoreRule * Orphan-hood is computed in MkIface.instanceToIfaceInst, and MkIface.coreRuleToIfaceRule Elsewhere just tidying up. ] [Import trimming simonpj@microsoft.com**20070221165312] [Allow GADT syntax for newtypes simonpj@microsoft.com**20070221170401 Fixes Trac #1154. Please merge. Tests are tc225, and tcfail176. ] [Removed unnecessary code Pepe Iborra **20070219122134 The breakpointJump functions never show up in the code that the typechecker sees, as they are inserted by the desugarer later. ] [Fix an incomplete pattern in the code for :print Pepe Iborra **20070221150942] [Fix the behaviour of :print with functions Pepe Iborra **20070221151117 It now outputs "" instead of showing them as thunks ] [Improving the performance of breakpoints up to 50% (by playing with laziness) Pepe Iborra **20070221185649 This patch performs several optimizations with the goal of minimizing the cost of building the arguments to breakpointJump: - Group them all in a single tuple, to minimize closure creation in heap - Wrap this with the GHC.Base.lazy combinator, to induce max laziness - Remove as many literal strings as possible * injecting a module-local CAF to store the module name and use that * eliminating the package string (not needed). ] [refactoring only: remove unused code/imports Simon Marlow **20070111091944] [refactoring Simon Marlow **20070222100349] [upload documentation too Simon Marlow **20070222102823] [Free thread local storage on shutdown Ian Lynagh **20070222144306] [Unbreak HEAD Pepe Iborra **20070222181201 My previous patch was creating problems with hs-boot files. ] [thread family instance env through the desugarer Brian Alliet **20070224081018] [fix darcs-all again Brian Alliet **20070224081223] [support newtype families in foreign imports Brian Alliet **20070225101122] [support UArrays as FFI args Brian Alliet **20070225123736] [clean up major ugliness in DsCCall.unboxAr Brian Alliet **20070225124644] [correct the type for primitive string literals Brian Alliet **20070225140309] [allow unboxed arrays as ffi result types Brian Alliet **20070225140357] [fix newtyped io'ed result types Brian Alliet **20070225143557] [fix forall ffi label bug Brian Alliet **20070226060030] [uArrayCopy should operate MutableUArray#s Brian Alliet **20070226113630] [jvm foreign exports (and minor cleanup of normal c ones) Brian Alliet **20070310043925] [main is just another foreign export in Java Brian Alliet **20070311015907] [better error message for missing java hi files Brian Alliet **20070311091629] [remove UARRAY nonsense from config.mk Brian Alliet **20070311100036] [major overhaul of GCode (might result in some instability) Brian Alliet **20070311102133] [add case for stableName in jType Brian Alliet **20070311103916] [Moved argument position info of ATs into tycon rhs info Manuel M T Chakravarty **20070223033848] [Wibble Pepe Iborra **20070223102957] [pthread_key_delete wants the key itself, not a pointer to it Ian Lynagh **20070223122312] [Tidy up typechecking for newtypes simonpj@microsoft.com**20070223141032] [Fix parsing of parallel array literals Manuel M T Chakravarty **20070224061150] [Don't hardwire RELEASE into configure.ac sven.panne@aedion.de**20070224180123 Previously one had to edit configure.ac to build a release version. This is evil, so one can now specify this on the configure invocation line like: RELEASE=YES ./configure Note that non-released versions are still the default. ] [Doc typo Ian Lynagh **20070227125731] [Constructor names in info tables bjpop@csse.unimelb.edu.au**20070220190731 This patch adds data constructor names into their info tables. This is useful in the ghci debugger. It replaces the old scheme which was based on tracking data con names in the linker. ] [fix data con patch for 64-bit architectures Simon Marlow **20070227134358] [Remove the itbls field of BCO, put itbls in with the literals Simon Marlow **20070227134609 This is a simplification & minor optimisation for GHCi ] [Fixes for the mangler on IA64 Ian Lynagh **20070227174542 From heatsink, in trac #1150. ] [Make let-matching work in Rules again simonpj@microsoft.com**20070227231313 A RULE is supposed to match even if there is an intervening let: RULE f (x:xs) = .... target f (let x = thing in x:xs) It's surprisingly tricky to get this right; in effect we are doing let-floating on the fly. I managed to get it wrong before, or at least be over-conservative. And in "fixing" that I got it wrong again in a different way, which made it far too conservative. In particular, it failed to match f (let x = y+y in let z=x+y in z:xs) because the binder x was cloned and looked "locally-bound". See the ever growing comments with the Let rule for details. That patch reverts to the previous story, which is still a bit too conservative, but not so egregiously so. Fixes Romans's problem. ] [Windows: the .hp file is .exe.hp Simon Marlow **20070228120319] [Remove vectored returns. Simon Marlow **20070228130714 We recently discovered that they aren't a win any more, and just cost code size. ] [use -fforce-recomp when compiling Main.hs against the ghc package. Simon Marlow **20070228153304 This is necessary because GHC's recompilation checker doesn't check across package boundaries. ] [Fix #249 (-caf-all bugs) Simon Marlow **20070228155009 There were two bugs: * we were generating the symbol name for the CAF cost centre from the OccName, which isn't unique enough in the case of system-generated non-external names * :Main.main caused problems, because we were assuming that every top-level CAF was from the current module. ] [Fix #839 (Generate documentation for built-in types and primitve operations) Simon Marlow **20070228163442 This patch was originally by dinko.tenev@gmail.com, but I re-recorded it in order to add a better log message. The effect of this patch is to add entries for primitive types in the documentation: Int#, Char#, etc. and to document the built-in identifiers (seq, lazy, inline, unsafeCoerce#). ] [some more vectored return stuff to be removed Simon Marlow **20070301092250] [Fix -keep-s-file with --make Simon Marlow **20070301095749] [is64BitInteger: truncate to 64 bits before testing Simon Marlow **20070301112513 We weren't catching some literals that actually fit in 32 bits before, because e.g. -1 was sometimes represented as 0xffffffffffffffff in CmmInt. ] [Use the most complex form of addressing modes on x86 Simon Marlow **20070301112625 We had a pattern that matched (base+(index<**20070301130339] [further improvements to the x86/x86_64 NCG Simon Marlow **20070301130628] [Use timer_create() for the interval timer, if available Simon Marlow **20070302113104 This lets the threaded RTS use SIGVTALRM rather than SIGALRM for its interval timer signal, so the threaded and non-threaded RTS are compatible. It unfortunately doesn't completely fix #850/#1156, for that we really have to use a restartable sleep instead of usleep(). Also I cleaned up the timer API a little: instead of returning an error value that ultimately gets ignored, we now report errors from system calls and exit. ] [Use Data.String rather than GHC.Base for IsString/fromString Ian Lynagh **20070303145315] [better autoconfery for timer_create() Simon Marlow **20070305143643] [forkProcess: startTimer() in the child, because the timer will be reset Simon Marlow **20070305144550] [Simple fix for Trac #1199 (pls merge to branch) simonpj@microsoft.com**20070306065641] [fix the timer_create() test Simon Marlow **20070306093525] [Remove old references to the in-tree building guide Ian Lynagh **20070306144341] [Remove references to the in-tree building guide from teh old commentary Ian Lynagh **20070306144724] [remove vestiges of CCallable/CReturnable Simon Marlow **20070306123533] [disable -Wbad-function-cast; it's hard/impossible to work around Simon Marlow **20070306135543] [workerTaskStop(): set task->cap = NULL Simon Marlow **20070306140453 avoids an assertion failure in newBoundTask() ] [THREADED_RTS: use cas() when claiming thunks Simon Marlow **20070306142732 I guess I forgot to do this the first time around; the upshot is that there could be some uncaught duplication of work on a multiprocessor (but unlikely). ] [add noDuplicate# Simon Marlow **20070306143112 This primop ensures that the current computation is not being duplicated, by calling threadPaused(). The idea is to use it inside unsafePerformIO/unsafeInterleaveIO (see #986). ] [Remove outdated libraries/doc/libraries.xml and libraries/doc/libtable.xml Ian Lynagh **20070306152654] [add declaration for noDuplicatezh_fast Simon Marlow **20070307085648] [add noDuplicatezh_fast to symbol table Simon Marlow **20070308095717] [add missing %ENTRY_CODE() Simon Marlow **20070308101921 fixes unreg way in HEAD ] [refactor: use do-notation rather than `thenBc`-style Simon Marlow **20070308110619] [small cleanups Simon Marlow **20070308134543] [when invoking gcc, instead of the -B flag, use GCC_EXEC_PREFIX Simon Marlow **20070308154653 should hopefully fix/workaround #1110, but I haven't had a chance to test it yet. ] [Make constructor names in info tables position independent wolfgang.thaller@gmx.net**20070308020503 Info tables, like everything else in the text section, MUST NOT contain pointers. A pointer is, by definition, position dependent and is therefore fundamentally incompatible with generating position independent code. Therefore, we have to store an offset from the info label to the string instead of the pointer, just as we already did for other things referred to by the info table (SRTs, large bitmaps, etc.) ] [Remove duplication in binary dist rules Ian Lynagh **20070309174307 Rather than building complex sh stuff and echoing what we're doing ourselves, use make rules to do the looping and let make print things out. ] [Avoid duplication in the binary-dist rules for docs Ian Lynagh **20070309174825 Rather than building complex sh stuff and echoing what we're doing ourselves, use make rules to do the looping and let make print things out. ] [support a few long args in PAPs Brian Alliet **20070311122035] [conflict resolution for new formatting in primops.txt Brian Alliet **20070311125710] [conflict resolution for modified bytecode primops in primops.txt Brian Alliet **20070311125741] [conflict resolution for removal of vectored returns Brian Alliet **20070311125754] [conflict resolution for OpenSynTyCon changes Brian Alliet **20070311125805] [Have configure take arguments telling it where gmp is; fixes trac #957 Ian Lynagh **20070311175025] [switch to Outputable for gcode debug output Brian Alliet **20070312051645] [add noDuplicate# primitive to java rts Brian Alliet **20070312051703] [parameterize GCode over the local var index type Brian Alliet **20070312055228] [everything is in place for the gcode register allocator Brian Alliet **20070312071115] [fix horrible bug in treeifymoves (it really needs a rewrite) Brian Alliet **20070312132203] [initial attempt at gcode local var allocation (does not reuse dead slots yet) Brian Alliet **20070312132341] [start to kill off setLocClass stuff Brian Alliet **20070312132617] [fix push/pop not o use ppr Brian Alliet **20070312132842] [turn off GCODE_UNIQUE' for now Brian Alliet **20070312133306] [new GCode local var allocator Brian Alliet **20070314041445] [Be a bit more verbose about what's happening when recursively making in subdirs Ian Lynagh **20070312105053] [Fix a bug in the liveness analysis Simon Marlow **20070123104025 We were being overly conservative, registers that were live only at a branch target were not recorded as being dead in the branch-not-taken code. ] [fix #1200: don't evaluate the result of main Simon Marlow **20070313144614] [Add helpful cross-references simonpj@microsoft.com**20070313162254] [Update the wired-in name for Data.String.IsString Brian Alliet **20070314052807] [fig bugs uncovered by nofib in new local allocator Brian Alliet **20070314064835] [cache the values of ghc_ge_XXX at configure-time Simon Marlow **20070313160008 This avoids recomputing them via $(shell) each time make expands one of these variables, which is very expensive (0.3s or so) on Windows. ] [Fix the way configure sets the ghc_ge_* variables Ian Lynagh **20070313220545] [turn off GCODE_UNIQUE' for now Brian Alliet *-20070312133306] [remove ghc's dependency on Text.Regex Brian Alliet **20070314104154] [new closure nuking code is in (the old stuff is too it is a mess) Brian Alliet **20070314130731] [lots of gcode reshuffling Brian Alliet **20070314130838] [lots of gcode reshuffling (contd) Brian Alliet **20070314130937] [darcs-all fixups Brian Alliet **20070314131000] [deriving eq for G.Type Brian Alliet **20070316004359] [remove regex-* from core-packages Brian Alliet **20070316004502] [cleanup Brian Alliet **20070316020139] [more cleanup Brian Alliet **20070316064253] [export CoreSyn.AltCon from StgSyn Brian Alliet **20070317073628] [yet more cleanup Brian Alliet **20070317073653] [shorten names generated by mkLocalOcc to just the uniq Brian Alliet **20070317074020] [update javagen for StgConApp changes Brian Alliet **20070317124241] [lots of hacky StgToGCode stuff that'll be removed lated (note to self: don't push until it is) Brian Alliet **20070318023223] [print unfolding info in ppr core (UNPULL ME!) Brian Alliet **20070318023415] [pass evald-ness though TidyCore (as unfolding info) Brian Alliet **20070318033729] [add remaining primitive types to javaType_maybe Brian Alliet **20070318040121] [fixup java rts for recent code gen changes Brian Alliet **20070318110516] [dont generate prim op wrapper for any Addr# primop Brian Alliet **20070318110559] [more close_enough cruft Brian Alliet **20070318110618] [assume all nulls are strings for now Brian Alliet **20070318110643] [support a few new primitive types in javaType_maybe Brian Alliet **20070318110732] [hacky debugging fun in Prim.java Brian Alliet **20070318223829] [remove StgConApp (note CorePrep doesn't deal with this correctly yet, another patching is coming) Brian Alliet **20070319041903] [some more assertions in CoreToStg Brian Alliet **20070320083212] [yet more close_enough Brian Alliet **20070320083432] [stg2gcode minor fixes Brian Alliet **20070320083545] [coreprep con binding and tylambda lifting Brian Alliet **20070320083817] [fix subIntC# (thank you test suite) Brian Alliet **20070320111800] [allow "IO a" as the type of main Brian Alliet **20070320235908] [implement a few more 64bit ops Brian Alliet **20070320235929] [improve error message for (currently unsupported) float literal case Brian Alliet **20070320235951] [wean ourselves off LFInfo Brian Alliet **20070321005611] [separate tailcallify pass (still need to remove all the gi_eval stuff though) Brian Alliet **20070321102453] [add localiseId Brian Alliet **20070321125432] [free ourselves of more GenInfo cruft Brian Alliet **20070321125455] [remove more stg2gcode cruft Brian Alliet **20070321131418] [new codegen monad Brian Alliet **20070321232938] [remove more cruft Brian Alliet **20070321233927] [cleanup transmodule Brian Alliet **20070322012025] [cleanup transtycon/datacon Brian Alliet **20070322014224] [wibble (yeah, i'm in the ghc cool kids club now) Brian Alliet **20070322042217] [switch to newTransBinding Brian Alliet **20070322043841] [add isReEntrant to StgSyn Brian Alliet **20070322070458] [new transrhs Brian Alliet **20070322070515] [base36 uniques Brian Alliet **20070322081714] [string -> faststring for literals Brian Alliet **20070322081728] [null out ptr fields Brian Alliet **20070322081753] [more unique cleanup Brian Alliet **20070322081801] [string -> faststring for literals (more) Brian Alliet **20070322081813] [cleanup transApp Brian Alliet **20070322100152] [add a safety accessor to Foreign Brian Alliet **20070323125454] [add a "blessed" temp var to gcode Brian Alliet **20070323125531] [cleanup transCase/transAlts Brian Alliet **20070323125552] [CoreToStg ensures top level binds are GlobalIds Brian Alliet **20070324114837] [build tycons AFTER the workers Brian Alliet **20070324114939] [ASSERT for top level GlobalIds Brian Alliet **20070324115001] [undo various StgFCall/StgPrimOp damage Brian Alliet **20070324124516] [give Globals a type Brian Alliet **20070324132052] [make coreprep emit data con workers before other binds Brian Alliet **20070324132438] [kill off some fixmes that are documented in the wiki Brian Alliet **20070324133150] [remove gcodeutils fixmes that were already fixed Brian Alliet **20070324133455] [switch GCodeToJava to a new monad Brian Alliet **20070325031508] [start to cleanup GCodeToJava Brian Alliet **20070325104354] [cleanup buildClosure Brian Alliet **20070325113806] [cleanup push/pop Brian Alliet **20070325124026] [start to cleanup buildStmnt Brian Alliet **20070325133622] [cleanup/optimize buildSwitch Brian Alliet **20070325144025] [more GCodeToJava cleanup, update for hsjava API changes, enter/leaveHaskell Brian Alliet **20070326074635] [cleaned up buildPrimOp Brian Alliet **20070326153654] [MutVar ctor Brian Alliet **20070326153732] [fix word cmp ops Brian Alliet **20070327011705] [newMutVar isnt out of line anymore Brian Alliet **20070327011733] [put sourcefile on every class Brian Alliet **20070327011747] [optimization to fallsThrough Brian Alliet **20070327030524] [fix loads from Word8 arrays Brian Alliet **20070327030537] [redefinition/undefined check in localAlloc Brian Alliet **20070327033226] [kill off old primop code Brian Alliet **20070327050535] [no primitive simultaneous moves Brian Alliet **20070327050553] [plug in CgUtils.emitSimultaneously Brian Alliet **20070327050736] [kill off buggy treeify moves Brian Alliet **20070327050810] [hsjava api changes Brian Alliet **20070327053136] [assertify some checks Brian Alliet **20070327055943] [add Void# and void# (just like State# RealWorld, except with a clearer purpose) Brian Alliet **20070327075927] [add Void# to javagen Brian Alliet **20070327080120] [use Void# for () desugaring Brian Alliet **20070327082835] [remove ugly (and not unnecessary) void return special case Brian Alliet **20070327083046] [add unLiftedBetaTyVar ("v") to TysPrim and genprimopcode Brian Alliet **20070327090631] [add some java primops to primops.txt Brian Alliet **20070327090656] [implement checkCast#, eqObject#, and neObject# Brian Alliet **20070327090717] [silence a warning Brian Alliet **20070327091354] [dynamically add foralls to primop types Brian Alliet **20070327100238] [update primop code for the new order of primop tyvars Brian Alliet **20070327101150] [improve error checking and error messages for unlifted tyvars Brian Alliet **20070327145043] [do not generate wrappers for object ops Brian Alliet **20070327145113] [primt primop tyvars in gcode Brian Alliet **20070327145131] [pick up the right tyvar for NewUArrayOp Brian Alliet **20070327221517] [remove primOpResultInfo Brian Alliet **20070327233124] [add unsafeCast# primitive Brian Alliet **20070328122924] [kill off old cast-like ops Brian Alliet **20070328123022] [DynFlags-ify tARGET_{MIN,MAX}_{INT,WORD} Brian Alliet **20070330000708] [fix major typo in maxInt in dynflags Brian Alliet **20070330062811] [check that unboxed int literals are in range Brian Alliet **20070330062824] [parametrize prelrules over the target machine Brian Alliet **20070330062928] [add unsafeCast# rule Brian Alliet **20070330175234] [unsafeCast rule looks though coercions (so multiple unsafeCasts cascade) Brian Alliet **20070330180331] [avoid some more target undefined behavior in PrelRules Brian Alliet **20070331110647] [cleanup some FFI checks Brian Alliet **20070331131438] [minor clean up the main fun generation Brian Alliet **20070331152458] [ugly hack to mark dcons used in foreign imports as used Brian Alliet **20070331173455] [eliminate dangerous mkWeak# unsafeCoerce#ery Brian Alliet **20070331180508] [fix typo in atLength comments Brian Alliet **20070331181116] [Improve typechecker error messages; see Trac #1221 simonpj@microsoft.com**20070314121410] [Use -Wall for compilation of genprimopcode sven.panne@aedion.de**20070314122233] [Warning police: Added type signatures sven.panne@aedion.de**20070314122316] [Warning police: Removed "Defined but not used" warnings sven.panne@aedion.de**20070314123021] [Warning police: Don't rely on defaulting sven.panne@aedion.de**20070314123608] [Fixed LaTeX markup sven.panne@aedion.de**20070314132521] [Added LaTeX commands for primitive types and pseudo ops sven.panne@aedion.de**20070314132703] [Warning police: Replace patter matching failures by something more informative sven.panne@aedion.de**20070314134044] [Handle primitive types and pseudo ops when generating LaTeX sven.panne@aedion.de**20070314134328] [Warning police: Avoid name shadowing sven.panne@aedion.de**20070314140434] [Unbreak Haddock markup sven.panne@aedion.de**20070314151517] [Tweak hasktags to cope with abc::def correctly Ian Lynagh **20070314160102 Patch from Marc Weber in http://www.haskell.org/pipermail/glasgow-haskell-users/2007-February/011998.html ] [Improve error messages slightly, saying "a1...an" instead of "a b c" simonpj@microsoft.com**20070314162906] [Wibble to type-error-message improvement simonpj@microsoft.com**20070314164850] [Added support for parallel builds sven.panne@aedion.de**20070315122457 With this patch, one can define the degree of build parallelism via a 'jobs' rpm variable. A comfortable way to use this is having a ~/.rpmmacros file with a line like: %jobs 2 Alternatively, one could use a '--define "jobs 2"' command line flag for rpmbuild. On a Core 2 Duo using 2 jobs brings down the time for a full build including extralibs from 36m to 27m. If 'jobs' is not defined, a normal sequential build is done, following the usual conventions on e.g. openSUSE. ] [Make the type-defaulting in GHCi use () as the first default type simonpj@microsoft.com**20070315142812 See Trac #1200 This is a somewhat experimental fix. I'm not sure we want it in 6.6.1 The idea is explained in Note [Default unitTy] in TcSimplify. In interative mode (or with -fextended-default-rules) we add () as the first type we try when defaulting. This has very little real impact, except in the following case. Consider: Text.Printf.printf "hello" This has type (forall a. IO a); it prints "hello", and returns 'undefined'. We don't want the GHCi repl loop to try to print that 'undefined'. The neatest thing is to default the 'a' to (), rather than to Integer (which is what would otherwise happen; and then GHCi doesn't attempt to print the (). So in interactive mode, we add () to the list of defaulting types. ] [Use update-alternatives for handling generic tool names sven.panne@aedion.de**20070315152823 ATTENTION: Packagers should read the following stuff carefully! GHC, Hugs and nhc come with various tools like runhaskell or hsc2hs. On the one hand this is quite handy, avoiding lots of tiny native packages, but OTOH this leads to a few problems: * The tools are not always identical in functionality. * The tools fight for a global generic name like "/usr/bin/runhaskell". These problems are not new and not unique to Haskell implementations, so for *nix-based system there is a tool called update-alternatives which handles those cases. The idea is as follows: * Each program/man page/etc. installs itself with a very specific name like /usr/bin/hsc2hs-ghc or /usr/share/man/man1/lua5.1.1.gz, so nothing clashes. * The (un-)installation scripts call update-alternatives to notify the system about new alternatives for a generic tool/manpage/etc. * Alternatives can be grouped together ("link groups"), so e.g. switching from Sun's Java to Kaffe switches compiler, JRE, manpages etc. together. Alas, this doesn't work well with the Haskell implementations yet, because they come with different sets of tools (in addition to runFOO): GHC: hsc2hs Hugs: hsc2hs, cpphs nhc: cpphs Either these tools should be disentangled fromt the Haskell implementations or all implementations should offer the same set. Opinions and recommendations on this topic are highly welcome. * This mechanism can be used to easily switch between several versions of the same implementation, too, but we are not yet fully prepared for that. As a first step, GHC now installs hsc2hs as 'hsc2hs-ghc' and does *not* install runhaskell directly anymore, only runghc. hsc2hs and runhaskell are created via update-alternatives now. What is currently missing is a mechanism for platforms like Windows and probably Mac OS X. ] [Comment out debug traces simonpj@microsoft.com**20070316133822] [Refactor TcRnDriver, and check exports on hi-boot files simonpj@microsoft.com**20070316133850 This patch refactors TcRnDriver to make the top-level structure easier to understand. The change was driven by Trac #924, and this patch fixes that bug. When comparing a module against its hs-boot file, we must ensure that the module exports everything that the hs-boot file exports. ] [Improve error messages for 'deriving' clauses simonpj@microsoft.com**20070316142824 This patch improves the misleading error message reported in Trac #1133. Please merge the patch to the 6.6.1 branch. ] [Desugar applications of 'seq' specially; fix Trac #1031 simonpj@microsoft.com**20070316151712 Merge to 6.6 branch. Test case is dsrun014. Note [Desugaring seq] cf Trac #1031 ~~~~~~~~~~~~~~~~~~~~~ f x y = x `seq` (y `seq` (# x,y #)) The [CoreSyn let/app invariant] means that, other things being equal, because the argument to the outer 'seq' has an unlifted type, we'll use call-by-value thus: f x y = case (y `seq` (# x,y #)) of v -> x `seq` v But that is bad for two reasons: (a) we now evaluate y before x, and (b) we can't bind v to an unboxed pair Seq is very, very special! So we recognise it right here, and desugar to case x of _ -> case y of _ -> (# x,y #) The special case would be valid for all calls to 'seq', but it's only *necessary* for ones whose second argument has an unlifted type. So we only catch the latter case here, to avoid unnecessary tests. ] [Fix typo "lazy y x" -> "lazy y" Ian Lynagh **20070317004003] [Use explict layout (fixes breakage when compiling TcSimplify) simonpj@microsoft.com**20070319151926] [Further wibbles to checkBootIface (fixed HEAD build) simonpj@microsoft.com**20070320154126] [Remove redundant exports from a hs-boot file simonpj@microsoft.com**20070321093525] [Improve pretty-printing for IfaceConDecl simonpj@microsoft.com**20070321093611] [Yet another wibble to checkHiBootIface; it's trickier than it looks! simonpj@microsoft.com**20070321093733] [Wibble to GHCi part of TcRnDriver simonpj@microsoft.com**20070321111639] [Remove bogus export from TcSplice.lhs-boot simonpj@microsoft.com**20070321112057] [ia64 tailcall fix red5_2@hotmail.com**20070317025529 Tail-calls now branch to the end of the function after the call. This stops gcc from trying to move instructions into the space immediately after the call, which confuses the mangler. ] [mangler and runtime updates for gcc 4 on ia64 red5_2@hotmail.com**20070318033132 Gcc 4 is doing more clever optimizations than earlier gccs. These changes let ghc compile and run on ia64 with gcc 4.0.3. Register stack frames are enlarged so that all functions use the same size stack frame. The code to mangle tail calls has been cleaned up and made more general. Additional floating-point and special-purpose registers used by GCC are saved upon entering the STG runtime. More general handling of NOP instructions. Handling of functions with multiple epilogues or no epilogue. ] [Fix checkHiBootIface for instances declared in hs-boot files simonpj@microsoft.com**20070321140424 Hs-boot files can contain instance declarations, but Duncan used this feature for the first time today, and it didn't quite work. I'm not sure whether it worked before; anyway it does now. The point is that the hs-boot file advertises an instance for, say, Num Int, with the arbitrary name $fx1. The main module declares Num Int, and gives it the name, say, $f3. So we need to generate a declaration $fx1 = $f3 to make it all line up. And (this is the bit that was wrong) we need to make that new binding visible to imported unfoldings that mention $fx1. ] [Improve documentation of instances simonpj@microsoft.com**20070322110718] [Add -ddump-mod-cycles to -M behaviour simonpj@microsoft.com**20070322122859 This patch adds a flag -ddump-mod-cycles to the "ghc -M" dependency analyser. The effect of ghc -M -ddump-mod-cycles is to dump a list of cycles foud in the module graph. The display is trimmed so that only dependencies within the cycle are shown; and the list of modules in a cycle is itself sorted into dependency order, so that it is easy to track the chain of dependencies. Open question: should the flag be "-ddump-mod-cycles" or "-optdep-dump-mod-cycles"? For this reason I have not yet added to the documentation. ] [Warning police: Removed catch-all case which was overlapped sven.panne@aedion.de**20070322161040] [Make a Functor (IOEnv m) instance so it satisfies the new Quasi requirements Ian Lynagh **20070322170114] [Add an --install-signal-handlers= RTS flag; fixes trac #804 Ian Lynagh **20070322182900] [Documentation for --install-signal-handlers= Ian Lynagh **20070322184607] [Tidy up refactoring only simonpj@microsoft.com**20070323111821] [Wibble fixing overlapped pattern simonpj@microsoft.com**20070323111850] [Emit a decent error message when there is a decl-splice inside a decl-bracket simonpj@microsoft.com**20070323111912 This fixes Trac #1065. The fix is just to emit a decent error message rather than crash. The situation is this: f x = ... [d| $(..stuff..); f x = v :: T |] ... TH wants to rename and typecheck the bracket; but it can't run the nested splice yet. That seems hard, because we know nothing about v, T, which are, presumably bound by the splice. The original TH paper says this isn't allowed, and now it's checked for properly (in the parser, in fact) rather than causing a crash. In the fullness of time we might want to do something more flexible, but not now. ] [add missing progress message Simon Marlow **20070326155233] [move "boot :: all" after the include of target.mk to fix #1095 Simon Marlow **20070326155949] [Remove dead code from rnExpr (Var v); seems to be a leftover from some breakpoint stuff simonpj@microsoft.com**20070323122354] [Add comments about the -include-prelude flag for ghc -M simonpj@microsoft.com**20070327113612] [remove docs for unimplemented options Simon Marlow **20070326142728 -optdep--include-module and --optdep--exclude-directory were features of the old mkdependHS script but weren't implemented when mkdependHS was merged into GHC. ] [partial fix for #1119 Simon Marlow **20070327152215 Unless we're in one-shot mode, emit an error if we attempt to demand-load interfaces for home modules. This can only happen in one way (that I'm aware of): typing a qualified name at the GHCi prompt that refers to a module that isn't loaded. Previously you got a cryptic message about not finding an interface file, now you get: Prelude> Foo.a :1:0: attempting to use module `Foo' (Foo.hs) which is not loaded Of course you can still refer to package modules like this without loading them explicitly, only home modules are affected, and the behaviour is exactly the same as if you try to ':browse Foo' and Foo isn't loaded. ] [more improvements for #1119 Simon Marlow **20070327153723 When GHCi compiles its code framgents for setting buffering, it wants to refer to base:System.IO rather than whatever System.IO is on the search path, unfortunately there's no way to do this in source code, so to hack around it we set the search path to empty before compiling these expressions (not forgetting to flush the finder cache afterward). ] [make GHCi use base:Prelude, not just Prelude Simon Marlow **20070327154554 The module that GHCi uses for its default scope should be exactly base:Prelude, not whatever Prelude is found on the search path. ] [Use a sensible set of compiler options for building dynamic libraries on Mac OS X wolfgang.thaller@gmx.net**20070327201700 The official options to use for building a dylib on Mac OS X are now -undefined dynamic_lookup -single_module -Wl,-macosx_version_min -Wl,10.3 ... which should work on all arches (10.3 or later). MERGE TO STABLE ] [Make GHC main program depend on the libHSghc_dyn when GhcBuildDylibs==YES wolfgang.thaller@gmx.net**20070327210122 When building a dynamic GHC, we obviously want to build the dynamic library libHSghc_dyn.[so|dylib] before building the compiler executable. MERGE TO STABLE ] [remove old library doc link (#1098), and point to HackageDB Simon Marlow **20070328102938] [Typo in comment. Lemmih **20070328220109] [Refactoring in HscMain.lhs Lemmih **20070328224742 I realized that compiling many files is just like compiling a single file several times. This does sound a bit stupid and I wonder why I didn't catch it before. ] [Document that ghci now adds () to the start of the type defaulting list Ian Lynagh **20070329141631] [Fix the type of wgencat Ian Lynagh **20070329164238] [Add filepath library Ian Lynagh **20070328235154] [Match the type of an Id during rule matching simonpj@microsoft.com**20070330140033 Please MERGE to 6.6.1 Consider this RULE forall (c::Char->Int) (x::Char). f (c x) = "RULE FIRED" Well, this should only match on arguments of the specified type But we simply weren't checking this condition before. Now we are. Test is simplrun008 ] [The ru_local field of a CoreRule is False for implicit Ids simonpj@microsoft.com**20070330144344 MERGE to 6.6.1 For class-ops, record selectors, data constructors, we want the ru_local field of the Rule to be False. We do not attach the rule to the binding for the Id, because there simply isn't a binding until the code gen stage. (NB: the ru_local field is different to the orphan-hood of the rule.) This fixes a bug that meant that RULES on class ops were never exported. ] [conflict resolution in genprimopcode Brian Alliet **20070331202917] [conflict resolution in libraries/Makefile Brian Alliet **20070331203036] [conflict resolution in DynFlags Brian Alliet **20070331203058] [undo horrible thinsg to genprimopcode Brian Alliet **20070331204254] [use unsafeCast instead of unsafeCoerce in deriving, deriving Eq for foriegn types Brian Alliet **20070331214156] [dflagsify primops Brian Alliet **20070331214226] [add --enabled to genprimopcode Brian Alliet **20070331224132] [implement instanceOf# Brian Alliet **20070331224234] [add nullRef# Brian Alliet **20070401153722] [we don't need rts/Main anymore Brian Alliet **20070402095329] [cleanup rts Brian Alliet **20070402111437] [print unfolding info in ppr core (UNPULL ME!) Brian Alliet *-20070318023415] [ppr GModule Brian Alliet **20070403220420] [fix ppr in coretostg assert Brian Alliet **20070404010815] [fix ppr genmodule Brian Alliet **20070404010835] [corelint check for weird lit alts Brian Alliet **20070404010906] [prevent prim float alts from forming Brian Alliet **20070404142237] [#import => #include (why import worked i'm not sure Brian Alliet **20070412180512] [we don't want int2Integer# on java Brian Alliet **20070412182247] [primop.txt cleanup Brian Alliet **20070412182825] [Fix the GHC.Base.inline builtin rule Brian Alliet **20070420120721 This rule wasn't working for two reasons a) inlineIdName wasn't in basicKnownKeyNames b) The rule function wasn't taking into account the type argument ] [foreign export wrappers are now GlobalIds Brian Alliet **20070412234846] [bool primitive stuff Brian Alliet **20070412235040] [switch to OrdList Brian Alliet **20070413023012] [add unsnocOL and mapOL to OrdList Brian Alliet **20070413023350] [utf16 primitive string literals Brian Alliet **20070414195522] [faster unsigned mul Brian Alliet **20070414195602] [fix warnings Brian Alliet **20070414215208] [implement isTrue# for cmm backend Brian Alliet **20070417225024] [more correct handling of illegal recursive unlifted bindings Brian Alliet **20070418020001] [split # into ## and ! (boxed and unboxed) Brian Alliet **20070418045300] [remove lots of unnecessary kind iface optimization Brian Alliet **20070418050008] [remove unlifted/open kinds from ext core for now Brian Alliet **20070418050134] [rejig alphaTyVars Brian Alliet **20070418050326] [more genprimopcode hacks Brian Alliet **20070418050400] [MachNullAddr -> MachNullPtr Brian Alliet **20070418081811] [generalize a bunch of ptr primops Brian Alliet **20070418082124] [NonPtrTypeKind -> UnboxedTypeKind Brian Alliet **20070418082314] [support ptr tyvars in javagen Brian Alliet **20070418082347] [minor cleanup to unlifted deriving Brian Alliet **20070418082415] [cleanup java foreign import type checking Brian Alliet **20070418082459] [fix bug in ffi type checking Brian Alliet **20070418082527] [call the wrapper for resultWrapped arrays Brian Alliet **20070418082613] [wibble Brian Alliet **20070418082622] [strings are now PtrRep'ed Brian Alliet **20070418082646] [overhaul integer literals Brian Alliet **20070418212604] [unsafeCast# -> cast# Brian Alliet **20070418213046] [more unsafeCast# -> cast# Brian Alliet **20070418213139] [fased isUnLiftedType Brian Alliet **20070418213210] [ditch stableptr Brian Alliet **20070418213221] [more ditch stableptr Brian Alliet **20070418213421] [make CoreToStg handle literal tyapps Brian Alliet **20070418213441] [swich compare prims to bool# Brian Alliet **20070419100608] [fix isUnLiftedType again Brian Alliet **20070419100726] [allow switching on bool Brian Alliet **20070419100804] [ditch tag2enum# Brian Alliet **20070419114445] [remove leftover tagToEnum cruft Brian Alliet **20070419120258] [ditch typePrimRep Brian Alliet **20070420060955] [ditch repType Brian Alliet **20070420061227] [maybeFunType Brian Alliet **20070420061448] [do isUnLiftedType right Brian Alliet **20070420061519] [isPrimTyCon/isPrimitiveType/isUnLiftedType cleanup Brian Alliet **20070420061618] [fix isFFITy Brian Alliet **20070420061648] [tmpUnique isnt needed anymoe Brian Alliet **20070420061902] [hsSigType now takes a Kind Brian Alliet **20070420061949] [kind checking in splitBoxyTyCon Brian Alliet **20070420062200] [better kind checking in TcBinds Brian Alliet **20070420062237] [ditch lots of ad-hoc kind/unboxed tuple checking Brian Alliet **20070420062344] [fix transType Brian Alliet **20070420064421] [get uarray tyargs in the right order Brian Alliet **20070420064437] [fix corelint default check Brian Alliet **20070420064523] [isForeignTyCon_maybe Brian Alliet **20070420125220] [string literals as UArrays Brian Alliet **20070420125423] [fix typePrimRep Brian Alliet **20070420125540] [fix eq_string rule Brian Alliet **20070420125557] [check for unsupported statics in pprStatics Brian Alliet **20070420125719] [fix case of bool literals in cmm backend Brian Alliet **20070420125808] [tell the gc about static ARR_WORDS Brian Alliet **20070420125837] [module M hiding (internalStuff) feature Brian Alliet **20070420165908] [simplify string literals Brian Alliet **20070420170006] [disable more non-java primops Brian Alliet **20070420172533] [add a safety net to avoid generating bogus code Simon Marlow **20070404155001] [check for unsupported statics in pprStatics Brian Alliet *-20070420125719] [fix fallsThrough Brian Alliet **20070420202419] [fix emitSimultaneously bug Brian Alliet **20070420211445] [add missed Parser.y.pp patch Brian Alliet **20070505000142] [implement the missing stg_ap_1_upd Brian Alliet **20070518023202] [fix build for hsjava changes Brian Alliet **20071021010520] [6.8.3 fixes Brian Alliet **20081028083407]