1. 26 Oct, 2017 3 commits
  2. 25 Oct, 2017 19 commits
    • Tobias Dammers's avatar
      Factor out readField (#14364) · dbd81f7e
      Tobias Dammers authored
      Improves compiler performance of deriving Read instances, as suggested
      in the issue.
      
      Additionally, we introduce `readSymField`, a companion to `readField`
      that parses symbol-type fields (where the field name is a symbol, e.g.
      `(#)`, rather than an alphanumeric identifier. The decision between
      these two functions is made a compile time, because we already know
      which one we need based on the field name.
      
      Reviewers: austin, hvr, bgamari, RyanGlScott
      
      Reviewed By: bgamari
      
      Subscribers: RyanGlScott, rwbarton, thomie
      
      Differential Revision: https://phabricator.haskell.org/D4108
      dbd81f7e
    • duog's avatar
      base: Enable listToMaybe to fuse via foldr/build · 4c06ccb7
      duog authored
      Test Plan: Consider whether this is a good idea.
      
      Reviewers: austin, hvr, bgamari, nomeata
      
      Reviewed By: bgamari, nomeata
      
      Subscribers: nomeata, rwbarton, thomie
      
      GHC Trac Issues: #14387
      
      Differential Revision: https://phabricator.haskell.org/D4126
      4c06ccb7
    • Ben Gamari's avatar
      user-guide: Clarify default optimization flags · 2c23fff2
      Ben Gamari authored
      Begins to fix #14214.
      
      [skip ci]
      
      Test Plan: Read it.
      
      Reviewers: austin
      
      Subscribers: rwbarton, thomie
      
      GHC Trac Issues: #14214
      
      Differential Revision: https://phabricator.haskell.org/D4098
      2c23fff2
    • Alec Theriault's avatar
      Fix a bug in 'alexInputPrevChar' · 821adee1
      Alec Theriault authored
      The lexer hacks around unicode by squishing any character into a 'Word8'
      and then storing the actual character in its state. This happens at
      'alexGetByte'.
      
      That is all and well, but we ought to be careful that the characters we
      retrieve via 'alexInputPrevChar' also fit this convention.
      
      In fact, #13986 exposes nicely what can go wrong: the regex in the left
      context of the type application rule uses the '$idchar' character set
      which relies on the unicode hack. However, a left context corresponds
      to a call to 'alexInputPrevChar', and we end up passing full blown
      unicode characters to '$idchar', despite it not being equipped to deal
      with these.
      
      Test Plan: Added a regression test case
      
      Reviewers: austin, bgamari
      
      Reviewed By: bgamari
      
      Subscribers: rwbarton, thomie
      
      GHC Trac Issues: #13986
      
      Differential Revision: https://phabricator.haskell.org/D4105
      821adee1
    • Daishi Nakajima's avatar
      Implement `-Wpartial-fields` warning (#7169) · f7f270eb
      Daishi Nakajima authored
      Warning on declaring a partial record selector.
      However, disable warn with field names that start with underscore.
      
      Test Plan: Added 1 test case.
      
      Reviewers: austin, bgamari, simonpj
      
      Reviewed By: bgamari, simonpj
      
      Subscribers: goldfire, simonpj, duog, rwbarton, thomie
      
      GHC Trac Issues: #7169
      
      Differential Revision: https://phabricator.haskell.org/D4083
      f7f270eb
    • Tobias Dammers's avatar
      Performance improvements linear regAlloc (#7258) · df636682
      Tobias Dammers authored
      When allocating and potentially spilling registers, we need to check
      the desired allocations against current allocations to decide where we
      can spill to, cq. which allocations we can toss and if so, how.
      Previously, this was done by walking the Cartesian product of the
      current allocations (`assig`) and the allocations to keep (`keep`),
      which has quadratic complexity. This patch introduces two improvements:
      
      1. pre-filter the `assig` list, because we are only interested in two
      types of allocations (in register, and in register+memory), which will
      only make up a small and constant portion of the list; and
      2. use set / map operations instead of lists, which reduces algorithmic
      complexity.
      
      Reviewers: austin, bgamari
      
      Reviewed By: bgamari
      
      Subscribers: rwbarton, thomie
      
      Differential Revision: https://phabricator.haskell.org/D4109
      df636682
    • duog's avatar
      Fix space leak in BinIface.getSymbolTable · 1c15d8ed
      duog authored
      Replace a call to mapAccumR, which uses linear stack space, with a
      gadget that uses constant space.
      
      Remove an unused parameter from fromOnDiskName.
      
      The tests T1292_imports and T4239 are now reporting imported names in a
      different order. I don't completely understand why, but I presume it is
      because the symbol tables are now read more strictly. The new order
      seems better in T1792_imports, and equally random in T4239.
      
      There are several performance test improvements.
      
      Test Plan: ./validate
      
      Reviewers: austin, bgamari
      
      Reviewed By: bgamari
      
      Subscribers: alexbiehl, rwbarton, thomie
      
      Differential Revision: https://phabricator.haskell.org/D4124
      1c15d8ed
    • Tamar Christina's avatar
      Windows: Update the mirror script to generate hashes and use mirror fallback · 980e1270
      Tamar Christina authored
      This fixes the mirror script so it correctly queries haskell.org and if
      packages aren't found check repo.msys2.org.
      
      Also the mirror functionality now generates the md5 hashes after a
      mirror fetch that can be placed in the md5sums file.
      
      Test Plan:
       mk/get-win32-tarballs.sh fetch mirror
      
       and ./validate
      
      Reviewers: austin, bgamari
      
      Reviewed By: bgamari
      
      Subscribers: rwbarton, thomie
      
      Differential Revision: https://phabricator.haskell.org/D4118
      980e1270
    • Tobias Dammers's avatar
      Make layLeft and reduceDoc stricter (#7258) · 2a4c24e4
      Tobias Dammers authored
      Making the pretty-printer based assembly output stricter in
      strategically chosen locations produces a minor performance improvement
      when compiling large derived Read instance (on the order of 5-10%).
      
      Reviewers: austin, bgamari
      
      Reviewed By: bgamari
      
      Subscribers: rwbarton, thomie
      
      Differential Revision: https://phabricator.haskell.org/D4111
      2a4c24e4
    • Andreas Klebinger's avatar
      Add info about Github pull requests. · bd53b488
      Andreas Klebinger authored
      bd53b488
    • Ben Gamari's avatar
      typecheck: Clarify errors mentioned in #14385 · bf83435b
      Ben Gamari authored
      bf83435b
    • Joachim Breitner's avatar
      Make language extensions their own category in the documentation · 61f1b46e
      Joachim Breitner authored
      I.e. instead of
      
          .. ghc-flag:: -XUnboxedTuples
              :shortdesc: Enable the use of unboxed tuple syntax.
              :type: dynamic
              :reverse: -XNoUnboxedTuples
              :category:
      
      one simply writes
      
          .. extension:: UnboxedTuples
              :shortdesc: Enable the use of unboxed tuple syntax.
      
      This allows language extensions to be referenced as
      
          If :extension:`UnboxedTuples` is enabled, then...
      
      This directive still creates the entries for the `-XUnboxedTuples` flag,
      so in particular,
      
          Set :ghc-flag:`-XUnboxedTuples` if you have to.
      
      still works, and lists of flags in general (e.g. for the manpage)
      include these.
      
      I also removed lots of links from the shortdesc of the extensions, when
      this link simply points to the section where the extension is defined.
      
      I removed the list of `-X` flags from the flag reference table, but added a
      table of extension under “10.1. Language options”
      
      Lots of text in the manual now refers to “extension `Foo`” rather than
      “flag `-XFoo`”.
      
      I consider `-XFoo` a historic artifact that stems from when language
      extensions were really just flags. These days, the use of `-XFoo` is
      (IMHO) deprecated: You should be using `LANGUAGE Foo`, or maybe the
      appropriate field in a `.cabal` file. See 9278994a which did this change
      to error messages already.
      
      Differential Revision: https://phabricator.haskell.org/D4112
      61f1b46e
    • Tamar Christina's avatar
      Revert "Update Win32 version for GHC 8.4." · b1ad0bb3
      Tamar Christina authored
      This reverts commit 561bdca1.
      
      submodule
      b1ad0bb3
    • Tamar Christina's avatar
      Revert "ghc-cabal: Inline removed function ..." · 2e16a578
      Tamar Christina authored
      This reverts commit f744261a.
      2e16a578
    • Tamar Christina's avatar
      f744261a
    • Tamar Christina's avatar
      Update Win32 version for GHC 8.4. · 561bdca1
      Tamar Christina authored
      Summary: Update to Win32 2.6 which is the expected version release for 8.4
      
      This bumps the required submodule s as well.
      
      Test Plan: ./validate
      
      Reviewers: austin, bgamari
      
      Reviewed By: bgamari
      
      Subscribers: rwbarton, thomie
      
      Differential Revision: https://phabricator.haskell.org/D4117
      561bdca1
    • Tamar Christina's avatar
      Revert "Windows: Bump to GCC 7.2 for GHC 8.4" · e888a1ff
      Tamar Christina authored
      This reverts commit b62097d1.
      e888a1ff
    • Tamar Christina's avatar
      Windows: Bump to GCC 7.2 for GHC 8.4 · b62097d1
      Tamar Christina authored
      Summary:
      GHC 8.4 is expected to ship with an updated GCC bindist based on GCC 7.2.
      
      I am however at this time not updating the crt due to an issue introduced
      in september. https://sourceforge.net/p/mingw-w64/mailman/message/36085637/
      
      Unless a favorable fix comes out of the discussion I will just ship the old crt
      with GHC 8.4.
      
      Test Plan: ./validate
      
      Reviewers: austin, bgamari
      
      Subscribers: rwbarton, thomie
      
      Differential Revision: https://phabricator.haskell.org/D4119
      b62097d1
    • Tom Sydney Kerckhove's avatar
      Remove the 'legroom' part of the timeout-accurate-pure test. · 3825b7e2
      Tom Sydney Kerckhove authored
      Summary:
      This removes the part of the test that checks whether the timeout happened in
      a 'reasonable' amount of time, because it is flaky.
      In subsequent work, we can turn this into a benchmark.
      
      Test Plan: This _is_ a test
      
      Reviewers: nh2, bgamari, Phyx, austin, hvr
      
      Reviewed By: Phyx
      
      Subscribers: rwbarton, thomie
      
      GHC Trac Issues: #8684
      
      Differential Revision: https://phabricator.haskell.org/D4120
      3825b7e2
  3. 24 Oct, 2017 3 commits
  4. 23 Oct, 2017 4 commits
  5. 22 Oct, 2017 1 commit
    • Tamar Christina's avatar
      Add stack traces on crashes on Windows · 99c61e22
      Tamar Christina authored
      Summary:
      This patch adds the ability to generate stack traces on crashes for Windows.
      When running in the interpreter this attempts to use symbol information from
      the interpreter and information we know about the loaded object files to
      resolve addresses to symbols.
      
      When running compiled it doesn't have this information and then defaults
      to using symbol information from PDB files. Which for now means only
      files compiled with ICC or MSVC will show traces compiled.
      
      But I have a future patch that may address this shortcoming.
      
      Also since I don't know how to walk a pure haskell stack, I can for now
      only show the last entry. I'm hoping to figure out how Apply.cmm works to
      be able to walk the stalk and give more entries for pure haskell code.
      
      In GHCi
      
      ```
      $ echo main | inplace/bin/ghc-stage2.exe --interactive ./testsuite/tests/rts/derefnull.hs
      GHCi, version 8.3.20170830: http://www.haskell.org/ghc/  :? for help
      Ok, 1 module loaded.
      Prelude Main>
      Access violation in generated code when reading 0x0
      
       Attempting to reconstruct a stack trace...
      
         Frame        Code address
       * 0x77cde10    0xc370229 E:\..\base\dist-install\build\HSbase-4.10.0.0.o+0x190031
                       (base_ForeignziStorable_zdfStorableInt4_info+0x3f)
      ```
      
      and compiled
      
      ```
      Access violation in generated code when reading 0x0
      
       Attempting to reconstruct a stack trace...
      
         Frame        Code address
       * 0xf0dbd0     0x40bb01 E:\..\rts\derefnull.run\derefnull.exe+0xbb01
      ```
      
      Test Plan: ./validate
      
      Reviewers: austin, hvr, bgamari, erikd, simonmar
      
      Reviewed By: bgamari
      
      Subscribers: rwbarton, thomie
      
      Differential Revision: https://phabricator.haskell.org/D3913
      99c61e22
  6. 20 Oct, 2017 3 commits
    • Simon Peyton Jones's avatar
      Update record-wildcard docs · e375bd35
      Simon Peyton Jones authored
      This patch clarifies the story for record wildcards,
      following the discussion on Trac #14347.
      e375bd35
    • Simon Peyton Jones's avatar
      Improve kick-out in the constraint solver · 3acd6164
      Simon Peyton Jones authored
      This patch was provoked by Trac #14363.  Turned out that we were
      kicking out too many constraints in TcSMonad.kickOutRewritable, and
      that mean that the work-list never became empty: infinite loop!
      
      That in turn made me look harder at the Main Theorem in
      Note [Extending the inert equalities].
      
      Main changes
      
      * Replace TcType.isTyVarExposed by TcType.isTyVarHead.  The
        over-agressive isTyVarExposed is what caused Trac #14363.
        See Note [K3: completeness of solving] in TcSMonad.
      
      * TcType.Make anyRewriteableTyVar role-aware.  In particular,
            a ~R ty
        cannot rewrite
            b ~R f a
        See Note [anyRewriteableTyVar must be role-aware].  That means
        it has to be given a role argument, which forces a little
        refactoring.
      
        I think this change is fixing a bug that hasn't yet been reported.
        The actual reported bug is handled by the previous bullet.  But
        this change is definitely the Right Thing
      
      The main changes are in TcSMonad.kick_out_rewritable, and in TcType
      (isTyVarExposed ---> isTyVarHead).
      
      I did a little unforced refactoring:
      
       * Use the cc_eq_rel field of a CTyEqCan when it is available, rather
         than recomputing it.
      
       * Define eqCanRewrite :: EqRel -> EqRel -> EqRel, and use it, instead
         of duplicating its logic
      3acd6164
    • Simon Peyton Jones's avatar
      Comments and white space · c1efc6e6
      Simon Peyton Jones authored
      c1efc6e6
  7. 19 Oct, 2017 7 commits