Fri Dec 4 23:40:12 EET 2009 Sergei Trofimovich <[email protected]> * configure.ac: fix libm checks (Trac #3730) libbfd pulled libm as dependency and broke LIBM= detection. Patch moves libm in library tests as early as possible. Thanks to asuffield for suggesting such a simple fix. Thanks to Roie Kerstein and Renato Gallo for finding and tracking down the issue.
New patches:
[configure.ac: fix libm checks (Trac #3730) Sergei Trofimovich <[email protected]>**20091204214012 Ignore-this: f3372535a68f3833247f679b023745c8 libbfd pulled libm as dependency and broke LIBM= detection. Patch moves libm in library tests as early as possible. Thanks to asuffield for suggesting such a simple fix. Thanks to Roie Kerstein and Renato Gallo for finding and tracking down the issue. ] { hunk ./configure.ac 716 AC_DEFINE([HAVE_MINGWEX], [1], [Define to 1 if you have the mingwex library.]) fi -dnl ** check whether this machine has BFD and liberty installed (used for debugging) -dnl the order of these tests matters: bfd needs liberty -AC_CHECK_LIB(iberty, xmalloc) -AC_CHECK_LIB(bfd, bfd_init) - dnl ** check for math library hunk ./configure.ac 717 +dnl Keep that check as early as possible. +dnl as we need to know whether we need libm +dnl for math functions or not +dnl (see http://hackage.haskell.org/trac/ghc/ticket/3730) AC_CHECK_FUNC(atan,[fp_libm_not_needed=yes;LIBM=],[fp_libm_not_needed=dunno]) if test x"$fp_libm_not_needed" = xdunno; then AC_CHECK_LIB([m], [atan], [LIBS="-lm $LIBS"; LIBM="-lm"],[LIBM=]) hunk ./configure.ac 727 fi AC_SUBST([LIBM]) +dnl ** check whether this machine has BFD and liberty installed (used for debugging) +dnl the order of these tests matters: bfd needs liberty +AC_CHECK_LIB(iberty, xmalloc) +AC_CHECK_LIB(bfd, bfd_init) + dnl ################################################################ dnl Check for libraries dnl ################################################################ } Context: [Link all dynamic libraries with the correct install_name on Mac OS/X. Ian Lynagh <[email protected]>**20091204143614 This is a rerecord of Stephen Blackheath <[email protected]>**20090930222855 to avoid conflicts. ] [Document the new -dylib-install-name option in the user's guide. Stephen Blackheath <[email protected]>**20091001051637 Ignore-this: 568f6ad423f737ccda3a79f2d8efdb97 ] [Add -dylib-install-name option to GHC so the install name can be set for dynamic libs on Mac OS/X. Stephen Blackheath <[email protected]>**20090930223708 Ignore-this: 2323929595c0dc03a2e2ea802477a930 ] [Force -fPIC when linking against dynamic libraries on Mac OS/X. Stephen Blackheath <[email protected]>**20090928203800 Ignore-this: 465433af2349779b510f500dc79768f3 Otherwise you get /tmp/ghc7602_0/ghc7602_0.s:207:0: non-relocatable subtraction expression, "___stginit_Lib_dyn" minus "L1x2;4" /tmp/ghc7602_0/ghc7602_0.s:207:0: symbol: "___stginit_Lib_dyn" can't be undefined in a subtraction expression ] [evaluate_large: evaluate large objects to bd->dest rather than gen->to Simon Marlow <[email protected]>**20091204111037 Ignore-this: 6c77407750d4a6178851aeb79ded20d1 This fixes aging of large objects in the new scheme. Bug found by perf/space_leaks/space_leak_001. Yay perf regressions tests. ] [Correction to the allocation stats following earlier refactoring Simon Marlow <[email protected]>**20091204110839 Ignore-this: 7ac497c67706bedd29c79091c100d22f ] [export g0 Simon Marlow <[email protected]>**20091203165209 Ignore-this: 69b5445beb91ac99bb018b9806de90a ] [GC refactoring, remove "steps" Simon Marlow <[email protected]>**20091203150728 Ignore-this: 5360b8bf30c6847ccb7ffa8c431e81ff The GC had a two-level structure, G generations each of T steps. Steps are for aging within a generation, mostly to avoid premature promotion. Measurements show that more than 2 steps is almost never worthwhile, and 1 step is usually worse than 2. In theory fractional steps are possible, so the ideal number of steps is somewhere between 1 and 3. GHC's default has always been 2. We can implement 2 steps quite straightforwardly by having each block point to the generation to which objects in that block should be promoted, so blocks in the nursery point to generation 0, and blocks in gen 0 point to gen 1, and so on. This commit removes the explicit step structures, merging generations with steps, thus simplifying a lot of code. Performance is unaffected. The tunable number of steps is now gone, although it may be replaced in the future by a way to tune the aging in generation 0. ] [fix error message on Windows (fixes rtsflags001) Simon Marlow <[email protected]>**20091202141135 Ignore-this: 239fed52f7f5358b034acd6512d26ef4 ] [Fix loading of annotations Roman Leshchinskiy <[email protected]>**20091204024259 Ignore-this: 5750856feecbf9c6aeebfec012b1a1fd The problem was that we collected all annotations we knew about once when the simplifier started and threaded them through the CoreM monad. If new interface files were loaded during simplification, their annotations would not be visible to the simplifier. Now, we rebuild the annotation list at the start of every simplifier pass that needs it (which is only SpecConstr at the moment). This ensures that we see all annotations that have been loaded so far. This is somewhat similar to how RULES are handled. ] [Add new ForceSpecConstr annotation Roman Leshchinskiy <[email protected]>**20091203065455 Ignore-this: ca5327f85d9d40c78d95e8bfe3e7fab1 Annotating a type with {-# ANN type T ForceSpecConstr #-} makes SpecConstr ignore -fspec-constr-threshold and -fspec-constr-count for recursive functions that have arguments of type T. Such functions will be specialised regardless of their size and there is no upper bound on the number of specialisations that can be generated. This also works if T is embedded in other types such as Maybe T (but not T -> T). T should not be a product type because it could be eliminated by the worker/wrapper transformation. For instance, in data T = T Int Int foo :: T -> Int foo (T m n) = ... foo (T m' n') ... SpecConstr will never see the T because w/w will get rid of it. I'm still thinking about whether fixing this is worthwhile. ] [Generate INLINE pragmas for PA methods Roman Leshchinskiy <[email protected]>**20091203031452 Ignore-this: 3435044aec2737ba58d269aeff915fbd ] [Add a GHC layout extension to the alternative layout rule Ian Lynagh <[email protected]>**20091203155708] [Fix HPC column numbers, following the column number changes in GHC Ian Lynagh <[email protected]>**20091203135520] [Whitespace only Ian Lynagh <[email protected]>**20091203132259] [Fix column numbers used when highlighting :list output Ian Lynagh <[email protected]>**20091203130328] [add a missing lock around allocGroup() Simon Marlow <[email protected]>**20091203110209 Ignore-this: 5898b3de4010e16789b628b004aa77db ] [remove unused cap->in_gc flag Simon Marlow <[email protected]>**20091202154240 Ignore-this: db2ef6c957c8d32233bbcc344e3c06b6 ] [Refactoring only Simon Marlow <[email protected]>**20091202123806 Ignore-this: 95a93f6e330f2c609c197194412cac75 ] [move sanity checking code from Storage.c to Sanity.c Simon Marlow <[email protected]>**20091202121141 Ignore-this: 216d434c3c3d2250effac22b37bc2b4d ] [stg_ap_0_fast: sanity-check only the topmost frame, not the whole stack Simon Marlow <[email protected]>**20091202115109 Ignore-this: ad45e07c26aa961913d367d7c53efb75 Sanity checking was getting too slow in some cases, this returns it to a constant-factor overhead. ] [Fix profiling build Simon Marlow <[email protected]>**20091203085930 Ignore-this: ff3de527cbf7703e8bac4a48933cd8ba ] [More work on the simplifier's inlining strategies [email protected]**20091202174256 Ignore-this: 5840392a95d9a47f37c3074f7394f2c2 This patch collects a small raft of related changes * Arrange that during (a) rule matching and (b) uses of exprIsConApp_maybe we "look through" unfoldings only if they are active in the phase. Doing this for (a) required a bit of extra plumbing in the rule matching code, but I think it's worth it. One wrinkle is that even if inlining is off (in the 'gentle' phase of simplification) during rule matching we want to "look through" things with inlinings. See SimplUtils.activeUnfInRule. This fixes a long-standing bug, where things that were supposed to be (say) NOINLINE, could still be poked into via exprIsConApp_maybe. * In the above cases, also check for (non-rule) loop breakers; we never look through these. This fixes a bug that could make the simplifier diverge (and did for Roman). Test = simplCore/should_compile/dfun-loop * Try harder not to choose a DFun as a loop breaker. This is just a small adjustment in the OccurAnal scoring function * In the scoring function in OccurAnal, look at the InlineRule unfolding (if there is one) not the actual RHS, beause the former is what'll be inlined. * Make the application of any function to dictionary arguments CONLIKE. Thus (f d1 d2) is CONLIKE. Encapsulated in CoreUtils.isExpandableApp Reason: see Note [Expandable overloadings] in CoreUtils * Make case expressions seem slightly smaller in CoreUnfold. This reverses an unexpected consequences of charging for alternatives. Refactorings ~~~~~~~~~~~~ * Signficantly refactor the data type for Unfolding (again). The result is much nicer. * Add type synonym BasicTypes.CompilerPhase = Int and use it Many of the files touched by this patch are simply knock-on consequences of these two refactorings. ] [Fix Trac #3100: reifyType [email protected]**20091130175204 Ignore-this: ad1578c3d2e3da6128cd5052c8b64dc A type without any leading foralls may still have constraints eg: ?x::Int => Int -> Int But reifyType was failing in this case. Merge to 6.12. ] [Fix Trac #3102: pre-matching polytypes [email protected]**20091130174441 Ignore-this: 3e3fa97e0de28b005a1aabe9e5542b32 When *pre-matching* two types forall a. C1 => t1 ~ forall a. C2 => t2 we were matching t1~t2, but totally ignoring C1,C2 That's utterly wrong when pre-matching (?p::Int) => String ~ a because we emerge with a:=String! All this is part of the impredicative story, which is about to go away, but still. Worth merging this to 6.12 ] [threadStackUnderflow: put the new TSO on the mut list if necessary Simon Marlow <[email protected]>**20091202144549 Ignore-this: 839e7ad7893b3d7ea6481030ce7c6fe6 ] [don't sanity check the whole stack when switching interp<->compiled Simon Marlow <[email protected]>**20091202134121 Ignore-this: 999b44d4dd096eceda81dda65f65a2df ] [fix to sanity checking for ThreadRelocated TSOs Simon Marlow <[email protected]>**20091202134041 Ignore-this: 52364f29041e6909b550956087649220 ] [sanity check the top stack frame, not the whole stack Simon Marlow <[email protected]>**20091202134020 Ignore-this: c4c9b58c13299eecf7ec8cb79e34dc1f ] [Make allocatePinned use local storage, and other refactorings Simon Marlow <[email protected]>**20091201160321 Ignore-this: ec1334a9a5ec0de2567aa81d74b715ba This is a batch of refactoring to remove some of the GC's global state, as we move towards CPU-local GC. - allocateLocal() now allocates large objects into the local nursery, rather than taking a global lock and allocating then in gen 0 step 0. - allocatePinned() was still allocating from global storage and taking a lock each time, now it uses local storage. (mallocForeignPtrBytes should be faster with -threaded). - We had a gen 0 step 0, distinct from the nurseries, which are stored in a separate nurseries[] array. This is slightly strange. I removed the g0s0 global that pointed to gen 0 step 0, and removed all uses of it. I think now we don't use gen 0 step 0 at all, except possibly when there is only one generation. Possibly more tidying up is needed here. - I removed the global allocate() function, and renamed allocateLocal() to allocate(). - the alloc_blocks global is gone. MAYBE_GC() and doYouWantToGC() now check the local nursery only. ] [Free full_prog_argv at exit, closing a memory leak Simon Marlow <[email protected]>**20091201122801 Ignore-this: 8fdb41e09bfc318821c427d2f22af737 ] [free cap->saved_mut_lists too Simon Marlow <[email protected]>**20091201113448 Ignore-this: 973e1de140e104c126fe4a213791ba86 fixes some memory leakage at shutdown ] [exitScheduler: move boundTaskExiting call outside #ifdef THREADED_RTS Simon Marlow <[email protected]>**20091201113352 Ignore-this: d913df43b14054f73c0fa06d0205952c Fixes a little leaked memory at shutdown in non-threaded RTS ] [Use dlltool from the in-tree mingw installation Ian Lynagh <[email protected]>**20091201190544 We only use dlltool on Windows, and this way we don't require that the user has it installed. ] [Fix Commentary link in the HACKING file; trac #3706 Ian Lynagh <[email protected]>**20091201150149] [Add an entry fo the ghci command :run to the user guide Ian Lynagh <[email protected]>**20091201173339] [Fix typo in docs Ian Lynagh <[email protected]>**20091201170550] [Delay expansion of some makefile variables until they are available Ian Lynagh <[email protected]>**20091201133609] [Call $(SED) rather than sed Ian Lynagh <[email protected]>**20091201131123] [Look for sed as gsed first Ian Lynagh <[email protected]>**20091201130741 Solaris's sed apparently doesn't understand [:space:] ] [Avoid running empty for loops; fixes trac #3683 Ian Lynagh <[email protected]>**20091201125927 Solaris's sh gives /bin/sh: syntax error at line 1: `;' unexpected when faced with something like for x in ; do ...; done Patch from Christian Maeder. ] [Fix PS file generation Simon Marlow <[email protected]>**20091201154254 Ignore-this: 7b7122208e845b029a8b7215149fd203 (the image doesn't work, but at least db2latex doesn't fall over) ] [Implement a new heap-tuning option: -H Simon Marlow <[email protected]>**20091130151836 Ignore-this: 2089b9dfaf6c095dc0460cef39e9d586 -H alone causes the RTS to use a larger nursery, but without exceeding the amount of memory that the application is already using. It trades off GC time against locality: the default setting is to use a fixed-size 512k nursery, but this is sometimes worse than using a very large nursery despite the worse locality. Not all programs get faster, but some programs that use large heaps do much better with -H. e.g. this helps a lot with #3061 (binary-trees), though not as much as specifying -H<large>. Typically using -H<large> is better than plain -H, because the runtime doesn't know ahead of time how much memory you want to use. Should -H be on by default? I'm not sure, it makes some programs go slower, but others go faster. ] [Store a destination step in the block descriptor Simon Marlow <[email protected]>**20091129164251 Ignore-this: c406550acfe10141fcc38d3949d67490 At the moment, this just saves a memory reference in the GC inner loop (worth a percent or two of GC time). Later, it will hopefully let me experiment with partial steps, and simplifying the generation/step infrastructure. ] [Fix the prof_scc.png image in the profiling section (#3694) Simon Marlow <[email protected]>**20091130132703 Ignore-this: 9774bad70187274e3dd283d66703004 ] [document 'recache' command in the help output (#3684) Simon Marlow <[email protected]>**20091130122040 Ignore-this: 95a51f76e66055af27cdfc7b5ad7deb3 ] [Check whether the main function is actually exported (#414) Simon Marlow <[email protected]>**20091130112327 Ignore-this: 1afaa18d8c0c9e1d029531ac9d4865bb ] [Avoid using non-standard GNU tar option --force-local Simon Marlow <[email protected]>**20091130112605 Ignore-this: ac066722b15eb93e752d4f63391c9e3c ] [Reorder ALL_RTS_LIBS Matthias Kilian <[email protected]>**20091115175405 Ignore-this: 795cfd5215ec73eea729aa2b3097817e ALL_RTS_LIBS is (ab)used for linking ghc when BootingFromHc=Yes, which needs libHSrtsmain.a before libHSrts.a. ] [Update dependencies Ian Lynagh <[email protected]>**20091129165534] [Follow Cabal changes Ian Lynagh <[email protected]>**20091129165141] [Tweak layout to work with alternative layout rule Ian Lynagh <[email protected]>**20091129163044] [Tweak the alternative layout rule: {} contains commas Ian Lynagh <[email protected]>**20091129155454] [Correct the advanceSrcLoc calculation for tabs Ian Lynagh <[email protected]>**20091129153933 It was off-by-one ] [Tweak alternative layout rule Ian Lynagh <[email protected]>**20091129152323] [Make the alternative layout rule cope with file pragmas Ian Lynagh <[email protected]>**20091129145840] [Give more informative error messages Ian Lynagh <[email protected]>**20091129031029 We used to just get ghc: panic! (the 'impossible' happened) (GHC version 6.13.20091128 for x86_64-unknown-linux): too few bytes. Failed reading at byte position 32753 with no indication of what was being parsed. ] [Teach advanceSrcLoc about tab characters Ian Lynagh <[email protected]>**20091128151204] [Whitespace only Ian Lynagh <[email protected]>**20091128150731] [Columns now start at 1, as lines already did Ian Lynagh <[email protected]>**20091127224050 Also corrected a couple of line 0's to line 1 ] [Remove configure tests on tarballs that no longer exist Ian Lynagh <[email protected]>**20091127150101] [Implement non-decreasing do indentation in the alternative layout rule Ian Lynagh <[email protected]>**20091127011932] [add docs for Unicode entities in #2978 Simon Marlow <[email protected]>**20091125153649 Ignore-this: f3d1561ef8f55606d9022ab7243e3800 ] [Apply patch from #2978: add more Unicode syntax Simon Marlow <[email protected]>**20090918130333 Ignore-this: 1393009fdf2383ca43046ba0767a51e0 ] [Use UTF-8 explicitly for InstalledPackageInfo Simon Marlow <[email protected]>**20091125141730 Ignore-this: 45be1506dd5c3339fb229a44aa958235 So ghc-pkg register/update takes input in UTF-8, and ghc-pkg dump outputs in UTF-8. Textual package config files in the package DB are assumed to be in UTF-8. ] [Comments only, esp about RecStmts [email protected]**20091126163241 Ignore-this: 6fb05bd70b1d0cbb55fb01cf1f17ea77 ] [Fix a bug in alternative layout rule Ian Lynagh <[email protected]>**20091125231901] [Fix a bug in alternative layout Ian Lynagh <[email protected]>**20091125230616 And make the code simpler in the process! ] [Bug fix for alternative layout rule Ian Lynagh <[email protected]>**20091125205809] [Tweak alternative layout rule Ian Lynagh <[email protected]>**20091125193854] [Add unboxed parentheses to the alternative layout rule Ian Lynagh <[email protected]>**20091125182421] [Tweak the warning suppression flags used in Lexer Ian Lynagh <[email protected]>**20091125171815] [Implement the alternative layout rule Ian Lynagh <[email protected]>**20091125171656 Caution: Largely untested ] [Fix some warning in Lexer Ian Lynagh <[email protected]>**20091124233726] [threadStackOverflow: check whether stack squeezing released some stack (#3677) Simon Marlow <[email protected]>**20091125125917 Ignore-this: d35089eb93f5b367b7d1c445bda79232 In a stack overflow situation, stack squeezing may reduce the stack size, but we don't know whether it has been reduced enough for the stack check to succeed if we try again. Fortunately stack squeezing is idempotent, so all we need to do is record whether *any* squeezing happened. If we are at the stack's absolute -K limit, and stack squeezing happened, then we try running the thread again. We also want to avoid enlarging the stack if squeezing has already released some of it. However, we don't want to get into a pathalogical situation where a thread has a nearly full stack (near its current limit, but not near the absolute -K limit), keeps allocating a little bit, squeezing removes a little bit, and then it runs again. So to avoid this, if we squeezed *and* there is still less than BLOCK_SIZE_W words free, then we enlarge the stack anyway. ] [add a comment to TSO_MARKED Simon Marlow <[email protected]>**20091125104954 Ignore-this: 7111281a443533dc453dbf9481dba519 ] [Pass --no-user-package-conf to ghc-pkg in bindisttest Roman Leshchinskiy <[email protected]>**20091125115953] [Add a note saying what Haddock relies on about Instance.is_dfun David Waern <[email protected]>**20091124210308] [Treat () as an enumeration tycon Ian Lynagh <[email protected]>**20091124011313 This fixes deriving Ord (), which previously failed with ghc-stage1: panic! (the 'impossible' happened) (GHC version 6.13.20091123 for x86_64-unknown-linux): TcGenDeriv:mk_FunBind ] [Whitespace only Ian Lynagh <[email protected]>**20091124003221] [inline has moved to GHC.Magic Ian Lynagh <[email protected]>**20091123200308] [Use the ghc-perl tarball on Windows, instead of the msys one Ian Lynagh <[email protected]>**20091120153953] [Install perl on Windows Ian Lynagh <[email protected]>**20091120223830] [Remove cprAnalysis directory from hs-source-dirs [email protected]**20091120161911 Ignore-this: e7d3707794979e45b43136137c939af1 ] [Remove -fasm from mk/validate-settings.mk Ian Lynagh <[email protected]>**20091120125656 Makes it easier to do unregisterised validate runs ] [Fix some dependencies in bindists Ian Lynagh <[email protected]>**20091120125342 We can't depend on sources in a bindist, because we don't have the sources. ] [Add a rule to allow us to sdist libraries easily Ian Lynagh <[email protected]>**20091119160527] [Check upper/lower bounds on various RTS flags (#3633) Simon Marlow <[email protected]>**20091119142422 Ignore-this: 8cbbb3f0f2c46711967491d5c028a410 Also, make K mean 1024 rather than 1000, in RTS flags (similarly for M and G). The main reason I want to change it is that otherwise this might be confusing: exp3_8: error in RTS option -H4k: size outside allowed range (4096 - 18446744073709551615) And I think the original reason for using 1000 instead of 1024, worries about direct-mapped caches, is not an issue in this context (even if you can find a direct-mapped cache these days). ] [define HS_WORD_MAX Simon Marlow <[email protected]>**20091119140143 Ignore-this: ed27e7c7ac0bd03cddcd745ae7053a74 ] [Print the prog name in errorBelch() even if prog_argv is not set yet Simon Marlow <[email protected]>**20091119135230 Ignore-this: ec42e7a4f344ebc34befddfc3d74a946 This means we get the prog name in error messages from the flag parser ] [Remove dead code Roman Leshchinskiy <[email protected]>**20091112070455 Ignore-this: d30b668cb3c396fe21e5e4cd9b8be151 ] [Remove the (very) old strictness analyser [email protected]**20091119154347 Ignore-this: 5d49f66b0baad989ca66c53fde8f2d23 I finally got tired of the #ifdef OLD_STRICTNESS stuff. I had been keeping it around in the hope of doing old-to-new comparisions, but have failed to do so for many years, so I don't think it's going to happen. This patch deletes the clutter. ] [Make INLINE warning more precise [email protected]**20091119132711 Ignore-this: f1494494f37c5e618e639912ff82a7f5 ] [Implement -fexpose-all-unfoldings, and fix a non-termination bug [email protected]**20091119125711 Ignore-this: 54d029014659959151d1681842210cde The -fexpose-all-unfoldings flag arranges to put unfoldings for *everything* in the interface file. Of course, this makes the file a lot bigger, but it also makes it complete, and that's great for supercompilation; or indeed any whole-program work. Consequences: * Interface files need to record loop-breaker-hood. (Previously, loop breakers were never exposed, so that info wasn't necessary.) Hence a small interface file format change. * When inlining, must check loop-breaker-hood. (Previously, loop breakers didn't have an unfolding at all, so no need to check.) * Ditto in exprIsConApp_maybe. Roman actually tripped this bug, because a DFun, which had an unfolding, was also a loop breaker * TidyPgm.tidyIdInfo must be careful to preserve loop-breaker-hood So Id.idUnfolding checks for loop-breaker-hood and returns NoUnfolding if so. When you want the unfolding regardless of loop-breaker-hood, use Id.realIdUnfolding. I have not documented the flag yet, because it's experimental. Nor have I tested it thoroughly. But with the flag off (the normal case) everything should work. ] [Re-implement the binder-swap stuff in OccurAnal [email protected]**20091119124524 Ignore-this: 662ed559e161be958b1eff1a49d750a3 This is a pretty big patch, but it has a very local effect. It affects only the binder-swap mechanism in OccurAnal, which was not working well becuase it's more subtle than I'd realised (See Note [getProxies is subtle]). I think this does a much better job. ] [Try harder not to make DFuns into loop breakers [email protected]**20091119124127 Ignore-this: 922d9a2b3406a3dbbfc5a42d1a286e2a See Note [DFuns should not be loop breakers] ] [Extend the GHCi FAQ slightly [email protected]**20091117132308 Ignore-this: 8257aaf06ff32904a91121a0734d1c4 ] [Add gnutar to the list of names we use when looking for GNU tar Ian Lynagh <[email protected]>**20091119144927] [Add support for the man page to the new build system Ian Lynagh <[email protected]>**20091119140811] [Refactor case-merging and identical-alternative optimisations [email protected]**20091119123704 Ignore-this: db12d31395ed99c2341cc4d7d5dca1e These two optimisations were originally done by SimplUtils.mkCase *after* all the pieces have been simplified. Some while ago I moved them *before*, so they were done by SimplUtils.prepareAlts. It think the reason was that I couldn't rely on the dead-binder information on OutIds, and that info is useful in these optimisations. However, (a) Other changes (notably moving case-binder-swap to OccurAnal) have meant that dead-binder information is accurate in OutIds (b) When there is a cascade of case-merges, they happen in one sweep if you do it after, but in many sweeps if you do it before. Reason: doing it after means you are looking at nice simplified Core. ] [Fix a nasty infelicity in the size computation of CoreUnfold [email protected]**20091119115736 Ignore-this: ecff5289ab14c0df572135bf0b5179d6 The size computation was treating gigantic case expressions as practically free, which they really aren't. It was exacerbated by recent decisions to charge 0 for naked variables and constructors, so the RHS of the case might look free too. A good example was Foreign.C.Error.errnoToIOError, which hsa lots of join points that were getting inlined way to vigorously, so we had: *** Simplifier Phase 2 [main]: Result size = 2983 *** Core Linted result of Simplifier mode 2 [main], iteration 1 out of 4: Result size = 640327 *** Core Linted result of Simplifier mode 2 [main], iteration 2 out of 4: Result size = 1659 Notice that gigantic intermediate! This patch adds a small charge for each *alternative*. Of course, that'll also mean that there's a bit less inling of things involving case expressions. ] [Comments and white space only [email protected]**20091119115122 Ignore-this: dc8f9a72d6d57378d83154877b1d1126 ] [Fix splitAppTys Roman Leshchinskiy <[email protected]>**20091119102639 Ignore-this: e669950c7d151c8a67910cd4bbac9cd6 ] [Windows DLLs: Slurp across the actually static version of libffi [email protected]**20091119000239] [Windows DLLs: Don't rely on stg/DLL.h being included in RtsAPI.h [email protected]**20091118110548 Ignore-this: 7dce0ede283974d7834fe12af3f71bd5 ] [Fix warnings about unused imports [email protected]**20091118110525 Ignore-this: 93841770eadabf5bd3b9f859ca2de7eb ] [Windows DLLs: stifle more warnings about auto imported symbols [email protected]**20091118090105] [Windows DLLs: stifle warnings about symbols being auto imported from DLLs [email protected]**20091118051526] [Windows DLLs: add #ifdefery to turn off DLL import of libffi when building statically. [email protected]**20091118043901] [Windows DLLs: disable extra shutdownHaskell() when unloading the RTS DLL [email protected]**20091117050648] [Windows DLLs: remove dup symbol from def file [email protected]**20091117043851] [Use opt_PIC not #defined __PIC__ in compiler source. [email protected]**20091117043716] [Windows DLLs: CHARLIKE_closure and INTLIKE_closure aren't defined in this way. [email protected]**20091114063240] [If a comment says "Is this correct?", it's not. [email protected]**20091114063157] [Windows DLLs: gmp is in the integer-gmp package now. [email protected]**20091114063046] [Use DLL aware runIO_closure instead of base_GHCziTopHandler_runIO_closure directly [email protected]**20091114061559] [RTS also uses runSparks_closure from base [email protected]**20091114061445] [Provide extralibs when linking Windows DLLs [email protected]**20091114061109] [Don't share low valued Int and Char closures with Windows DLLs [email protected]**20091114060455] [Windows DLLs: use one import lib for each DLL the RTS needs. [email protected]**20091111014821] [Add autoconf code to locate dlltool on Windows [email protected]**20091110051257] [Break recursive imports between the RTS and base library on Windows. [email protected]**20091106062732 The file rts/win32/libHSbase.def contains a list of all the symbols from the base library that the RTS needs. When building the RTS into a DLL on Windows, we want to link the DLL for the RTS before we link the DLL for the base library. We use libHSbase.def to make the "import library" libHSbase.so.a, which contains stubs for each of the symbols from the base library that the RTS needs. ] [Add the msysCORE*.tar.gz tarball to the list of tarballs we unpack Ian Lynagh <[email protected]>**20091118195523] [Put the libffi files to be installed into a dist directory Ian Lynagh <[email protected]>**20091118150508 This meakes it easier to correctly clean libffi ] [Add ghc-tarballs to the list of directories that go into an sdist Ian Lynagh <[email protected]>**20091118131047] [Remove redundant libffi/tarball directory Ian Lynagh <[email protected]>**20091118124102 We now use the tarball in the ghc-tarballs repo ] [Fix gen_contents_index on MSYS Ian Lynagh <[email protected]>**20091117223556 On MSYS sed 's/.*[ \t]//' wasn't matching version:<tab>1.0 so I've switched to 's/.*[[:space:]]//' which works on Linux, cygwin and MSYS. ] [include the GHC package docs in a bindist Simon Marlow <[email protected]>**20091117151133 Ignore-this: c4a10221b1a2a4778494018bca7d2169 ] [exclude some haddock-related rules during BINDIST Simon Marlow <[email protected]>**20091117151123 Ignore-this: 20b4194b26766d6ab701683af520a7d4 ] [Add an install-docs target that emits a helpful diagnostic (#3662) Simon Marlow <[email protected]>**20091116120137 Ignore-this: 1c5414730614b205c67919f3ea363c00 ] [fix install_docs dependencies, and add a missing $(INSTALL_DIR) Simon Marlow <[email protected]>**20091116115630 Ignore-this: 21230df54e79f12f61e9c82a0ae02fad ] [Tweak to the directory-building rule Simon Marlow <[email protected]>**20091113125719 Ignore-this: b9e1fe6bcbfd4ff56905517f32b646f7 So we don't try to recreate directories just because they are older than mkdirhier, since mkdirhier won't touch them. ] [exprIsHNF should "look through" lets [email protected]**20091117125526 Ignore-this: 3e77d029c0f314c53171f0378939b496 I can't quite remember when I spotted this, but exprIsHNF (and similarly exprIsConLike) should ignore enclosing let-bindings, since they don't affect termination. ] [Improvement to typecheck higher-rank rules better [email protected]**20091117125417 Ignore-this: c5791cbe9540376b9ff46e2a6563bcc2 See Note [Typechecking rules] in TcRules. Suggested by Roman ] [Apply RULES to simplified arguments [email protected]**20091117104437 Ignore-this: 9a3475a9871f45ffa115dec44e376e3c See Note [RULEs apply to simplified arguments] in Simplify.lhs A knock-on effect is that rules apply *after* we try inlining (which uses un-simplified arguments), but that seems fine. ] [Improvements to pretty-printing of Core [email protected]**20091117103626 Ignore-this: ad386865644b4dbcd98adab409d7c523 ] [Fix formatting of module deprecation/warning messages Duncan Coutts <[email protected]>**20091115155617 Ignore-this: a41444bdda003aee4412eb56a0e7d052 It was accidentally using list syntax. Fixes #3303 again. ] [Wibble to comment [email protected]**20091113145944 Ignore-this: 730f7cad452ac96d59ee2e74a855c19d ] [TAG 2009-11-15 Ian Lynagh <[email protected]>**20091115155059] Patch bundle hash: 5b9eb8b9a34fb7d58e1927fdec768004eaf32b11
_______________________________________________ Cvs-ghc mailing list [email protected] http://www.haskell.org/mailman/listinfo/cvs-ghc
