This project is mirrored from https://gitlab.haskell.org/ghc/ghc.git. Pull mirroring failed .
Repository mirroring has been paused due to too many failed attempts. It can be resumed by a project maintainer.
Last successful update .
  1. 30 Oct, 2017 1 commit
    • Ben Gamari's avatar
      Add -falignment-sanitization flag · cecd2f2d
      Ben Gamari authored
      Here we add a flag to instruct the native code generator to add
      alignment checks in all info table dereferences. This is helpful in
      catching pointer tagging issues.
      
      Thanks to @jrtc27 for uncovering the tagging issues on Sparc which
      inspired this flag.
      
      Test Plan: Validate
      
      Reviewers: simonmar, austin, erikd
      
      Reviewed By: simonmar
      
      Subscribers: rwbarton, trofi, thomie, jrtc27
      
      Differential Revision: https://phabricator.haskell.org/D4101
      cecd2f2d
  2. 29 Oct, 2017 1 commit
    • Joachim Breitner's avatar
      Implement a dedicated exitfication pass #14152 · 0e953da1
      Joachim Breitner authored
      The idea is described in #14152, and can be summarized: Float the exit
      path out of a joinrec, so that the simplifier can do more with it.
      See the test case for a nice example.
      
      The floating goes against what the simplifier usually does, hence we
      need to be careful not inline them back.
      
      The position of exitification in the pipeline was chosen after a small
      amount of experimentation, but may need to be improved. For example,
      exitification can allow rewrite rules to fire, but for that it would
      have to happen before the `simpl_phases`.
      
      Perf.haskell.org reports these nice performance wins:
      
          Nofib allocations
          fannkuch-redux    78446640  - 99.92%      64560
          k-nucleotide     109466384  - 91.32%    9502040
          simple            72424696  -  5.96%   68109560
      
          Nofib instruction counts
          fannkuch-redux  1744331636  -  3.86% 1676999519
          k-nucleotide    2318221965  -  6.30% 2172067260
          scs             1978470869  -  3.35% 1912263779
          simple           669858104  -  3.38%  647206739
          spectral-norm    186423292  -  5.37%  176411536
      
      Differential Revision: https://phabricator.haskell.org/D3903
      0e953da1
  3. 25 Oct, 2017 1 commit
  4. 10 Oct, 2017 1 commit
    • Tamar Christina's avatar
      Split SysTools up some · e51e565d
      Tamar Christina authored
      Summary:
      SysTools and DriverTools have an annoying mutual dependency.
      They also each contain pieces of the linker. In order for
      changes to be shared between the library and the exe linking
      code this dependency needs to be broken in order to avoid
      using hs-boot files.
      
      Reviewers: austin, bgamari, erikd
      
      Reviewed By: bgamari
      
      Subscribers: rwbarton, thomie
      
      Differential Revision: https://phabricator.haskell.org/D4071
      e51e565d
  5. 03 Oct, 2017 2 commits
  6. 26 Sep, 2017 1 commit
  7. 22 Sep, 2017 1 commit
    • Facundo Domínguez's avatar
      Implement TH addCorePlugin. · 17558690
      Facundo Domínguez authored
      This allows template-haskell code to add plugins to the compilation
      pipeline. Otherwise, the user would have to pass -fplugin=... to ghc.
      
      For now, plugin modules in the current package can't be used. This is
      because when TH runs, it is too late to let GHC know that the plugin
      modules needed to be compiled first.
      
      Test Plan: ./validate
      
      Reviewers: simonpj, bgamari, austin, goldfire
      
      Reviewed By: bgamari
      
      Subscribers: angerman, rwbarton, mboes, thomie
      
      GHC Trac Issues: #13608
      
      Differential Revision: https://phabricator.haskell.org/D3821
      17558690
  8. 19 Sep, 2017 3 commits
  9. 13 Sep, 2017 3 commits
  10. 08 Sep, 2017 1 commit
  11. 06 Sep, 2017 1 commit
    • Moritz Angermann's avatar
      Clean up opt and llc · 22733532
      Moritz Angermann authored
      The LLVM backend shells out to LLVMs `opt` and `llc` tools. This clean
      up introduces a shared data structure to carry the arguments we pass to
      each tool so that corresponding flags are next to each other. It drops
      the hard coded data layouts in favor of using `-mtriple` and have LLVM
      infer them. Furthermore we add `clang` as a proper tool, so we don't
      rely on assuming that `clang` is called `clang` on the `PATH` when using
      `clang` as the assembler.  Finally this diff also changes the type of
      `optLevel` from `Int` to `Word`, as we do not have negative optimization
      levels.
      
      Reviewers: erikd, hvr, austin, rwbarton, bgamari, kavon
      
      Reviewed By: kavon
      
      Subscribers: michalt, Ericson2314, ryantrinkle, dfeuer, carter, simonpj,
      kavon, simonmar, thomie, erikd, snowleopard
      
      Differential Revision: https://phabricator.haskell.org/D3352
      22733532
  12. 05 Sep, 2017 1 commit
  13. 31 Aug, 2017 1 commit
  14. 29 Aug, 2017 3 commits
    • Tamar Christina's avatar
      Fix decomposition error on Windows · 3c6b2fc3
      Tamar Christina authored
      Summary:
      Fix the path decomposition error that occurs when the Symlink resolver
      fails. `Win32.try` throws an exception, so catch it and assume the path
      isn't a symlink to use the old behavior.
      
      Test Plan: ./validate
      
      Reviewers: austin, bgamari
      
      Reviewed By: bgamari
      
      Subscribers: rwbarton, thomie
      
      GHC Trac Issues: #14159
      
      Differential Revision: https://phabricator.haskell.org/D3891
      3c6b2fc3
    • Tamar Christina's avatar
      Remove dll-split. · 5266ab90
      Tamar Christina authored
      This patch removes dll-split from the code base, the reason is dll-split
      no longer makes any sense. It was designed to split a dll in two, but we
      now already have many more symbols than would fit inside two dlls. So we
      need a third one. This means there's no point in having to maintain this
      list as it'll never work anyway and the solution isn't scalable.
      
      Test Plan: ./validate
      
      Reviewers: austin, bgamari
      
      Reviewed By: bgamari
      
      Subscribers: rwbarton, thomie, #ghc_windows_task_force
      
      GHC Trac Issues: #5987
      
      Differential Revision: https://phabricator.haskell.org/D3882
      5266ab90
    • David Feuer's avatar
      Make parsed AST dump output lazily · 29da01e0
      David Feuer authored
      Previously, `showAstData` produced a `String`. That `String` would
      then be converted to a `Doc` using `text` to implement
      `-ddump-parsed-ast`. But rendering `text` calculates the length
      of the `String` before doing anything else. Since the AST can be
      very large, this was bad: the whole dump string (potentially hundreds
      of millions of `Char`s) was accumulated in memory.
      
      Now, `showAstData` produces a `Doc` directly, which seems to work
      a lot better. As an extra bonus, the code is simpler and cleaner.
      The formatting has changed a bit, as the previous ad hoc approach
      didn't really match the pretty printer too well. If someone cares
      enough to request adjustments, we can surely make them.
      
      Reviewers: austin, bgamari, mpickering, alanz
      
      Reviewed By: bgamari
      
      Subscribers: mpickering, rwbarton, thomie
      
      GHC Trac Issues: #14161
      
      Differential Revision: https://phabricator.haskell.org/D3894
      29da01e0
  15. 25 Aug, 2017 1 commit
  16. 22 Aug, 2017 3 commits
  17. 19 Aug, 2017 1 commit
    • patrickdoc's avatar
      users_guide: Convert mkUserGuidePart generation to a Sphinx extension · cf8ab1ce
      patrickdoc authored
      This removes all dependencies the users guide had on `mkUserGuidePart`.
      The generation of the flag reference table and the various pieces of the
      man page is now entirely contained within the Spinx extension
      `flags.py`. You can see the man page generation on the orphan page
      https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/ghc.html
      
      The extension works by collecting all of the meta-data attached to the
      `ghc-flag` directives and then formatting and displaying it at
      `flag-print` directives. There is a single printing directive that can
      be customized with two options, what format to display (table, list, or
      block of flags) and an optional category to limit the output to
      (verbosity, warnings, codegen, etc.).
      
      New display formats can be added by creating a function
      `generate_flag_xxx` (where `xxx` is a description of the format) which
      takes a list of flags and a category and returns a new `xxx`. Then just
      add a reference in the dispatch table `handlers`. That display can now
      be run by passing `:type: xxx` to the `flag-print` directive.
      
      `flags.py` contains two maps of settings that can be adjusted. The first
      is a canonical list of flag categories, and the second sets default
      categories for files.
      
      The only functionality that Sphinx could not replace was the
      `what_glasgow_exts_does.gen.rst` file. `mkUserGuidePart` actually just
      reads the list of flags from `compiler/main/DynFlags.hs` which Sphinx
      cannot do. As the flag is deprecated, I added the list as a static file
      which can be updated manually.
      
      Additionally, this patch updates every single documented flag with the
      data from `mkUserGuidePart` to generate the reference table.
      
      Fixes #11654 and, incidentally, #12155.
      
      Reviewers: austin, bgamari
      
      Subscribers: rwbarton, thomie
      
      GHC Trac Issues: #11654, #12155
      
      Differential Revision: https://phabricator.haskell.org/D3839
      cf8ab1ce
  18. 15 Aug, 2017 1 commit
  19. 01 Aug, 2017 1 commit
    • Ryan Scott's avatar
      Drop GHC 7.10 compatibility · c13720c8
      Ryan Scott authored
      GHC 8.2.1 is out, so now GHC's support window only extends back to GHC
      8.0. This means we can delete gobs of code that was only used for GHC
      7.10 support. Hooray!
      
      Test Plan: ./validate
      
      Reviewers: hvr, bgamari, austin, goldfire, simonmar
      
      Reviewed By: bgamari
      
      Subscribers: Phyx, rwbarton, thomie
      
      Differential Revision: https://phabricator.haskell.org/D3781
      c13720c8
  20. 28 Jul, 2017 2 commits
  21. 27 Jul, 2017 1 commit
  22. 25 Jul, 2017 1 commit
  23. 24 Jul, 2017 2 commits
    • Ben Gamari's avatar
      Use libpthread instead of libthr on FreeBSD · d8051c6c
      Ben Gamari authored
      Since #847 we have used libthr due to reported hangs with FreeBSD's
      KSE-based M:N pthread implementation. However, this was nearly 12 years
      ago and today libpthread seems to work fine. Moreover, adding -lthr to
      the linker flags break when used in conjunction with -r when gold is
      used (since -l and -r are incompatible although BFD ld doesn't
      complain).
      
      Test Plan: Validate on FreeBSD
      
      Reviewers: kgardas, austin
      
      Subscribers: rwbarton, thomie
      
      GHC Trac Issues: #847
      
      Differential Revision: https://phabricator.haskell.org/D3773
      d8051c6c
    • Ben Gamari's avatar
      DynFlags: Drop rtsBuildTag field · 8a8cee73
      Ben Gamari authored
      This wasn't used anywhere; the RTS build tag is now constructed in
      Packages.packageHsLibs.
      
      Test Plan: Validate
      
      Reviewers: austin
      
      Subscribers: rwbarton, thomie
      
      Differential Revision: https://phabricator.haskell.org/D3768
      8a8cee73
  24. 20 Jul, 2017 2 commits
    • Douglas Wilson's avatar
      Fix busy-wait in SysTools.builderMainLoop · 194384f1
      Douglas Wilson authored
      Test T13701 was failing sporadically. The problem manifested while the
      test was run on a system under load. Profiling showed the increased
      allocations were in SysTools.builderMainLoop.loop, during calls to the
      assembler. This was due to loop effectively busy-waiting from when both
      stdin and stderr handles were closed, until getProcessExitCode
      succeeded.
      
      This is fixed by removing exit code handling from loop. We now wait for
      loop to finish, then read the exit code with waitForProcess.
      
      Some exception safety is added: the readerProc threads will now be
      killed and the handles will be closed if an exception is thrown.
      
      A TODO saying that threads dying is not accounted for is removed. I
      believe that this case is handled by readerProc sending EOF in a finally
      clause.
      
      Test Plan:
      Replicate test failures using procedure on the ticket, verify that they
      do not occur with this patch.
      
      Reviewers: austin, bgamari
      
      Reviewed By: bgamari
      
      Subscribers: rwbarton, thomie
      
      GHC Trac Issues: #13987
      
      Differential Revision: https://phabricator.haskell.org/D3748
      194384f1
    • Ben Gamari's avatar
      Introduce -fcatch-bottoms · 8e51bfc3
      Ben Gamari authored
      This flag instructs the simplifier to emit ``error`` expressions in the
      continutation of empty case analyses (which should bottom and
      consequently not return). This is helpful when debugging demand analysis
      bugs which can sometimes manifest as segmentation faults.
      
      Test Plan: Validate
      
      Reviewers: simonpj, austin
      
      Subscribers: niteria, rwbarton, thomie
      
      Differential Revision: https://phabricator.haskell.org/D3736
      8e51bfc3
  25. 18 Jul, 2017 1 commit
    • niteria's avatar
      Make module membership on ModuleGraph faster · b8fec695
      niteria authored
      When loading/reloading with a large number of modules
      (>5000) the cost of linear lookups becomes significant.
      
      The changes here made `:reload` go from 6s to 1s on my
      test case.
      
      The bottlenecks were `needsLinker` in `DriverPipeline` and
      `getModLoop` in `GhcMake`.
      
      Test Plan: ./validate
      
      Reviewers: simonmar, austin, bgamari
      
      Subscribers: thomie, rwbarton
      
      Differential Revision: https://phabricator.haskell.org/D3703
      b8fec695
  26. 11 Jul, 2017 3 commits
    • Ben Gamari's avatar
      Use correct section types syntax for architecture · 9b9f978f
      Ben Gamari authored
      Previously GHC would always assume that section types began with `@` while
      producing assembly, which is not true. For instance, in ARM assembly syntax
      section types begin with `%`. This abstracts out section type pretty-printing
      and adjusts it to correctly account for the target architectures assembly
      flavor.
      
      Reviewers: austin, hvr, Phyx
      
      Reviewed By: Phyx
      
      Subscribers: Phyx, rwbarton, thomie, erikd
      
      GHC Trac Issues: #13937
      
      Differential Revision: https://phabricator.haskell.org/D3712
      9b9f978f
    • Ömer Sinan Ağacan's avatar
      Mention which -Werror promoted a warning to an error · 4befb415
      Ömer Sinan Ağacan authored
      Previously -Werror or -Werror=flag printed warnings as usual and then
      printed
      these two lines:
      
          <no location info>: error:
          Failing due to -Werror.
      
      This is not ideal: first, it's not clear which flag made one of the
      warnings an
      error. Second, warning messages are not modified in any way, so there's
      no way
      to know which warnings caused this error.
      
      With this patch we (1) promote warning messages to error messages if a
      relevant
      -Werror is enabled (2) mention which -Werror is used during this
      promotion.
      
      Previously:
      
          [1 of 1] Compiling Main             ( test.hs, test.o )
      
          test.hs:9:10: warning: [-Wincomplete-patterns]
              Pattern match(es) are non-exhaustive
              In a case alternative: Patterns not matched: (C2 _)
            |
          9 | sInt s = case s of
            |          ^^^^^^^^^...
      
          test.hs:12:14: warning: [-Wmissing-fields]
              • Fields of ‘Rec’ not initialised: f2
              • In the first argument of ‘print’, namely ‘Rec {f1 =
      1}’
                In the expression: print Rec {f1 = 1}
                In an equation for ‘main’: main = print Rec {f1 = 1}
             |
          12 | main = print Rec{ f1 = 1 }
             |              ^^^^^^^^^^^^^
      
          <no location info>: error:
          Failing due to -Werror.
      
      Now:
      
          [1 of 1] Compiling Main             ( test.hs, test.o )
      
          test.hs:9:10: error: [-Wincomplete-patterns,
      -Werror=incomplete-patterns]
              Pattern match(es) are non-exhaustive
              In a case alternative: Patterns not matched: (C2 _)
            |
          9 | sInt s = case s of
            |          ^^^^^^^^^...
      
          test.hs:12:14: error: [-Wmissing-fields, -Werror=missing-fields]
              • Fields of ‘Rec’ not initialised: f2
              • In the first argument of ‘print’, namely ‘Rec {f1 =
      1}’
                In the expression: print Rec {f1 = 1}
                In an equation for ‘main’: main = print Rec {f1 = 1}
             |
          12 | main = print Rec{ f1 = 1 }
             |              ^^^^^^^^^^^^^
      
      Test Plan: - Update old tests, add new tests if there aren't any
      relevant tests
      
      Reviewers: austin, bgamari
      
      Reviewed By: bgamari
      
      Subscribers: rwbarton, thomie
      
      Differential Revision: https://phabricator.haskell.org/D3709
      4befb415
    • Douglas Wilson's avatar
      Fix logic error in GhcMake.enableCodeGenForTH · ea751248
      Douglas Wilson authored
      transitive_deps_set was incorrect, it was not considering the
      dependencies of dependencies in some cases. I've corrected it and tidied
      it up a little.
      
      The test case from leftaroundabout, as linked to from the ticket, is
      added with small modifications to flatten directory structure.
      
      Test Plan: make test TEST=T13949
      
      Reviewers: austin, bgamari, alexbiehl
      
      Reviewed By: alexbiehl
      
      Subscribers: rwbarton, thomie, alexbiehl
      
      GHC Trac Issues: #13949
      
      Differential Revision: https://phabricator.haskell.org/D3720
      ea751248