1. 18 Jun, 2011 7 commits
  2. 08 Jun, 2011 4 commits
  3. 31 May, 2011 1 commit
  4. 12 May, 2011 1 commit
  5. 07 May, 2011 1 commit
  6. 24 Apr, 2011 1 commit
  7. 21 Apr, 2011 1 commit
  8. 20 Apr, 2011 1 commit
    • Simon Peyton Jones's avatar
      Add pprDefiniteTrace and use it · b187c221
      Simon Peyton Jones authored
      The point here is that a very few uses of pprTrace are
      controlled by a flag like -ddump-inlinings or -ddump-rule-firings,
      and we want to see that output even with -dno-debug-output
  9. 19 Apr, 2011 1 commit
    • Simon Peyton Jones's avatar
      This BIG PATCH contains most of the work for the New Coercion Representation · fdf86568
      Simon Peyton Jones authored
      See the paper "Practical aspects of evidence based compilation in System FC"
      * Coercion becomes a data type, distinct from Type
      * Coercions become value-level things, rather than type-level things,
        (although the value is zero bits wide, like the State token)
        A consequence is that a coerion abstraction increases the arity by 1
        (just like a dictionary abstraction)
      * There is a new constructor in CoreExpr, namely Coercion, to inject
        coercions into terms
  10. 13 Apr, 2011 1 commit
  11. 11 Apr, 2011 1 commit
  12. 10 Apr, 2011 1 commit
  13. 08 Apr, 2011 1 commit
    • Simon Marlow's avatar
      Force re-linking if the options have changed (#4451) · 814edf44
      Simon Marlow authored
      A common sequence of commands (at least for me) is this:
      $ ghc hello
      1 of 1] Compiling Main             ( hello.hs, hello.o )
      Linking hello ...
      $ ./hello +RTS -s
      hello: Most RTS options are disabled. Link with -rtsopts to enable them.
      $ ghc hello -rtsopts
      grr, nothing happened.  I could use -fforce-recomp, but if this was a
      large program I probably don't want to recompile it all again, so:
      $ rm hello
      removed `hello'
      $ ghc hello -rtsopts
      Linking hello ...
      $ ./hello +RTS -s
      ./hello +RTS -s
      Hello World!
                51,264 bytes allocated in the heap
                 2,904 bytes copied during GC
                43,808 bytes maximum residency (1 sample(s))
                17,632 bytes maximum slop
      With this patch, GHC notices when the options have changed and forces
      a relink, so you don't need to rm the binary or use -fforce-recomp.
      This is done by adding the pertinent stuff to the binary in a special
      section called ".debug-ghc-link-info":
      $ readelf -p .debug-ghc-link-info ./hello
      String dump of section 'ghc-linker-opts':
        [     0]  (["-lHSbase-","-lHSinteger-gmp-","-lgmp","-lHSghc-prim-","-lHSrts","-lm","-lrt","-ldl","-u","ghczmprim_GHCziTypes_Izh_static_info","-u","ghczmprim_GHCziTypes_Czh_static_info","-u","ghczmprim_GHCziTypes_Fzh_static_info","-u","ghczmprim_GHCziTypes_Dzh_static_info","-u","base_GHCziPtr_Ptr_static_info","-u","base_GHCziWord_Wzh_static_info","-u","base_GHCziInt_I8zh_static_info","-u","base_GHCziInt_I16zh_static_info","-u","base_GHCziInt_I32zh_static_info","-u","base_GHCziInt_I64zh_static_info","-u","base_GHCziWord_W8zh_static_info","-u","base_GHCziWord_W16zh_static_info","-u","base_GHCziWord_W32zh_static_info","-u","base_GHCziWord_W64zh_static_info","-u","base_GHCziStable_StablePtr_static_info","-u","ghczmprim_GHCziTypes_Izh_con_info","-u","ghczmprim_GHCziTypes_Czh_con_info","-u","ghczmprim_GHCziTypes_Fzh_con_info","-u","ghczmprim_GHCziTypes_Dzh_con_info","-u","base_GHCziPtr_Ptr_con_info","-u","base_GHCziPtr_FunPtr_con_info","-u","base_GHCziStable_StablePtr_con_info","-u","ghczmprim_GHCziTypes_False_closure","-u","ghczmprim_GHCziTypes_True_closure","-u","base_GHCziPack_unpackCString_closure","-u","base_GHCziIOziException_stackOverflow_closure","-u","base_GHCziIOziException_heapOverflow_closure","-u","base_ControlziExceptionziBase_nonTermination_closure","-u","base_GHCziIOziException_blockedIndefinitelyOnMVar_closure","-u","base_GHCziIOziException_blockedIndefinitelyOnSTM_closure","-u","base_ControlziExceptionziBase_nestedAtomically_closure","-u","base_GHCziWeak_runFinalizzerBatch_closure","-u","base_GHCziTopHandler_runIO_closure","-u","base_GHCziTopHandler_runNonIO_closure","-u","base_GHCziConcziIO_ensureIOManagerIsRunning_closure","-u","base_GHCziConcziSync_runSparks_closure","-u","base_GHCziConcziSignal_runHandlers_closure","-lHSffi"],Nothing,RtsOptsAll,False,[],[])
      And GHC itself uses the readelf command to extract it when deciding
      whether to relink.  The reason for the name ".debug-ghc-link-info" is
      that sections beginning with ".debug" are removed automatically by
      This currently only works on Linux; Windows and OS X still have the
      old behaviour.
  14. 07 Apr, 2011 1 commit
    • Thomas Schilling's avatar
      Start support for coloured SDoc output. · 4e6bac1e
      Thomas Schilling authored
      The SDoc type now passes around an abstract SDocContext rather than
      just a PprStyle which required touching a few more files.  This should
      also make it easier to integrate DynFlags passing, so that we can get
      rid of global variables.
  15. 03 Apr, 2011 1 commit
  16. 20 Feb, 2011 1 commit
    • chak@cse.unsw.edu.au.'s avatar
      Added a VECTORISE pragma · f2aaae97
      chak@cse.unsw.edu.au. authored
      - Added a pragma {-# VECTORISE var = exp #-} that prevents
        the vectoriser from vectorising the definition of 'var'.
        Instead it uses the binding '$v_var = exp' to vectorise
        'var'.  The vectoriser checks that the Core type of 'exp'
        matches the vectorised Core type of 'var'.  (It would be
        quite complicated to perform that check in the type checker
        as the vectorisation of a type needs the state of the VM
      - Added parts of a related VECTORISE SCALAR pragma
      - Documented -ddump-vect
      - Added -ddump-vt-trace
      - Some clean up
  17. 26 Jan, 2011 1 commit
  18. 12 Jan, 2011 1 commit
    • simonpj@microsoft.com's avatar
      Major refactoring of the type inference engine · 27310213
      simonpj@microsoft.com authored
      This patch embodies many, many changes to the contraint solver, which
      make it simpler, more robust, and more beautiful.  But it has taken
      me ages to get right. The forcing issue was some obscure programs
      involving recursive dictionaries, but these eventually led to a
      massive refactoring sweep.
      Main changes are:
       * No more "frozen errors" in the monad.  Instead "insoluble
         constraints" are now part of the WantedConstraints type.
       * The WantedConstraint type is a product of bags, instead of (as
         before) a bag of sums.  This eliminates a good deal of tagging and
       * This same WantedConstraints data type is used
           - As the way that constraints are gathered
           - As a field of an implication constraint
           - As both argument and result of solveWanted
           - As the argument to reportUnsolved
       * We do not generate any evidence for Derived constraints. They are
         purely there to allow "impovement" by unifying unification
       * In consequence, nothing is ever *rewritten* by a Derived
         constraint.  This removes, by construction, all the horrible
         potential recursive-dictionary loops that were making us tear our
         hair out.  No more isGoodRecEv search either. Hurrah!
       * We add the superclass Derived constraints during canonicalisation,
         after checking for duplicates.  So fewer superclass constraints
         are generated than before.
       * Skolem tc-tyvars no longer carry SkolemInfo.  Instead, the
         SkolemInfo lives in the GivenLoc of the Implication, where it
         can be tidied, zonked, and substituted nicely.  This alone is
         a major improvement.
       * Tidying is improved, so that we tend to get t1, t2, t3, rather
         than t1, t11, t111, etc
         Moreover, unification variables are always printed with a digit
         (thus a0, a1, etc), so that plain 'a' is available for a skolem
         arising from a type signature etc. In this way,
           (a) We quietly say which variables are unification variables,
               for those who know and care
           (b) Types tend to get printed as the user expects.  If he writes
                   f :: a -> a
                   f = ...blah...
               then types involving 'a' get printed with 'a', rather than
               some tidied variant.
       * There are significant improvements in error messages, notably
         in the "Cannot deduce X from Y" messages.
  19. 07 Jan, 2011 1 commit
  20. 22 Dec, 2010 1 commit
  21. 18 Dec, 2010 1 commit
  22. 15 Dec, 2010 1 commit
  23. 08 Dec, 2010 2 commits
  24. 12 Nov, 2010 2 commits
  25. 11 Nov, 2010 1 commit
  26. 02 Nov, 2010 1 commit
  27. 29 Oct, 2010 2 commits
    • benl@ouroborus.net's avatar
      Cleanup comments and formatting only · 2f4e210f
      benl@ouroborus.net authored
    • benl@ouroborus.net's avatar
      Nicer error message for #3782 · 3a7e2b3a
      benl@ouroborus.net authored
      It now says:
      ghc-stage2: sorry! (this is work in progress)
        (GHC version 7.1.20101028 for i386-apple-darwin):
          DPH builtin function 'sumTyCon' of size '11' is not yet implemented.
          This function does not appear in your source program, but it is needed
          to compile your code in the backend. This is a known, current limitation
          of DPH. If you want it to to work you should send mail to cvs-ghc@haskell.org
          and ask what you can do to help (it might involve some GHC hacking).
      I added 'pprSorry' that behaves like 'pprPanic' except it say sorry! instead 
      of panic!, and doesn't ask the user to report a bug. 
  28. 27 Oct, 2010 1 commit
    • Simon Marlow's avatar
      Refactoring and tidyup of HscMain and related things (also fix #1666) · 94bf0d36
      Simon Marlow authored
      While trying to fix #1666 (-Werror aborts too early) I decided to some
      tidyup in GHC/DriverPipeline/HscMain.
       - The GhcMonad overloading is gone from DriverPipeline and HscMain
         now.  GhcMonad is now defined in a module of its own, and only
         used in the top-level GHC layer.  DriverPipeline and HscMain
         use the plain IO monad and take HscEnv as an argument.
       - WarnLogMonad is gone.  printExceptionAndWarnings is now called
         printException (the old name is deprecated).  Session no longer
         contains warnings.
       - HscMain has its own little monad that collects warnings, and also
         plumbs HscEnv around.  The idea here is that warnings are collected
         while we're in HscMain, but on exit from HscMain (any function) we
         check for warnings and either print them (via log_action, so IDEs
         can still override the printing), or turn them into an error if
         -Werror is on.
       - GhcApiCallbacks is gone, along with GHC.loadWithLogger.  Thomas
         Schilling told me he wasn't using these, and I don't see a good
         reason to have them.
       - there's a new pure API to the parser (suggestion from Neil Mitchell):
            parser :: String
                   -> DynFlags
                   -> FilePath
                   -> Either ErrorMessages (WarningMessages, 
                                            Located (HsModule RdrName))