1. 21 Jan, 2017 1 commit
    • niteria's avatar
      Always use -Xlinker for -rpath · f9ccad23
      niteria authored
      Currently we use `-Wl` which takes a list of
      comma-separated options. Unfortunately that
      breaks when you use it with `-rpath` and
      a path that has commas in them.
      Buck, the build system, produces paths with
      commas in them.
      
      `-Xlinker` doesn't have this disadvantage
      and as far as I can tell is supported by
      both `gcc` and `clang`. Anecdotally `nvcc`
      supports `-Xlinker`, but not `-Wl`.
      
      Test Plan: ./validate, harbourmaster
      
      Reviewers: nomeata, simonmar, austin, bgamari, hvr
      
      Reviewed By: simonmar, bgamari
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D2971
      f9ccad23
  2. 20 Jan, 2017 12 commits
    • Yuras's avatar
      Warn on missing home modules · 15b9a85e
      Yuras authored
      Introduce a warning, -Wmissing-home-modules, to warn about home modules,
      not listed in command line.
      
      It is usefull for cabal when user fails to list a module in
      `exposed-modules` and `other-modules`.
      
      Test Plan: make TEST=MissingMod
      
      Reviewers: mpickering, austin, bgamari
      
      Reviewed By: bgamari
      
      Subscribers: simonpj, mpickering, thomie
      
      Differential Revision: https://phabricator.haskell.org/D2977
      
      GHC Trac Issues: #13129
      15b9a85e
    • dobenour's avatar
      Clean up some shell code and M4 quoting · c43011da
      dobenour authored
      
      Test Plan: GHC CI
      
      Reviewers: austin, hvr, bgamari
      
      Reviewed By: bgamari
      
      Subscribers: thomie, erikd
      
      Differential Revision: https://phabricator.haskell.org/D2993
      c43011da
    • rwbarton's avatar
      testsuite: Don't fail if "target has RTS linker" field is missing · b626a001
      rwbarton authored
      Test Plan: harbormaster
      
      Reviewers: austin, bgamari
      
      Reviewed By: bgamari
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D2991
      b626a001
    • rwbarton's avatar
      Add a failing test for #13099 · b4761317
      rwbarton authored
      Reviewers: austin, bgamari
      
      Reviewed By: bgamari
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D2990
      
      GHC Trac Issues: #13099
      b4761317
    • Phil de Joux's avatar
      Show explicit quantifiers in conflicting definitions error · 33140f41
      Phil de Joux authored
      This fixes #12441, where definitions in a Haskell module and its boot
      file which differed only in their quantifiers produced a confusing error
      message. Here we teach GHC to always show quantifiers for these errors.
      
      Reviewers: goldfire, simonmar, erikd, austin, hvr, bgamari
      
      Reviewed By: bgamari
      
      Subscribers: snowleopard, simonpj, mpickering, thomie
      
      Differential Revision: https://phabricator.haskell.org/D2734
      
      GHC Trac Issues: #12441
      33140f41
    • takano-akio's avatar
      Allow top-level string literals in Core (#8472) · d49b2bb2
      takano-akio authored
      This commits relaxes the invariants of the Core syntax so that a
      top-level variable can be bound to a primitive string literal of type
      Addr#.
      
      This commit:
      
      * Relaxes the invatiants of the Core, and allows top-level bindings whose
        type is Addr# as long as their RHS is either a primitive string literal or
        another variable.
      
      * Allows the simplifier and the full-laziness transformer to float out
        primitive string literals to the top leve.
      
      * Introduces the new StgGenTopBinding type to accomodate top-level Addr#
        bindings.
      
      * Introduces a new type of labels in the object code, with the suffix "_bytes",
        for exported top-level Addr# bindings.
      
      * Makes some built-in rules more robust. This was necessary to keep them
        functional after the above changes.
      
      This is a continuation of D2554.
      
      Rebasing notes:
      This had two slightly suspicious performance regressions:
      
      * T12425: bytes allocated regressed by roughly 5%
      * T4029: bytes allocated regressed by a bit over 1%
      * T13035: bytes allocated regressed by a bit over 5%
      
      These deserve additional investigation.
      
      Rebased by: bgamari.
      
      Test Plan: ./validate --slow
      
      Reviewers: goldfire, trofi, simonmar, simonpj, austin, hvr, bgamari
      
      Reviewed By: trofi, simonpj, bgamari
      
      Subscribers: trofi, simonpj, gridaphobe, thomie
      
      Differential Revision: https://phabricator.haskell.org/D2605
      
      GHC Trac Issues: #8472
      d49b2bb2
    • Ben Gamari's avatar
      Bump Cabal submodule · a2a67b77
      Ben Gamari authored
      a2a67b77
    • Oleg Grenrus's avatar
      Add 'type family (m :: Symbol) <> (n :: Symbol)' · 7026edc3
      Oleg Grenrus authored
      Reviewers: dfeuer, austin, bgamari, hvr
      
      Subscribers: dfeuer, mpickering, RyanGlScott, ekmett, yav, lelf,
      simonpj, thomie
      
      Differential Revision: https://phabricator.haskell.org/D2632
      
      GHC Trac Issues: #12162
      7026edc3
    • rwbarton's avatar
    • Simon Peyton Jones's avatar
      Test Trac #11444 · b8f1b018
      Simon Peyton Jones authored
      b8f1b018
    • Simon Peyton Jones's avatar
      Simplify and improve CSE · b78fa759
      Simon Peyton Jones authored
      Trac #13156 showed a lost opportunity for CSE. I found that it was
      easy to fix, and it had the nice side effect of rendering a previous
      nasty case, described in Note [Corner case for case expressions],
      unnecessary.
      
      Simpler code, does more.  Great.
      b78fa759
    • Simon Peyton Jones's avatar
      Fix a nasty bug in exprIsExpandable · 9be18ea4
      Simon Peyton Jones authored
      This bug has been lurking for ages: Trac #13155
      
      The important semantic change is to ensure that exprIsExpandable
      returns False for primop calls.  Previously exprIsExpandable used
      exprIsCheap' which always used primOpIsCheap.
      
      I took the opportunity to combine the code for exprIsCheap' (two
      variants: exprIsCheap and exprIsExpandable) with that for
      exprIsWorkFree.  Result is simpler, tighter, easier to understand.
      And correct (at least wrt this bug)!
      9be18ea4
  3. 19 Jan, 2017 4 commits
    • David Feuer's avatar
      Add explicit foldMap implementation for Maybe · bf1e1f32
      David Feuer authored
      Eric Mertens pointed out that using the default `foldMap`
      implementation for `Maybe` led to an efficiency problem by
      implementing `foldMap f (Just x)` as `f x <> mempty` rather than
      as `f x`. This should solve the problem.
      
      Reviewers: hvr, austin, bgamari
      
      Reviewed By: bgamari
      
      Subscribers: glguy, thomie
      
      Differential Revision: https://phabricator.haskell.org/D2988
      bf1e1f32
    • dobenour's avatar
      Don't error on missing Perl, just warn and disable object splitting. · f07a6c17
      dobenour authored
      Summary:
      If Perl isn't needed, we don't need to error out.  Since all Perl is
      used for is the splitter, we can just warn.
      
      Test Plan: GHC CI
      
      Reviewers: bgamari, hvr, austin
      
      Reviewed By: bgamari
      
      Subscribers: thomie, erikd
      
      Differential Revision: https://phabricator.haskell.org/D2986
      
      GHC Trac Issues: #13141
      f07a6c17
    • Ryan Scott's avatar
      Fix the GHC 7.10 build · f5bea982
      Ryan Scott authored
      Following e7985ed2. HasDebugCallStack now
      appears in IdInfo, which requires `FlexibleContexts` to be enabled when built
      with GHC 7.10.
      f5bea982
    • Richard Eisenberg's avatar
      Update levity polymorphism · e7985ed2
      Richard Eisenberg authored
      This commit implements the proposal in
      https://github.com/ghc-proposals/ghc-proposals/pull/29 and
      https://github.com/ghc-proposals/ghc-proposals/pull/35.
      
      Here are some of the pieces of that proposal:
      
      * Some of RuntimeRep's constructors have been shortened.
      
      * TupleRep and SumRep are now parameterized over a list of RuntimeReps.
      * This
      means that two types with the same kind surely have the same
      representation.
      Previously, all unboxed tuples had the same kind, and thus the fact
      above was
      false.
      
      * RepType.typePrimRep and friends now return a *list* of PrimReps. These
      functions can now work successfully on unboxed tuples. This change is
      necessary because we allow abstraction over unboxed tuple types and so
      cannot
      always handle unboxed tuples specially as we did before.
      
      * We sometimes have to create an Id from a PrimRep. I thus split PtrRep
      * into
      LiftedRep and UnliftedRep, so that the created Ids have the right
      strictness.
      
      * The RepType.RepType type was removed, as it didn't seem to help with
      * much.
      
      * The RepType.repType function is also removed, in favor of typePrimRep.
      
      * I have waffled a good deal on whether or not to keep VoidRep in
      TyCon.PrimRep. In the end, I decided to keep it there. PrimRep is *not*
      represented in RuntimeRep, and typePrimRep will never return a list
      including
      VoidRep. But it's handy to have in, e.g., ByteCodeGen and friends. I can
      imagine another design choice where we have a PrimRepV type that is
      PrimRep
      with an extra constructor. That seemed to be a heavier design, though,
      and I'm
      not sure what the benefit would be.
      
      * The last, unused vestiges of # (unliftedTypeKind) have been removed.
      
      * There were several pretty-printing bugs that this change exposed;
      * these are fixed.
      
      * We previously checked for levity polymorphism in the types of binders.
      * But we
      also must exclude levity polymorphism in function arguments. This is
      hard to check
      for, requiring a good deal of care in the desugarer. See Note [Levity
      polymorphism
      checking] in DsMonad.
      
      * In order to efficiently check for levity polymorphism in functions, it
      * was necessary
      to add a new bit of IdInfo. See Note [Levity info] in IdInfo.
      
      * It is now safe for unlifted types to be unsaturated in Core. Core Lint
      * is updated
      accordingly.
      
      * We can only know strictness after zonking, so several checks around
      * strictness
      in the type-checker (checkStrictBinds, the check for unlifted variables
      under a ~
      pattern) have been moved to the desugarer.
      
      * Along the way, I improved the treatment of unlifted vs. banged
      * bindings. See
      Note [Strict binds checks] in DsBinds and #13075.
      
      * Now that we print type-checked source, we must be careful to print
      * ConLikes correctly.
      This is facilitated by a new HsConLikeOut constructor to HsExpr.
      Particularly troublesome
      are unlifted pattern synonyms that get an extra void# argument.
      
      * Includes a submodule update for haddock, getting rid of #.
      
      * New testcases:
        typecheck/should_fail/StrictBinds
        typecheck/should_fail/T12973
        typecheck/should_run/StrictPats
        typecheck/should_run/T12809
        typecheck/should_fail/T13105
        patsyn/should_fail/UnliftedPSBind
        typecheck/should_fail/LevPolyBounded
        typecheck/should_compile/T12987
        typecheck/should_compile/T11736
      
      * Fixed tickets:
        #12809
        #12973
        #11736
        #13075
        #12987
      
      * This also adds a test case for #13105. This test case is
      * "compile_fail" and
      succeeds, because I want the testsuite to monitor the error message.
      When #13105 is fixed, the test case will compile cleanly.
      e7985ed2
  4. 18 Jan, 2017 8 commits
  5. 17 Jan, 2017 10 commits
    • Yuras's avatar
      Unbreak build with ghc-7.10.1 · 2b61f52a
      Yuras authored
      Test Plan: build with ghc-7.10.1
      
      Reviewers: austin, bgamari, dfeuer
      
      Reviewed By: dfeuer
      
      Subscribers: dfeuer, thomie
      
      Differential Revision: https://phabricator.haskell.org/D2976
      
      GHC Trac Issues: #13120
      2b61f52a
    • David Feuer's avatar
      Split mkInlineUnfolding into two functions · d360ec39
      David Feuer authored
      Previously, `mkInlineUnfolding` took a `Maybe` argument indicating
      whether the caller requested a specific arity.  This was not
      self-documenting at call sites. Now we distinguish between
      `mkInlineUnfolding` and `mkInlineUnfoldingWithArity`.
      
      Reviewers: simonpj, austin, bgamari
      
      Reviewed By: simonpj, bgamari
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D2933
      d360ec39
    • Rufflewind's avatar
      Unquote ‘import’ in bad import error message · e195add1
      Rufflewind authored
          In module ‘Prelude’:
            ‘True’ is a data constructor of ‘Bool’
          To import it use
            ‘import’ Prelude( Bool( True ) )
      
      The quotes around `import` don't make any sense.
      
      Test Plan: manual
      
      Reviewers: austin, mpickering, bgamari
      
      Reviewed By: mpickering, bgamari
      
      Subscribers: dfeuer, thomie
      
      Differential Revision: https://phabricator.haskell.org/D2935
      e195add1
    • Ben Gamari's avatar
      event manager: Don't worry if attempt to wake dead manager fails · d5cd505b
      Ben Gamari authored
      This fixes #12038, where the TimerManager would attempt to wake up a
      manager that was already dead, resulting in setnumcapabilities001
      occassionally failing during shutdown with unexpected output on stderr.
      
      I'm frankly still not entirely confident in this solution but perhaps it
      will help to get a few more eyes on this.
      
      My hypothesis is that the TimerManager is racing:
      
        thread                   TimerManager worker
        -------                  --------------------
        requests that thread
        manager shuts down
      
                                 begins to clean up,
                                 closing eventfd
      
        calls wakeManager,
        which tries to write
        to closed eventfd
      
      To prevent this `wakeManager` will need to synchronize with the
      TimerManger worker to ensure that the worker doesn't clean up the
      `Control` while another thread is trying to send a wakeup. However, this
      would add a bit of overhead on every timer interaction, which feels
      rather costly for what is really a problem only at shutdown.  Moreover,
      it seems that the event manager (e.g.  `GHC.Event.Manager`) is also
      afflicted by a similar race.
      
      This patch instead simply tries to catch the write failure after it has
      happened and silence it in the case that the fd has vanished. It feels
      rather hacky but it seems to work.
      
      Test Plan: Run `setnumcapabilities001` repeatedly
      
      Reviewers: hvr, austin, simonmar
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D2957
      
      GHC Trac Issues: #12038
      d5cd505b
    • Simon Marlow's avatar
      Some 8.2.1 release notes for my stuff · e7e5f7ac
      Simon Marlow authored
      Test Plan: Built it and looked at it
      
      Reviewers: niteria, erikd, dfeuer, austin, hvr, bgamari
      
      Reviewed By: bgamari
      
      Subscribers: dfeuer, thomie, erikd
      
      Differential Revision: https://phabricator.haskell.org/D2959
      e7e5f7ac
    • Ben Gamari's avatar
      testsuite: Bump allocations for T12234 · 19cc0071
      Ben Gamari authored
      Unfortunately it's not clear why but this has been failing on Harbormaster.
      19cc0071
    • Ben Gamari's avatar
      Bitmap: Use foldl' instead of foldr · b1726c11
      Ben Gamari authored
      These are producing StgWords so foldl' is the natural choice. I'm not
      sure how I didn't notice this when I wrote D1041.
      
      Test Plan: Validate
      
      Reviewers: austin, simonmar
      
      Reviewed By: simonmar
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D2955
      
      GHC Trac Issues: #7450
      b1726c11
    • Ben Gamari's avatar
      testsuite/recomp001: Sleep to ensure that GHC notices file change · 769e3ee7
      Ben Gamari authored
      Some operating systems (e.g. Darwin) have very poor file timestamp
      resolution.  On these systems GHC often fails to notice that B.hs
      changes in this testsuite, leading to sporatic test failures. Add a
      sleep to ensure the change is noticed.
      
      Test Plan: Validate
      
      Reviewers: ezyang, austin
      
      Subscribers: mpickering, gracjan, thomie
      
      Differential Revision: https://phabricator.haskell.org/D2964
      769e3ee7
    • Alan Zimmerman's avatar
      Fix API Annotations for unboxed sums · 38f289fa
      Alan Zimmerman authored
      An unboxed tuple such as
      
          (# | b | | | | | #)
      
      Ends up in the parser via `tup_exprs` as
      
          Sum 2 7 lexp
      
      where `lexp` is a `LHsExpr`
      
      From an API annotation perspective, the 5 `AnnVbar`s after the `b` were attached
      to `lexp`, but the leading `AnnVbar`s did not have a home.
      
      This patch attaches them all to the the parent tuple expression. The first (alt
      - 1) of them come before `lexp`, and the remaining (arity - alt) come after.
      
      Test Plan: ./validate
      
      Reviewers: osa1, austin, bgamari
      
      Subscribers: thomie, mpickering
      
      Differential Revision: https://phabricator.haskell.org/D2968
      
      GHC Trac Issues: #12417
      38f289fa
    • Gabor Greif's avatar
      Typos in manual and comments [ci skip] · 715be013
      Gabor Greif authored
      715be013
  6. 16 Jan, 2017 4 commits
    • Simon Peyton Jones's avatar
      Comments about TyBinders (only) · 563d64fd
      Simon Peyton Jones authored
      563d64fd
    • Simon Peyton Jones's avatar
      Refine exprOkForSpeculation · 5a9a1738
      Simon Peyton Jones authored
      This patch implements two related changes, both inspired by
      the discussion on Trac #13027, comment:23:
      
      * exprOkForSpeculation (op# a1 .. an), where op# is a primop,
        now skips over arguments ai of lifted type.  See the comments
        at Note [Primops with lifted arguments] in CoreUtils.
      
        There is no need to treat dataToTag# specially any more.
      
      * dataToTag# is now treated as a can-fail primop.  See
        Note [dataToTag#] in primops.txt.pp
      
      I don't expect this to have a visible effect on anything, but
      it's much more solid than before.
      5a9a1738
    • Tamar Christina's avatar
      Unbreak libGHCi by adding missing symbol. · be792890
      Tamar Christina authored
      Summary:
      Someone committed a new public symbol `purgeObj` again
      without adding it to the symbols table.
      
      Test Plan: ./validate
      
      Reviewers: austin, bgamari, simonmar, erikd
      
      Reviewed By: erikd
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D2980
      be792890
    • Tamar Christina's avatar
      Add missing test files for T13082. · 4bfe3d4d
      Tamar Christina authored
      Summary:
      Add two missing test files for T13082.
      The reason they were missing is because the .gitignore
      contains a very harmful and broad wildcard `foo*`. Why?
      
      Test Plan: make test TEST="T13082_good T13082_fail"
      
      Reviewers: austin, bgamari, simonmar, erikd
      
      Reviewed By: erikd
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D2981
      
      GHC Trac Issues: #13082
      4bfe3d4d
  7. 15 Jan, 2017 1 commit