Commits on Jul 6, 2015
  1. Revert "Add --verbose and --help flags to gen_contents_index"

    This reverts commit e1e6855 which was
    accidentally pushed.
    bgamari committed Jul 6, 2015
Commits on Aug 9, 2012
  1. -package P was loading all versions of P in GHCi (#7030)

    -package P means "the latest version of P" if multiple versions are
    installed.  It was working as advertised, but we were
    eagerly *linking* all versions of P, which might cause an error if the
    package has some C code, because we can't link multiple instances of
    the same symbol.
    MERGED from commit 62164cf
    simonmar committed with pcapriotti Jul 2, 2012
Commits on Jun 21, 2012
Commits on Jun 19, 2012
  1. Don't put auto sccs on INLINE functions (#6131)

    There was also a bug caused by INLINEs getting SCCs, but unfortunately
    I have lost the test case.  The Note in the code describes the problem
    MERGED from commit 6181e00
    simonmar committed with pcapriotti Jun 15, 2012
Commits on Jun 17, 2012
  1. Build fix for Hurd.

    Patch by Samuel Thibault.
    MERGED from commit d2b538c
    pcapriotti committed Jun 17, 2012
Commits on Jun 15, 2012
  1. Drop the per-task timing stats, give a summary only (#5897)

    We were keeping around the Task struct (216 bytes) for every worker we
    ever created, even though we only keep a maximum of 6 workers per
    Capability.  These Task structs accumulate and cause a space leak in
    programs that do lots of safe FFI calls; this patch frees the Task
    struct as soon as a worker exits.
    One reason we were keeping the Task structs around is because we print
    out per-Task timing stats in +RTS -s, but that isn't terribly useful.
    What is sometimes useful is knowing how *many* Tasks there were.  So
    now I'm printing a single-line summary, this is for the program in
      TASKS: 2001 (1 bound, 31 peak workers (2000 total), using -N1)
    So although we created 2k tasks overall, there were only 31 workers
    active at any one time (which is exactly what we expect: the program
    makes 30 safe FFI calls concurrently).
    This also gives an indication of how many capabilities were being
    used, which is handy if you use +RTS -N without an explicit number.
    MERGED from commit 085c7fe
    simonmar committed with pcapriotti Mar 2, 2012
Commits on Jun 11, 2012
Commits on Jun 8, 2012
  1. Fix for earger blackholing of thunks with no free variables (#6146)

    A thunk with no free variables was not getting blackholed when
    -feager-blackholing was on, but we were nevertheless pushing the
    stg_bh_upd_frame version of the update frame that expects to see a
    black hole.
    I fixed this twice for good measure:
     - we now call blackHoleOnEntry when pushing the update frame to check
       whether the closure was actually blackholed, and so that we use the
       same predicate in both places
     - we now black hole thunks even if they have no free variables.
       These only occur when optimisation is off, but presumably if you say
       -feager-blackholing then that's what you want to happen.
    MERGED from commit 21a53a1
    simonmar committed with pcapriotti Jun 7, 2012
Commits on Jun 7, 2012
  1. Set RELEASE back to NO

    igfoo committed Jun 7, 2012
Commits on Jun 5, 2012
  1. checkStability: respect -fforce-recomp (#6105)

    MERGED from commit c95342c
    simonmar committed with pcapriotti May 22, 2012
  2. escape(): don't forget the final '\0'

    Hopefully should fix random "bad heap profile" failures in the nightly
    MERGED from commit 634fb8d
    simonmar committed with pcapriotti May 23, 2012
Commits on Jun 1, 2012
  1. Update ANNOUNCE for 7.4.1

    igfoo committed Jun 1, 2012
Commits on May 30, 2012
  1. MERGE: Be less aggressive about the result discount

    Merge of:
        commit 4fa3f16
        Author: Simon Peyton Jones <>
        Date:   Mon May 28 17:33:42 2012 +0100
    Be less aggressive about the result discount
    This patch fixes Trac #6099 by reducing the result discount in CoreUnfold.conSize.
    See Note [Constructor size and result discount] in CoreUnfold.
    The existing version is definitely too aggressive. Simon M found it an
    "unambiguous win" but it is definitely what led to the bloat. In a function
    with a lot of case branches, all returning a constructor, the discount could
    grow arbitrarily large.
    I also had to increase the -funfolding-creation-threshold from 450 to 750,
    otherwise some functions that should inline simply never get an unfolding.
    (The massive result discount was allow the unfolding to appear before.)
    The nofib results are these, picking a handful of outliers to show.
            Program           Size    Allocs   Runtime   Elapsed  TotalMem
             fulsom          -0.5%     -1.6%     -2.8%     -2.6%    +31.1%
           maillist          -0.2%     -0.0%      0.09      0.09     -3.7%
             mandel          -0.4%     +6.6%      0.12      0.12     +0.0%
           nucleic2          -0.2%    +18.5%      0.11      0.11     +0.0%
            parstof          -0.4%     +4.0%      0.00      0.00     +0.0%
                Min          -0.9%     -1.6%    -19.7%    -19.7%     -3.7%
                Max          +0.3%    +18.5%     +2.7%     +2.7%    +31.1%
     Geometric Mean          -0.3%     +0.4%     -3.0%     -3.0%     +0.2%
    Turns out that nucleic2 has a function
      Main.$wabsolute_pos =
        \ (ww_s4oj :: Types.Tfo) (ww1_s4oo :: Types.FloatT)
          (ww2_s4op :: Types.FloatT) (ww3_s4oq :: Types.FloatT) ->
          case ww_s4oj
          of _
          { Types.Tfo a_a1sS b_a1sT c_a1sU d_a1sV e_a1sW f_a1sX g_a1sY h_a1sZ i_a1t0 tx_a1t1 ty_a1t2 tz_a1t3 ->
          (# case ww1_s4oo of _ { GHC.Types.F# x_a2sO ->
             case a_a1sS of _ { GHC.Types.F# y_a2sS ->
             case ww2_s4op of _ { GHC.Types.F# x1_X2y9 ->
             case d_a1sV of _ { GHC.Types.F# y1_X2yh ->
             case ww3_s4oq of _ { GHC.Types.F# x2_X2yj ->
             case g_a1sY of _ { GHC.Types.F# y2_X2yr ->
             case tx_a1t1 of _ { GHC.Types.F# y3_X2yn ->
                        (GHC.Prim.timesFloat# x_a2sO y_a2sS)
                        (GHC.Prim.timesFloat# x1_X2y9 y1_X2yh))
                     (GHC.Prim.timesFloat# x2_X2yj y2_X2yr))
             } } }}}}},
            <similar> )
    This is pretty big, but inlining it does get rid of that F# allocation.
    But we'll also get rid of it with deep CPR: Trac #2289. For now we just
    accept the change.
    igfoo committed May 30, 2012
Commits on May 16, 2012
  1. Update 7.4.2 release notes.

    pcapriotti committed May 16, 2012
Commits on May 8, 2012
  1. Build fix.

    pcapriotti committed May 8, 2012
  2. Catch illegal imports earlier (#6007)

    MERGED from commit b6e2826
    simonmar committed with pcapriotti Apr 27, 2012
  3. hs_init(): cope with argc and/or argv being NULL (#6006)

    MERGED from commit 4ca2818
    simonmar committed with pcapriotti Apr 27, 2012
  4. Cast memory primops in the C backend (#5976)

    To prevent conflicts with GCC builtins, generate identical code for
    calls to mem primos and FFI calls.
    Based on a patch by Joachim Breitner.
    MERGED from commit 40c1106
    pcapriotti committed May 2, 2012
Commits on May 3, 2012
  1. Omit -osuf/-odir -hisuf/-hidir and -stubdir from the flag checker

    The reasoning is that GHC will only skip recompilation if it has found
    a valid up-to-date object file and .hi file, so there is no need to
    also check that these flags have not changed, and indeed there are
    valid reasons to want to change them.
    simonmar committed with igfoo Feb 28, 2012
  2. Compile link .note section separately from main.c

    Fixes gas errors when -g is enabled:
    Error: can't resolve `.debug-ghc-link-info' {.debug-ghc-link-info section} - `.Ltext0' {.text section}
    NathanHowell committed with igfoo Feb 15, 2012
Commits on Apr 27, 2012
  1. Doc: updated list of warnings not enabled by -Wall (#4817)

    MERGED from commit 18c2a2f
    pcapriotti committed Apr 27, 2012
  2. Flags documentation: -fwarn-unrecognized-pragmas is enabled by -Wall …

    MERGED from commit 44098b3
    pcapriotti committed Apr 27, 2012
Commits on Apr 26, 2012
  1. Fix worker/wrapper for CPR functions

    A long-standing and egregious bug in the worker/wrapper code meant
    that some functions with the CPR property weren't getting a CPR
    w/w. And that had the effect of making a tail-recursive function not
    tail recursive.  As well as increasing allocation.
    Fixes Trac #5920, and #5997.
    Nofib results (highlights):
            Program           Size    Allocs   Runtime   Elapsed  TotalMem
             boyer2          -0.1%    -15.3%      0.01      0.01     +0.0%
            mandel2          -0.0%     -8.1%      0.01      0.01     +0.0%
               para          -0.1%    -11.8%     -7.9%     -7.8%     +0.0%
                Min          -0.1%    -15.3%     -7.9%     -7.8%    -33.3%
                Max          +0.0%     +0.2%     +6.3%     +6.3%     +3.7%
     Geometric Mean          -0.0%     -0.4%     +0.1%     +0.1%     -0.5%
    Looks like a clear win.  And I have not even recompiled the libraries, so
    it'll probably be a bit better in the ed.
    MERGED from commit b8ff444
    simonpj committed with pcapriotti Apr 13, 2012
Commits on Apr 16, 2012
  1. Update 7.4.2 release notes.

    pcapriotti committed Apr 16, 2012
Commits on Apr 12, 2012
  1. Fix crash with tiny initial stack size (#5993)

    MERGED from commit 5eabdc1
    simonmar committed with pcapriotti Apr 12, 2012
  2. Fix a #define

    I don't think it was causing any problems, but
    would have evaluated to
        x + (y / 1000)
    MERGED from commit 54121ff
    On the 7.4 branch, this was causing a wrong conversion in
    Signed-off-by: Paolo Capriotti <>
    igfoo committed with pcapriotti Jan 15, 2012
  3. Disable the timer signal while blocked in select() (#5991)

    The threaded RTS had a fix for this a long time ago (#1623) but this
    patch applies a similar fix to the non-threaded RTS.
    MERGED from commit dd24d6b
    simonmar committed with pcapriotti Apr 11, 2012
  4. Improve the handling of threadDelay in the non-threaded RTS

    Firstly, we were rounding up too much, such that the smallest delay
    was 20ms.  Secondly, there is no need to use millisecond resolution on
    a 64-bit machine where we have room in the TSO to use the normal
    nanosecond resolution that we use elsewhere in the RTS.
    MERGED from commit 9d26519
    simonmar committed with pcapriotti Apr 11, 2012
Commits on Apr 6, 2012
  1. Fix GHC API with respect to safe haskell. (#5989)

    This fixes haddock so it correctly reports
    the safe haskell mode of a module.
    David Terei committed with pcapriotti Apr 3, 2012
  2. Update safe haskell error/warn formatting

    David Terei committed with pcapriotti Apr 3, 2012