1. 22 Apr, 2009 1 commit
  2. 16 Mar, 2009 1 commit
  3. 05 Mar, 2009 2 commits
  4. 11 Feb, 2009 1 commit
  5. 11 Dec, 2008 1 commit
  6. 30 Nov, 2008 1 commit
  7. 28 Nov, 2008 2 commits
  8. 25 Nov, 2008 1 commit
    • Thomas Schilling's avatar
      Major clean-up of HscMain. · e06951a7
      Thomas Schilling authored
      This patch entails a major restructuring of HscMain and a small bugfix
      to MkIface (which required the restructuring in HscMain).
      
      In MkIface:
      
        - mkIface* no longer outputs orphan warnings directly and also no
          longer quits GHC when -Werror is set.  Instead, errors are
          reported using the common IO (Messages, Maybe result) scheme.
      
      In HscMain:
      
        - Get rid of the 'Comp' monad.  This monad was mostly GhcMonad + two
          reader arguments, a ModSummary for the currently compiled module
          and a possible old interface.  The latter actually lead to a small
          space-leak since only its hash was needed (to check whether the
          newly-generated interface file was the same as the original one).
      
          Functions originally of type 'Comp' now only take the arguments
          that they actually need.  This leads to slighly longer argument
          lists in some places, however, it is now much easier to see what
          is actually going on.
      
        - Get rid of 'myParseModule'.  Rename 'parseFile' to 'hscParse'.
      
        - Join 'deSugarModule' and 'hscDesugar' (keeping the latter).
      
        - Rename 'typecheck{Rename}Module{'}' to 'hscTypecheck{Rename}'.
          One variant keeps the renamed syntax, the other doesn't.
      
        - Parameterise 'HscStatus', so that 'InteractiveStatus' is just a
          different parameterisation of 'HscStatus'.
      
        - 'hscCompile{OneShot,Batch,Nothing,Interactive}' are now
          implemented using a (local) typeclass called 'HsCompiler'.  The
          idea is to make the common structure more obvious.  Using this
          typeclass we now have two functions 'genericHscCompile' (original
          'hscCompiler') and 'genericHscRecompile' (original 'genComp')
          describing the default pipeline.  The methods of the typeclass
          describe a sort of "hook" interface (in OO-terms this would be
          called the "template method" pattern).
      
          One problem with this approach is that we parameterise over the
          /result/ type which, in fact, is not actually different for
          "nothing" and "batch" mode.  To avoid functional dependencies or
          associated types, we use type tags to make them artificially
          different and parameterise the type class over the result type.
          A perhaps better approach might be to use records instead.
          
        - Drop some redundant 'HscEnv' arguments.  These were likely
          different from what 'getSession' would return because during
          compilation we temporarily set the module's DynFlags as well as a
          few other fields.  We now use the 'withTempSession' combinator to
          temporarily change the 'HscEnv' and automatically restore the
          original session after the enclosed action has returned (even in
          case of exceptions).
      
        - Rename 'hscCompile' to 'hscGenHardCode' (since that is what it
          does).
      
      Calls in 'GHC' and 'DriverPipeline' accordingly needed small
      adaptions.
      e06951a7
  9. 22 Nov, 2008 1 commit
  10. 21 Nov, 2008 1 commit
  11. 07 Nov, 2008 1 commit
  12. 13 Oct, 2008 1 commit
  13. 07 Oct, 2008 1 commit
  14. 23 Sep, 2008 1 commit
  15. 14 Sep, 2008 1 commit
  16. 01 Sep, 2008 1 commit
    • Simon Marlow's avatar
      Check the modification times of libraries in --make link step · 880a6b90
      Simon Marlow authored
      When linking in --make we check the modification time of the
      executable against the modification time of the object files, and only
      re-link if any object file is newer.  However, we should also check
      the modification times of packages, since the recompilation checker
      also tracks dependencies in packages.  
      
      In a GHC build this means that if you recompile stage2 and don't
      manage to change any fingerpints, we won't recompile Main but we'll
      still re-link it.
      880a6b90
  17. 26 Aug, 2008 1 commit
  18. 21 Aug, 2008 1 commit
    • Simon Marlow's avatar
      Don't use the cc-options from packages when compiling .hc files · 39271273
      Simon Marlow authored
      Now that we don't include any header files in .hc apart from our own,
      the cc-options from packages are at best superfluous, so don't pass
      them.
      
      We still pass them to .c compilations, although I've just made changes
      to Cabal so that cc-options from a .cabal file are not copied into the
      InstalledPackageInfo.  Most uses of cc-options in Cabal are clearly
      intended to be local to the package, but they were being propagated
      everywhere, almost certainly unintentionally.
      
      The way is left open for Cabal to allow packages to specify cc-options
      that get propagated in the future, if we find a use case for this.
      39271273
  19. 31 Jul, 2008 1 commit
  20. 30 Jul, 2008 1 commit
  21. 24 Jul, 2008 1 commit
  22. 11 Jul, 2008 1 commit
  23. 08 Jul, 2008 1 commit
  24. 05 Jul, 2008 1 commit
  25. 20 Jun, 2008 1 commit
  26. 14 Jun, 2008 4 commits
  27. 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
  28. 12 Apr, 2008 1 commit
  29. 29 Mar, 2008 1 commit
  30. 25 Mar, 2008 1 commit
  31. 07 Feb, 2008 1 commit
    • Ian Lynagh's avatar
      Convert more UniqFM's back to LazyUniqFM's · d51f42f6
      Ian Lynagh authored
      These fix these failures:
         break008(ghci)
         break009(ghci)
         break026(ghci)
         ghci.prog009(ghci)
         ghci025(ghci)
         print007(ghci)
         prog001(ghci)
         prog002(ghci)
         prog003(ghci)
      at least some of which have this symptom:
          Exception: expectJust prune
      d51f42f6
  32. 12 Dec, 2007 1 commit
  33. 17 Jan, 2008 1 commit
  34. 16 Jan, 2008 1 commit
  35. 10 Jan, 2008 1 commit