1. 04 Feb, 2017 1 commit
    • Takenobu Tani's avatar
      Fix comment (old file names) in includes/ · 9984024a
      Takenobu Tani authored
      [skip ci]
      There ware some old file names (.lhs, ...) at comments.
      * includes/rts/Bytecodes.h
        - ghc/compiler/ghci/ByteCodeGen.lhs -> ByteCodeAsm.hs
      * includes/rts/Constants.h
        - libraries/base/GHC/Conc.lhs -> libraries/base/GHC/Conc/Sync.hs
      * includes/rts/storage/FunTypes.h
        - utils/genapply/GenApply.hs -> utils/genappl/Main.hs
        - compiler/codeGen/CgCallConv.lhs -> compiler/codeGen/StgCmmLayout.hs
      * includes/stg/MiscClosures.h
        - compiler/codeGen/CgStackery.lhs -> compiler/codeGen/StgCmmArgRep.hs
        - HeapStackCheck.hc  -> HeapStackCheck.cmm
      Reviewers: bgamari, austin, simonmar, erikd
      Reviewed By: erikd
      Subscribers: thomie
      Differential Revision: https://phabricator.haskell.org/D3074
  2. 03 Feb, 2017 6 commits
    • David Feuer's avatar
      Attempt to make lazy ST thread safe · 2f5cb3d4
      David Feuer authored
      Use `noDuplicate#` to prevent lazy `ST` thunks from
      being evaluated in multiple GHC threads.
      Some lazy `ST` functions added laziness that did not seem to be useful
      creating lazy pairs that will never be matched unless one of their
      is demanded). Stripped that out.
      Reviewers: ekmett, simonpj, bgamari, simonmar, austin, hvr
      Subscribers: rwbarton, thomie
      Differential Revision: https://phabricator.haskell.org/D3038
      GHC Trac Issues: #11760
    • Simon Peyton Jones's avatar
      Use tyCoVarsOfType for CTyEqCan in shouldSplitWD · afa409fa
      Simon Peyton Jones authored
      An ASSERT failure in rewritableTyVars made me realise
      that there was an outright bug in shouldSplitWD.  See
      the long Note [Splitting WD constraints].
    • Joachim Breitner's avatar
      Bump performance mark for T9020 · c2becee4
      Joachim Breitner authored
      according to the graph at perf.haskell.org, it has regressed due to join
      points, which moved it very very close to the +10% mark and hence made it
      fail just sometimes.
    • Joachim Breitner's avatar
      Get rid of ProbOneShot · 09b8332d
      Joachim Breitner authored
      This fixes #13227. It remains to be seen what the performance impacts
      are. Pushing as a branch to get perf.haskell.org answer that for us.
      Differential Revision: https://phabricator.haskell.org/D3067
    • Sylvain Henry's avatar
      Ditch static flags · bbd3c399
      Sylvain Henry authored
      This patch converts the 4 lasting static flags (read from the command
      line and unsafely stored in immutable global variables) into dynamic
      flags. Most use cases have been converted into reading them from a DynFlags.
      In cases for which we don't have easy access to a DynFlags, we read from
      'unsafeGlobalDynFlags' that is set at the beginning of each 'runGhc'.
      It's not perfect (not thread-safe) but it is still better as we can
      set/unset these 4 flags before each run when using GHC API.
      Updates haddock submodule.
      Rebased and finished by: bgamari
      Test Plan: validate
      Reviewers: goldfire, erikd, hvr, austin, simonmar, bgamari
      Reviewed By: simonmar
      Subscribers: thomie
      Differential Revision: https://phabricator.haskell.org/D2839
      GHC Trac Issues: #8440
    • Ben Gamari's avatar
  3. 02 Feb, 2017 10 commits
  4. 01 Feb, 2017 6 commits
  5. 31 Jan, 2017 9 commits
    • Ben Gamari's avatar
      Export callStackDoc · 25e0cfc6
      Ben Gamari authored
      It's generally a pretty useful thing to have around.
      [skip ci]
      Test Plan: Build it
      Reviewers: austin, dfeuer
      Reviewed By: dfeuer
      Subscribers: dfeuer, thomie
      Differential Revision: https://phabricator.haskell.org/D3048
    • Takenobu Tani's avatar
      user-guide: fix links and file names (fixes #13198) · b15136af
      Takenobu Tani authored
      There are some incorrect links and file names in GHC user's guide.
        * docs/users_guide/glasgow_exts.rst
          - GHC/Base.lhs
          - GHC/List.lhs
        * docs/users_guide/ffi-chap.rst
          - :base-ref:`Foreign`
          - :base-ref:`Control.Concurrent`
      I fixed them.
      Reviewers: austin, bgamari
      Reviewed By: bgamari
      Subscribers: thomie
      Differential Revision: https://phabricator.haskell.org/D3035
      GHC Trac Issues: #13198
    • alexbiehl's avatar
      Abstract over the way eventlogs are flushed · 4dfc6d1c
      alexbiehl authored
      Currently eventlog data is always written to a file `progname.eventlog`.
      This patch introduces the `flushEventLog` field in `RtsConfig` which
      allows to customize the writing of eventlog data.
      One possible scenario is the ongoing live-profile-monitor effort by
      @NCrashed which slurps all eventlog data through `fluchEventLog`.
      `flushEventLog` takes a buffer with eventlog data and its size and
      returns `false` (0) in case eventlog data could not be procesed.
      Reviewers: simonmar, austin, erikd, bgamari
      Reviewed By: simonmar, bgamari
      Subscribers: qnikst, thomie, NCrashed
      Differential Revision: https://phabricator.haskell.org/D2934
    • Ben Gamari's avatar
      FloatOut: Allow floating through breakpoint ticks · 44f079f7
      Ben Gamari authored
      I believe this is actually a completely valid thing to do, despite the
      arguments put forth in #10052. All that was missing was logic in
      SetLevels to correctly substitute the cloned binders into the
      breakpoint's free variable list.
      This is a prerequisite for enabling StaticPointer support in the
      Test Plan: Validate
      Reviewers: austin, scpmw
      Subscribers: thomie
      Differential Revision: https://phabricator.haskell.org/D3049
    • Ben Gamari's avatar
    • Ben Gamari's avatar
    • David Feuer's avatar
      Mark reallyUnsafePtrEquality# as can_fail · b3576ed2
      David Feuer authored
      As described in the note, floating `reallyUnsafePtrEquality#`
      out can make it much less precise. Marking it `can_fail` will
      prevent it from floating out, which I believe is particularly
      important in light of 5a9a1738,
      and should also help prevent let/app invariant failures as seen
      in #11444 and #13027.
      Reviewers: simonpj, austin, bgamari
      Subscribers: thomie
      Differential Revision: https://phabricator.haskell.org/D2987
      GHC Trac Issues: #13027, #11444
    • Daniel Haraj's avatar
      Use top-level instances to solve superclasses where possible · 748b7974
      Daniel Haraj authored
      This patch introduces a new flag `-fsolve-constant-dicts` which makes the
      constraint solver solve super class constraints with available dictionaries if
      possible. The flag is enabled by `-O1`.
      The motivation of this patch is that the compiler can produce more efficient
      code if the constraint solver used top-level instance declarations to solve
      constraints that are currently solved givens and their superclasses. In
      particular, as it currently stands, the compiler imposes a performance penalty
      on the common use-case where superclasses are bundled together for user
      convenience. The performance penalty applies to constraint synonyms as
      well. This example illustrates the issue:
      {-# LANGUAGE ConstraintKinds, MultiParamTypeClasses, FlexibleContexts #-}
      module B where
      class M a b where m :: a -> b
      type C a b = (Num a, M a b)
      f :: C Int b => b -> Int -> Int
      f _ x = x + 1
      Output without the patch, notice that we get the instance for `Num Int` by
      using the class selector `p1`.
      f :: forall b_arz. C Int b_arz => b_arz -> Int -> Int
      f =
        \ (@ b_a1EB) ($d(%,%)_a1EC :: C Int b_a1EB) _ (eta1_B1 :: Int) ->
          + @ Int
            (GHC.Classes.$p1(%,%) @ (Num Int) @ (M Int b_a1EB) $d(%,%)_a1EC)
      Output with the patch, nicely optimised code!
      f :: forall b. C Int b => b -> Int -> Int
      f =
        \ (@ b) _ _ (x_azg :: Int) ->
          case x_azg of { GHC.Types.I# x1_a1DP ->
          GHC.Types.I# (GHC.Prim.+# x1_a1DP 1#)
      Reviewers: simonpj, bgamari, austin
      Reviewed By: simonpj
      Subscribers: mpickering, rwbarton, thomie
      Differential Revision: https://phabricator.haskell.org/D2714
      GHC Trac Issues: #12791, #5835
    • alexbiehl's avatar
      Fix binary instance for SrcStrictness · c71f0c4e
      alexbiehl authored
      Summary: Found while revisiting the binary serialization for interface files.
      Test Plan: Building and validating currently
      Reviewers: austin, bgamari, mpickering
      Reviewed By: mpickering
      Subscribers: mpickering, thomie
      Differential Revision: https://phabricator.haskell.org/D3050
  6. 30 Jan, 2017 8 commits
    • rwbarton's avatar
      Turn libraries/integer-gmp/gmp/tarball into a submodule · 32729d35
      rwbarton authored
      The submodule repository contains the latest version of the GMP source
      distribution (6.1.2) with the doc/ subdirectory removed, as described
      in gmp/ghc.mk. Rather than applying the old patch from gmp/tarball/patch
      I moved its contents into gmp/gmpsrc.patch, canceling a patch related to
      memory management there. Experimentally, the PIC-related patch for OS X
      is still necessary.
      The upgrade to GMP 6.1.2 fixes #7655.
      Test Plan:
      Built on OS X with in-tree gmp and tested that the command
      `ghc -e 'length (show (2^(5*10^6) :: Integer))'` no longer segfaults.
      Reviewers: mpickering, hvr, austin, bgamari
      Reviewed By: bgamari
      Subscribers: mpickering, thomie
      Differential Revision: https://phabricator.haskell.org/D3044
      GHC Trac Issues: #7655
    • Takenobu Tani's avatar
      Fix minor typo in README.md · e9a239ce
      Takenobu Tani authored
      Reviewers: austin, bgamari
      Reviewed By: bgamari
      Subscribers: thomie
      Differential Revision: https://phabricator.haskell.org/D3040
    • Takenobu Tani's avatar
      Fix links to building guides in MAKEHELP.md · 9af1fb28
      Takenobu Tani authored
      MAKEHELP.md has an old link to 'Building/Hacking'.  I updated it to
      suitable links for new contributors.
      Reviewers: austin, bgamari
      Reviewed By: bgamari
      Subscribers: thomie
      Differential Revision: https://phabricator.haskell.org/D3039
    • rwbarton's avatar
      Simplify minusInteger in integer-gmp slightly · f984bf2e
      rwbarton authored
      These two special cases were created in D2278 by mechanically
      inlining negateInteger into plusInteger. They aren't needed
      (the `minusInteger (S# x#) (S# y#)` case already handles all values
      correctly), and they can never help by avoiding an allocation,
      unlike the original special case in plusInteger, since we still
      have to allocate the result.
      Removing these special cases will save a couple comparisons and
      conditional branches in the common case of subtracting two small
      Test Plan:
      Existing test `plusMinusInteger` already tests
      the values in question.
      Reviewers: bgamari, goldfire, austin, hvr
      Reviewed By: bgamari, hvr
      Subscribers: thomie
      Differential Revision: https://phabricator.haskell.org/D3034
    • Matthew Pickering's avatar
      Print COMPLETE pragmas in --show-iface · 5f8e2344
      Matthew Pickering authored
      Reviewers: austin, bgamari
      Reviewed By: bgamari
      Subscribers: thomie
      Differential Revision: https://phabricator.haskell.org/D3032
    • Tamar Christina's avatar
      Slighly clean up symbol loading error. · f41c27d3
      Tamar Christina authored
      The symbol not found error that is triggered
      during lazy-loading was a bit chaotic before.
      This reformats it a bit to:
      ghc-stage2.exe:  | E:\...\libLLVMSupport.a: unknown symbol `_ZN4llvm5APIntC1Ejyb'
      ghc-stage2.exe:  | E:\...\libLLVMCore.a: unknown symbol `_ZN4llvm5APInt14AssignSlowCaseERKS0_'
      ghc-stage2.exe:  | E:\...\libLLVMCore.a: unknown symbol `_ZN4llvm13ConstantRangeC1ENS_5APIntES1_'
      ghc-stage2.exe:  | E:\...\libLLVMCore.a: unknown symbol `_ZN4llvm14FoldingSetImplC2Ej'
      ghc-stage2.exe:  | E:\...\libLLVMCore.a: unknown symbol `_ZN4llvm15LLVMContextImplD1Ev'
      ghc-stage2.exe:  | E:\...\libLLVMLTO.a: unknown symbol `_ZN4llvm11LLVMContextD1Ev'
      ghc-stage2.exe:  | E:\...\libLLVMCore.a: unknown symbol `_ZNK4llvm5Value10getContextEv'
      ghc-stage2.exe: ^^ Could not load 'LLVMIsMultithreaded', dependency unresolved.
      See top entry above.
      I have also thought about also showing the demangled names, as it may
      be useful for the end user.
      `libgcc` seems to provide a method for this so we wouldn't need any
      extra dependency.
      Any thoughts on this or would it not be useful?
      Reviewers: austin, erikd, simonmar, bgamari
      Reviewed By: bgamari
      Subscribers: RyanGlScott, thomie, #ghc_windows_task_force
      Differential Revision: https://phabricator.haskell.org/D3027
      GHC Trac Issues: #13093, #13113
    • Iavor S. Diatchki's avatar
      Fixes bug #11046 · 55935738
      Iavor S. Diatchki authored
      For some time now, type-level operators such as '+' have been treated as
      type constructors, rahter than type variables.  This pathc fixes TH's
      `lookupName` function to account for this behavior.
      Reviewers: bgamari, austin, goldfire, RyanGlScott
      Reviewed By: RyanGlScott
      Subscribers: Phyx, thomie
      Differential Revision: https://phabricator.haskell.org/D3025
      GHC Trac Issues: #11046
    • Matthew Pickering's avatar
      Add a flag to emit error messages as JSON · 91691117
      Matthew Pickering authored
      This patch adds the flag `-ddump-json` which dumps all the compiler
      output as a JSON array. This allows tooling to more easily parse GHC's
      output to display to users.
      The flag is currently experimental and will hopefully be refined for the
      next release.  In particular I have avoided any changes which involve
      significant refactoring and provided what is easy given the current
      Reviewers: austin, bgamari
      Reviewed By: bgamari
      Subscribers: DanielG, gracjan, thomie
      Differential Revision: https://phabricator.haskell.org/D3010
      GHC Trac Issues: #13190