1. 14 Jun, 2008 2 commits
  2. 05 Jun, 2008 1 commit
    • simonpj@microsoft.com's avatar
      Desugar multiple polymorphic bindings more intelligently · a3f24157
      simonpj@microsoft.com authored
      Occasionally people write very large recursive groups of definitions. 
      In general we desugar these to a single definition that binds tuple,
      plus lots of tuple selectors.  But that code has quadratic size, which
      can be bad.
      
      This patch adds a new case to the desugaring of bindings, for the
      situation where there are lots of polymorphic variables, but no
      dictionaries.  (Dictionaries force us into the general case.)
      
      See Note [Abstracting over tyvars only].  
      
      The extra behaviour can be disabled with the (static) flag
      
      	-fno-ds-multi-tyvar
      
      in case we want to experiment with switching it on or off.  There is
      essentially-zero effect on the nofib suite though.
      
      I was provoked into doing this by Trac #1136.  In fact I'm not sure
      it's the real cause of the problem there, but it's a good idea anyway.
      a3f24157
  3. 03 Jun, 2008 2 commits
  4. 29 May, 2008 1 commit
    • dias@eecs.harvard.edu's avatar
      Cmm back end upgrades · 25628e27
      dias@eecs.harvard.edu authored
      Several changes in this patch, partially bug fixes, partially new code:
      o bug fixes in ZipDataflow
         - added some checks to verify that facts converge
         - removed some erroneous checks of convergence on entry nodes
         - added some missing applications of transfer functions
      o changed dataflow clients to use ZipDataflow, making ZipDataflow0 obsolete
      o eliminated DFA monad (no need for separate analysis and rewriting monads with ZipDataflow)
      o started stack layout changes
         - no longer generating CopyIn and CopyOut nodes (not yet fully expunged though)
         - still not using proper calling conventions
      o simple new optimizations:
         - common block elimination
            -- have not yet tried to move the Adams opt out of CmmProcPointZ
         - block concatenation
      o piped optimization fuel up to the HscEnv
         - can be limited by a command-line flag
         - not tested, and probably not yet properly used by clients
      o added unique supply to FuelMonad, also lifted unique supply to DFMonad
      25628e27
  5. 20 May, 2008 1 commit
  6. 22 Apr, 2008 3 commits
  7. 29 Mar, 2008 1 commit
  8. 25 Mar, 2008 1 commit
  9. 09 Mar, 2008 1 commit
    • rl@cse.unsw.edu.au's avatar
      Remove ndpFlatten · e415eeaf
      rl@cse.unsw.edu.au authored
      This patch removes the ndpFlatten directory and the -fflatten static flag.
      This code has never worked and has now been superceded by vectorisation.
      e415eeaf
  10. 28 Feb, 2008 1 commit
    • Simon Marlow's avatar
      Enable -prof -threaded (#886) · 50c4d039
      Simon Marlow authored
      It turns out that -prof -threaded works (modulo some small changes),
      because all the data structures used in profiling are only accessed by
      one thread at a time, at long as we don't use +RTS -N2 or higher.  So
      this patch enables the use of -prof -threaded, but an error is given
      if you ask for more than one CPU with +RTS -N.
      50c4d039
  11. 17 Jan, 2008 1 commit
    • simonpj@microsoft.com's avatar
      Add -fspec-inline-join-points to SpecConstr · 44d4bf2c
      simonpj@microsoft.com authored
      This patch addresses a problem that Roman found in SpecConstr.  Consider:
      
      foo :: Maybe Int -> Maybe Int -> Int
      foo a b = let j b = foo a b
                 in
                 case b of
                   Nothing -> ...
                   Just n  -> case a of
                                Just m  -> ... j (Just (n+1)) ...
                                Nothing -> ... j (Just (n-1)) ...
      
      We want to make specialised versions for 'foo' for the patterns
      	Nothing  (Just v)
      	(Just a) (Just b)
      
      Two problems, caused by the join point j.  First, j does not
      scrutinise b, so j won't be specialised f for the (Just v) pattern.
      Second, j is defined where the free var 'a' is not evaluated.
      
      Both are solved by brutally inlining j at its call sites.  This risks
      major code bloat, but it's relatively quick to implement.  The flag
      	-fspec-inline-join-points
      causes brutal inlining for a 
      	non-recursive binding
      	of a function
      	whose RHS contains calls
      	of a recursive function
      
      The (experimental) flag is static for now, and I have not even
      documented it properly.
      
      44d4bf2c
  12. 10 Jan, 2008 1 commit
  13. 03 Jan, 2008 1 commit
  14. 20 Dec, 2007 1 commit
  15. 27 Nov, 2007 1 commit
  16. 16 Nov, 2007 1 commit
  17. 09 Oct, 2007 1 commit
  18. 21 Sep, 2007 1 commit
  19. 04 Sep, 2007 1 commit
  20. 03 Sep, 2007 1 commit
  21. 01 Sep, 2007 1 commit
  22. 07 Aug, 2007 1 commit
  23. 17 Jul, 2007 1 commit
  24. 08 Jul, 2007 1 commit
  25. 02 Jul, 2007 1 commit
  26. 27 Jun, 2007 1 commit
  27. 26 Jun, 2007 1 commit
  28. 22 Jun, 2007 2 commits
  29. 12 Jun, 2007 1 commit
    • Ian Lynagh's avatar
      Tweak banner printing · cedd4187
      Ian Lynagh authored
      * -{short,long}-ghci-banner are now dynamic options, so you can put
        ":set -short-ghci-banner" in .ghci
      * The -v2 banner information now always tells you what compiler booted GHC,
        and what stage the compiler is. Thus we no longer assume that stage > 1
        iff GHCI is defined.
      cedd4187
  30. 01 Jun, 2007 1 commit
  31. 10 May, 2007 1 commit
  32. 07 May, 2007 1 commit
  33. 04 May, 2007 1 commit
    • simonpj@microsoft.com's avatar
      Make -frewrite-rules into a dynamic flag; off for -O0 · 5943ce90
      simonpj@microsoft.com authored
      Argubly rewrite rules should not fire with -O0, and it turns
      out that when compiling GHC.Base with -O0 we get a crash if
      the rewrite rules do fire (see Note [Scoping for Builtin rules]
      in PrelRules).
      
      So unless someone yells, rewrite rules are off with -O0.
      
      The new (now dynamic) flag is 
          -frewrite rules (with -fno-rewrite-rules to disable)
      
      The old (static) flag -frules-off is gone.
      5943ce90
  34. 01 May, 2007 1 commit
    • chevalier@alum.wellesley.edu's avatar
      Remove references to -fticky-ticky flag · 3c506a6c
      chevalier@alum.wellesley.edu authored
      -ticky is the command-line flag for ticky-ticky profiling now, but
      internally, the -fticky-ticky flag was used to represent whether ticky
      was on. This led to link errors if the user supplied -fticky-ticky but
      not -ticky (ticky code would be generated but the wrong RTS library
      would be passed to the linker). I removed references to -fticky-ticky
      -- now, only the way flags dictate whether ticky is on, and
      -fticky-ticky is no longer accepted as a command-line option.
      3c506a6c
  35. 14 Apr, 2007 1 commit