1. 12 Sep, 2020 5 commits
  2. 11 Sep, 2020 3 commits
  3. 10 Sep, 2020 5 commits
    • Sebastian Graf's avatar
      PmCheck: Handle ⊥ and strict fields correctly (#18341) · 3777be14
      Sebastian Graf authored
      In #18341, we discovered an incorrect digression from Lower Your Guards.
      This MR changes what's necessary to support properly fixing #18341.
      
      In particular, bottomness constraints are now properly tracked in the
      oracle/inhabitation testing, as an additional field
      `vi_bot :: Maybe Bool` in `VarInfo`. That in turn allows us to
      model newtypes as advertised in the Appendix of LYG and fix #17725.
      Proper handling of ⊥ also fixes #17977 (once again) and fixes #18670.
      
      For some reason I couldn't follow, this also fixes #18273.
      
      I also added a couple of regression tests that were missing. Most of
      them were already fixed before.
      
      In summary, this patch fixes #18341, #17725, #18273, #17977 and #18670.
      
      Metric Decrease:
          T12227
      3777be14
    • Sebastian Graf's avatar
      .gitignore *.hiedb files · 6abe4a1c
      Sebastian Graf authored
      6abe4a1c
    • GHC GitLab CI's avatar
      hadrian: Don't include -fdiagnostics-color in argument hash · 95455982
      GHC GitLab CI authored
      Otherwise the input hash will vary with whether colors are requested,
      which changed with `isatty`.
      
      Fixes #18672.
      95455982
    • Sebastian Graf's avatar
      PmCheck: Big refactor using guard tree variants more closely following source syntax (#18565) · 1207576a
      Sebastian Graf authored
      Previously, we desugared and coverage checked plain guard trees as
      described in Lower Your Guards. That caused (in !3849) quite a bit of
      pain when we need to partially recover tree structure of the input
      syntax to return covered sets for long-distance information, for
      example.
      
      In this refactor, I introduced a guard tree variant for each relevant
      source syntax component of a pattern-match (mainly match groups, match,
      GRHS, empty case, pattern binding). I made sure to share as much
      coverage checking code as possible, so that the syntax-specific checking
      functions are just wrappers around the more substantial checking
      functions for the LYG primitives (`checkSequence`, `checkGrds`).
      
      The refactoring payed off in clearer code and elimination of all panics
      related to assumed guard tree structure and thus fixes #18565.
      
      I also took the liberty to rename and re-arrange the order of functions
      and comments in the module, deleted some dead and irrelevant Notes,
      wrote some new ones and gave an overview module haddock.
      1207576a
    • Sebastian Graf's avatar
      Add long-distance info for pattern bindings (#18572) · 67ce72da
      Sebastian Graf authored
      We didn't consider the RHS of a pattern-binding before, which led to
      surprising warnings listed in #18572.
      
      As can be seen from the regression test T18572, we get the expected
      output now.
      67ce72da
  4. 09 Sep, 2020 11 commits
  5. 08 Sep, 2020 7 commits
    • Ben Gamari's avatar
      gitlab-ci: Accept Centos 7 C.utf8 locale · d989c842
      Ben Gamari authored
      Centos apparently has C.utf8 rather than C.UTF-8.
      
      (cherry picked from commit d9f85dd25a26a04d3485470afb3395ee2dec6464)
      d989c842
    • Ben Gamari's avatar
      gitlab-ci: Handle distributions without locales · 0c61cbff
      Ben Gamari authored
      Previously we would assume that the `locale` utility exists. However,
      this is not so on Alpine as musl's locale support is essentially
      non-existent.
      
      (cherry picked from commit 17cdb7ac3b557a245fee1686e066f9f770ddc21e)
      0c61cbff
    • Ryan Scott's avatar
      Make the forall-or-nothing rule only apply to invisible foralls (#18660) · 44472daf
      Ryan Scott authored
      This fixes #18660 by changing `isLHsForAllTy` to
      `isLHsInvisForAllTy`, which is sufficient to make the
      `forall`-or-nothing rule only apply to invisible `forall`s. I also
      updated some related documentation and Notes while I was in the
      neighborhood.
      44472daf
    • Daishi Nakajima's avatar
      testsuite: Output performance test results in tabular format · d7b2f799
      Daishi Nakajima authored
      this was suggested in #18417.
      
      Change the print format of the values.
      * Shorten commit hash
      * Reduce precision of the "Value" field
      * Shorten metrics name
        * e.g. runtime/bytes allocated -> run/alloc
      * Shorten "MetricsChange"
        * e.g. unchanged -> unch, increased -> incr
      
      And, print the baseline environment if there are baselines that were
      measured in a different environment than the current environment.
      
      If all "Baseline commit" are the same, print it once.
      d7b2f799
    • Ben Gamari's avatar
      rts: Add stg_copyArray_barrier to RtsSymbols list · ea1cbb8f
      Ben Gamari authored
      It's incredible that this wasn't noticed until now.
      ea1cbb8f
    • Sylvain Henry's avatar
    • Moritz Angermann's avatar
      [macOS] improved runpath handling · 4ff93292
      Moritz Angermann authored
      In b592bd98 we started using
      -dead_strip_dylib on macOS when lining dynamic libraries and binaries.
      The underlying reason being the Load Command Size Limit in macOS
      Sierra (10.14) and later.
      
      GHC will produce @rpath/libHS... dependency entries together with a
      corresponding RPATH entry pointing to the location of the libHS...
      library. Thus for every library we produce two Load Commands.  One to
      specify the dependent library, and one with the path where to find it.
      This makes relocating libraries and binaries easier, as we just need to
      update the RPATH entry with the install_name_tool. The dynamic linker
      will then subsitute each @rpath with the RPATH entries it finds in the
      libraries load commands or the environement, when looking up @rpath
      relative libraries.
      
      -dead_strip_dylibs intructs the linker to drop unused libraries. This in
      turn help us reduce the number of referenced libraries, and subsequently
      the size of the load commands.  This however does not remove the RPATH
      entries.  Subsequently we can end up (in extreme cases) with only a
      single @rpath/libHS... entry, but 100s or more RPATH entries in the Load
      Commands.
      
      This patch rectifies this (slighly unorthodox) by passing *no* -rpath
      arguments to the linker at link time, but -headerpad 8000.  The
      headerpad argument is in hexadecimal and the maxium 32k of the load
      command size.  This tells the linker to pad the load command section
      enough for us to inject the RPATHs later.  We then proceed to link the
      library or binary with -dead_strip_dylibs, and *after* the linking
      inspect the library to find the left over (non-dead-stripped)
      dependencies (using otool).  We find the corresponding RPATHs for each
      @rpath relative dependency, and inject them into the library or binary
      using the install_name_tool.  Thus achieving a deadstripped dylib (and
      rpaths) build product.
      
      We can not do this in GHC, without starting to reimplement a dynamic
      linker as we do not know which symbols and subsequently libraries are
      necessary.
      
      Commissioned-by: Mercury Technologies, Inc. (mercury.com)
      4ff93292
  6. 07 Sep, 2020 3 commits
  7. 05 Sep, 2020 6 commits