1. 07 Feb, 2008 1 commit
  2. 04 Sep, 2007 1 commit
  3. 03 Sep, 2007 1 commit
  4. 01 Sep, 2007 1 commit
  5. 10 Nov, 2006 1 commit
  6. 11 Oct, 2006 1 commit
    • Simon Marlow's avatar
      Module header tidyup, phase 1 · 49c98d14
      Simon Marlow authored
      This patch is a start on removing import lists and generally tidying
      up the top of each module.  In addition to removing import lists:
      
         - Change DATA.IOREF -> Data.IORef etc.
         - Change List -> Data.List etc.
         - Remove $Id$
         - Update copyrights
         - Re-order imports to put non-GHC imports last
         - Remove some unused and duplicate imports
      49c98d14
  7. 07 Apr, 2006 1 commit
    • Simon Marlow's avatar
      Reorganisation of the source tree · 0065d5ab
      Simon Marlow authored
      Most of the other users of the fptools build system have migrated to
      Cabal, and with the move to darcs we can now flatten the source tree
      without losing history, so here goes.
      
      The main change is that the ghc/ subdir is gone, and most of what it
      contained is now at the top level.  The build system now makes no
      pretense at being multi-project, it is just the GHC build system.
      
      No doubt this will break many things, and there will be a period of
      instability while we fix the dependencies.  A straightforward build
      should work, but I haven't yet fixed binary/source distributions.
      Changes to the Building Guide will follow, too.
      0065d5ab
  8. 18 Mar, 2005 1 commit
    • simonmar's avatar
      [project @ 2005-03-18 13:37:27 by simonmar] · d1c1b7d0
      simonmar authored
      Flags cleanup.
      
      Basically the purpose of this commit is to move more of the compiler's
      global state into DynFlags, which is moving in the direction we need
      to go for the GHC API which can have multiple active sessions
      supported by a single GHC instance.
      
      Before:
      
      $ grep 'global_var' */*hs | wc -l
           78
      
      After:
      
      $ grep 'global_var' */*hs | wc -l
           27
      
      Well, it's an improvement.  Most of what's left won't really affect
      our ability to host multiple sessions.
      
      Lots of static flags have become dynamic flags (yay!).  Notably lots
      of flags that we used to think of as "driver" flags, like -I and -L,
      are now dynamic.  The most notable static flags left behind are the
      "way" flags, eg. -prof.  It would be nice to fix this, but it isn't
      urgent.
      
      On the way, lots of cleanup has happened.  Everything related to
      static and dynamic flags lives in StaticFlags and DynFlags
      respectively, and they share a common command-line parser library in
      CmdLineParser.  The flags related to modes (--makde, --interactive
      etc.) are now private to the front end: in fact private to Main
      itself, for now.
      d1c1b7d0
  9. 17 Nov, 2003 1 commit
  10. 22 Apr, 2002 1 commit
    • simonpj's avatar
      [project @ 2002-04-22 16:06:35 by simonpj] · dbfe93e6
      simonpj authored
      CPR control
      
      1.  Remove -fno-cpr, add -fcpr-off which is a simple static flag
          for switching the new CPR analysis off altogether.
          (The "-fno" machinery is rather complicated.)
      
      2.  Rejig SimplCore a little so that the "old strictness analyser"
          runs both the old strictness analyser and the old CPR analyser,
          which makes it more like the new strictness/CPR analyser.
      
          (How much longer we keep the old strictness/CPR analyser in the
          compiler at all I don't know.  It's just for comparision purposes
          when we write the paper.)
      dbfe93e6
  11. 05 Apr, 2002 1 commit
  12. 07 Jan, 2002 1 commit
  13. 05 Dec, 2001 1 commit
  14. 19 Nov, 2001 1 commit
    • simonpj's avatar
      [project @ 2001-11-19 14:23:52 by simonpj] · d8af6b8c
      simonpj authored
      --------------------------------------
      	Yet another cut at the DmdAnal domains
      	--------------------------------------
      
      This version of the domain for demand analysis was developed
      in discussion with Peter Sestoft, so I think it might at last
      be more or less right!
      
      Our idea is mentally to separate
      	strictness analysis
      from
      	absence and boxity analysis
      
      Then we combine them back into a single domain.  The latter
      is all you see in the compiler (the Demand type, as before)
      but we understand it better now.
      d8af6b8c
  15. 25 Oct, 2001 2 commits
    • simonpj's avatar
      [project @ 2001-10-25 09:59:39 by simonpj] · 4a02c951
      simonpj authored
      Move defer from NewDemand to DmdAnal
      4a02c951
    • sof's avatar
      [project @ 2001-10-25 02:13:10 by sof] · 9e933350
      sof authored
      - Pet peeve removal / code tidyup, replaced various sub-optimal
        uses of 'length' with something a bit better, i.e., replaced
        the following patterns
      
         *  length as `cmpOp` length bs
         *  length as `cmpOp` val   -- incl. uses where val == 1 and val == 0
         *  {take,drop,splitAt} (length as) bs
         *  length [ () | pat <- as ]
      
        with uses of misc Util functions.
      
        I'd be surprised if there's a noticeable reduction in running
        times as a result of these changes, but every little bit helps.
      
        [ The changes have been tested wrt testsuite/ - I'm seeing a couple
          of unexpected breakages coming from CorePrep, but I'm currently
          assuming that these are due to other recent changes. ]
      
      - compMan/CompManager.lhs: restored 4.08 compilability + some code
        cleanup.
      
      None of these changes are HEADworthy.
      9e933350
  16. 18 Oct, 2001 1 commit
    • simonpj's avatar
      [project @ 2001-10-18 13:09:50 by simonpj] · 94b17da4
      simonpj authored
      Fix two minor bugs in DmdAnal, and add comments.
      The bugs were both in dmdTransform, the dataConId case
      
        * The test for saturation should be against call_depth
          not agaainst (length ds).
      
        * The arg_ds computation for k=Keep should be
          with 'both' not 'lub'.
      94b17da4
  17. 04 Oct, 2001 1 commit
  18. 03 Oct, 2001 1 commit
  19. 07 Sep, 2001 2 commits
    • simonpj's avatar
      [project @ 2001-09-07 16:52:53 by simonpj] · a49a7728
      simonpj authored
      Make isStrictDmd give the right answer
      a49a7728
    • simonpj's avatar
      [project @ 2001-09-07 12:42:46 by simonpj] · d3f61314
      simonpj authored
      ------------------------
      	Fix the demand analyser
      	------------------------
      
      A spiffy new domain for demands, and definitions for lub/both
      which are actually monotonic.   Quite a bit of related jiggling
      around.
      
      One of the original motivations was to do with functions like:
      
      	sum n []     = n
      	sum n (x:xs) = sum (n+x) xs
      
      Even though n is returned boxed from the first case, we don't want
      to get strictness
      	S(L)V -> T
      because that means we pass the box for n, and that is TERRIBLE.
      So the new version errs on the side of unboxing, more like the forwards
      analyser, and only passes the box if it is *definitely* needed, rather
      than if it *may* be needed.
      d3f61314
  20. 25 Jul, 2001 1 commit
  21. 24 Jul, 2001 2 commits
    • simonpj's avatar
      [project @ 2001-07-24 16:42:11 by simonpj] · 7c03fd3b
      simonpj authored
      A major demand-analyser fix, which made it say something was
      absent when it wasn't at all.  Here's the comment from the
      Case equation of dmdAnal.
      
      	-- Figure out whether the case binder is used, and use
      	-- that to set the keepity of the demand.  This is utterly essential.
      	-- Consider	f x = case x of y { (a,b) -> k y a }
      	-- If we just take scrut_demand = U(L,A), then we won't pass x to the
      	-- worker, so the worker will rebuild
      	--	x = (a, absent-error)
      	-- and that'll crash.
      7c03fd3b
    • simonpj's avatar
      [project @ 2001-07-24 09:53:27 by simonpj] · 198ee273
      simonpj authored
      Keep the printed stuff for Demand and DmdResult separate, else
      we can get confused when parsing a strictness signature.  For
      example, previously
      
      	LX
      
      could have been parsed as	L  -> X
      or as				LX -> T
      
      Urk!  I've taken the simple path of making DmdResults print in
      lower case.  Thus
      
      	Lx 	means	L  -> x
      	LX	means	LX -> t
      198ee273
  22. 23 Jul, 2001 1 commit
    • simonpj's avatar
      [project @ 2001-07-23 10:54:46 by simonpj] · f6cd95ff
      simonpj authored
      ---------------------------------
      	Switch to the new demand analyser
      	---------------------------------
      
      This commit makes the new demand analyser the main beast,
      with the old strictness analyser as a backup.  When
      DEBUG is on, the old strictness analyser is run too, and the
      results compared.
      
      WARNING: this isn't thorougly tested yet, so expect glitches.
      Delay updating for a few days if the HEAD is mission critical
      for you.
      
      But do try it out.  I'm away for 2.5 weeks from Thursday, so
      it would be good to shake out any glaring bugs before then.
      f6cd95ff
  23. 19 Jul, 2001 1 commit
  24. 17 Jul, 2001 1 commit
    • simonpj's avatar
      [project @ 2001-07-17 15:28:30 by simonpj] · fdc83001
      simonpj authored
      --------------------------------
      	First cut at the demand analyser
      	--------------------------------
      
      This demand analyser is intended to replace the strictness/absence
      analyser, and the CPR analyser.
      
      This commit adds it to the compiler, but in an entirely non-invasive
      way.
      
      	If you build the compiler without -DDEBUG,
      	you won't get it at all.
      
      	If you build the compiler with -DDEBUG,
      	you'll get the demand analyser, but the existing
      	strictness analyser etc are still there.  All the
      	demand analyser does is to compare its output with
      	the existing stuff and report differences.
      
      There's no cross-module stuff for demand info yet.
      
      The strictness/demand info is put the IdInfo as
      	newStrictnessInfo
      	newDemandInfo
      
      Eventually we'll remove the old ones.
      
      Simon
      fdc83001