1. 15 May, 2011 2 commits
  2. 07 May, 2011 1 commit
  3. 04 May, 2011 1 commit
  4. 02 May, 2011 1 commit
  5. 01 May, 2011 6 commits
  6. 29 Apr, 2011 4 commits
  7. 28 Apr, 2011 1 commit
  8. 23 Apr, 2011 1 commit
  9. 22 Apr, 2011 1 commit
  10. 21 Apr, 2011 3 commits
  11. 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
  12. 17 Apr, 2011 1 commit
  13. 11 Apr, 2011 1 commit
  14. 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.
  15. 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.
  16. 04 Apr, 2011 1 commit
  17. 31 Mar, 2011 1 commit
  18. 29 Mar, 2011 1 commit
  19. 22 Mar, 2011 1 commit
    • Edward Z. Yang's avatar
      Split out "Raw Cmm" dump to its own flag -ddump-raw-cmm · 419821c7
      Edward Z. Yang authored
      Previously, -ddump-cmmz was used to dump out the "Raw Cmm" right
      before it gets passed to the backends, as well as all of the
      intermediate phases in the new code generator.  Unfortunately,
      there are a lot of intermediate phases, which means -ddump-cmmz
      takes a very long time with -fnew-codegen for large programs,
      even if you're only interested in the final result.
      Here we split up -ddump-cmmz into -ddump-cmmz (now exclusively for
      the new code generator) and -ddump-raw-cmm (for both code generation
      paths.) The old flag was not documented in the manual, so hopefully
      not too many people will be surprised by this change.
  20. 20 Mar, 2011 1 commit
  21. 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
  22. 19 Feb, 2011 1 commit
  23. 17 Feb, 2011 1 commit
    • simonpj@microsoft.com's avatar
      Use "on the spot" solving for fundeps · 50d02935
      simonpj@microsoft.com authored
      When we spot an equality arising from a functional dependency,
      we now use that equality (a "wanted") to rewrite the work-item
      constraint right away.  This avoids two dangers
       Danger 1: If we send the original constraint on down the pipeline
                 it may react with an instance declaration, and in delicate
      	   situations (when a Given overlaps with an instance) that
      	   may produce new insoluble goals: see Trac #4952
       Danger 2: If we don't rewrite the constraint, it may re-react
                 with the same thing later, and produce the same equality
                 again --> termination worries.
      To achieve this required some refactoring of FunDeps.lhs (nicer
      This patch also contains a couple of unrelated improvements
      * A bad bug in TcSMonad.nestImplicTcS whereby the Tcs tyvars
        of an outer implication were not untouchable inside
      * Improved logging machinery for the type constraint solver;
        use -ddump-cs-trace (probably with a wider default line width
        -dppr-cols=200 or something)
  24. 04 Feb, 2011 1 commit
  25. 27 Jan, 2011 1 commit
    • simonpj@microsoft.com's avatar
      Refine incomplete-pattern checks (Trac #4905) · a0f6d307
      simonpj@microsoft.com authored
      The changes are:
      * New flag -fwarn-incomplete-uni-patterns, which checks for
        incomplete patterns in (a) lambdas, (b) pattern bindings
      * New flag is not implied by -W or -Wall (too noisy; and many
        libraries use incomplete pattern bindings)
      * Actually do the incomplete-pattern check for pattern bindings
        (previously simply omitted)
      * Documentation for new flag
  26. 24 Jan, 2011 2 commits
    • Ian Lynagh's avatar
    • chak@cse.unsw.edu.au.'s avatar
      DPH options updated · 9e6e96bd
      chak@cse.unsw.edu.au. authored
      - '-Odph' is now '-O2 -fsimplifier-phases=3 -fsimplifier-iterations=20'
      - The new option '-fdph-none' is the default; it indicates that no DPH
        backend is selected and is the only valid option if the DPH libraries
        are not installed.  If vectorisation is attempted with -fdph-none a
        suitable error message is generated.
      - Hence, '-fdph-par' (or '-fdph-seq') needs to be explicitly selected
        when using vectorisation and when linking vectorised code.  (There
        seems to be no elegant way to avoid that.)
  27. 04 Jan, 2011 1 commit
  28. 20 Dec, 2010 1 commit