1. 23 Jun, 2017 6 commits
    • Michal Terepeta's avatar
      Hoopl: remove dependency on Hoopl package · 42eee6ea
      Michal Terepeta authored
      This copies the subset of Hoopl's functionality needed by GHC to
      `cmm/Hoopl` and removes the dependency on the Hoopl package.
      
      The main motivation for this change is the confusing/noisy interface
      between GHC and Hoopl:
      - Hoopl has `Label` which is GHC's `BlockId` but different than
        GHC's `CLabel`
      - Hoopl has `Unique` which is different than GHC's `Unique`
      - Hoopl has `Unique{Map,Set}` which are different than GHC's
        `Uniq{FM,Set}`
      - GHC has its own specialized copy of `Dataflow`, so `cmm/Hoopl` is
        needed just to filter the exposed functions (filter out some of the
        Hoopl's and add the GHC ones)
      With this change, we'll be able to simplify this significantly.
      It'll also be much easier to do invasive changes (Hoopl is a public
      package on Hackage with users that depend on the current behavior)
      
      This should introduce no changes in functionality - it merely
      copies the relevant code.
      Signed-off-by: Michal Terepeta's avatarMichal Terepeta <michal.terepeta@gmail.com>
      
      Test Plan: ./validate
      
      Reviewers: austin, bgamari, simonmar
      
      Reviewed By: bgamari, simonmar
      
      Subscribers: simonpj, kavon, rwbarton, thomie
      
      Differential Revision: https://phabricator.haskell.org/D3616
      42eee6ea
    • Matthew Pickering's avatar
      Use actual universal tvs in check for naughty record selectors · 90771209
      Matthew Pickering authored
      The naughty record selector check means to limit selectors which would
      lead to existential tyvars escaping their scope. With record pattern
      synonyms, there are situations where universal tyvars don't appear in
      the result type, for example:
      
      ```
      pattern ReadP :: Read a => a -> String
      pattern ReadP{readp} <- (read -> readp)
      ```
      
      This is a similar issue to #11224 where we assumed that we can decide
      which variables are universal and which are existential by the syntactic
      check of seeing which appear in the result type. The fix is to use
      `univ_tvs` from `conLikeFullSig` rather than the previous approximation.
      But we must also remember to apply `EqSpec`s so we use the free
      variables from `inst_tys` which is precisely `univ_tvs` with `EqSpecs`
      applied.
      
      Reviewers: austin, bgamari
      
      Reviewed By: bgamari
      
      Subscribers: rwbarton, thomie
      
      Differential Revision: https://phabricator.haskell.org/D3649
      90771209
    • Ryan Scott's avatar
      Fix pretty-printing of zero-argument lambda expressions · 3c4537ea
      Ryan Scott authored
      Using Template Haskell, one can construct lambda expressions with no
      arguments. The pretty-printer isn't aware of this fact, however. This
      changes that.
      
      Test Plan: make test TEST=T13856
      
      Reviewers: bgamari, austin, goldfire
      
      Reviewed By: bgamari
      
      Subscribers: rwbarton, thomie
      
      GHC Trac Issues: #13856
      
      Differential Revision: https://phabricator.haskell.org/D3664
      3c4537ea
    • Ryan Scott's avatar
      Add fixity declaration for Data.List.NonEmpty.!! · 398a444b
      Ryan Scott authored
      We have `infixl 9 !!` for `Data.List.!!`, but not for
      `Data.List.NonEmpty.!!`. We ought to.
      
      Test Plan: Read it
      
      Reviewers: bgamari, austin, hvr
      
      Reviewed By: bgamari
      
      Subscribers: rwbarton, thomie
      
      Differential Revision: https://phabricator.haskell.org/D3666
      398a444b
    • Ben Gamari's avatar
      testsuite: Fix cabal01 test · e13edee3
      Ben Gamari authored
      The other-modules field listed things that weren't in fact modules,
      causing this test to fail. See Cabal #4567.
      
      Test Plan: Validate
      
      Reviewers: hvr, austin
      
      Subscribers: rwbarton, thomie
      
      Differential Revision: https://phabricator.haskell.org/D3665
      e13edee3
    • Ben Gamari's avatar
      compiler: Eliminate pprTrace in SPT entry addition codepath · 84cf095d
      Ben Gamari authored
      Test Plan: Load program with StaticPointers into GHCi, ensure no
      tracing output makes it in.
      
      Reviewers: austin
      
      Subscribers: rwbarton, thomie, RyanGlScott
      
      GHC Trac Issues: #12356
      
      Differential Revision: https://phabricator.haskell.org/D3663
      84cf095d
  2. 22 Jun, 2017 2 commits
  3. 21 Jun, 2017 7 commits
  4. 20 Jun, 2017 1 commit
  5. 19 Jun, 2017 12 commits
  6. 18 Jun, 2017 4 commits
  7. 17 Jun, 2017 1 commit
    • Tamar Christina's avatar
      Remove the Windows GCC driver. · d6cecde5
      Tamar Christina authored
      Summary:
      This patch drops the GCC driver and instead moves
      the only remaining path that we need to keep for
      backwards compatibility to the settings file.
      
      It also generalizes the code that expands `$TopDir`
      so it can expand it within any location in the string
      and also changes it so `$TopDir` is expanded only
      after the words call because `$TopDir` can contains
      spaces which would be horribly broken.
      
      Test Plan: ./validate
      
      Reviewers: austin, hvr, bgamari
      
      Reviewed By: bgamari
      
      Subscribers: rwbarton, thomie, erikd
      
      GHC Trac Issues: #13709
      
      Differential Revision: https://phabricator.haskell.org/D3592
      d6cecde5
  8. 16 Jun, 2017 3 commits
    • Tamar Christina's avatar
      Provide way to build using existing C compiler on Windows. · fda094d0
      Tamar Christina authored
      Summary:
      There are various distros that build GHC using their own C compilers
      such as MSYS2. Currently they have to patch the build scripts everytime.
      
      This patch provides the configure argument `--enable-distro-toolchain`
      which allows one to build using any C compiler on the path.
      
      This is also useful for testing new versions of GCC.
      
      Test Plan:
      ./configure --enable-distro-toolchain && make - && make THREADS=9 test
      ./validate
      
      Reviewers: austin, hvr, bgamari
      
      Reviewed By: bgamari
      
      Subscribers: rwbarton, thomie, erikd, #ghc_windows_task_force
      
      GHC Trac Issues: #13792
      
      Differential Revision: https://phabricator.haskell.org/D3637
      fda094d0
    • Simon Peyton Jones's avatar
      Fix the treatment of 'closed' definitions · dc8e6861
      Simon Peyton Jones authored
      The IdBindingInfo field of ATcId serves two purposes
      
      - to control generalisation when we have -XMonoLocalBinds
      - to check for floatability when dealing with (static e)
      
      These are related, but not the same, and they'd becomme confused.
      Trac #13804 showed this up via an example like this:
      
        f periph = let sr :: forall a. [a] -> [a]
                       sr = if periph then reverse else id
      
                       sr2 = sr
                       -- The question: is sr2 generalised?
                       -- It should be, because sr has a type sig
                       -- even though it has periph free
                   in
                   (sr2 [True], sr2 "c")
      
      Here sr2 should be generalised, despite the free var 'periph'
      in 'sr' because 'sr' has a closed type signature.
      
      I documented all this very carefully this time, in TcRnTypes:
        Note [Meaning of IdBindingInfo]
        Note [Bindings with closed types: ClosedTypeId]
      dc8e6861
    • Ben Gamari's avatar
      base: Validate input in setNumCapabilities · 98494031
      Ben Gamari authored
      Test Plan: validate
      
      Reviewers: austin, hvr, erikd, simonmar
      
      Subscribers: rwbarton, thomie
      
      GHC Trac Issues: #13832
      
      Differential Revision: https://phabricator.haskell.org/D3652
      98494031
  9. 14 Jun, 2017 2 commits
  10. 13 Jun, 2017 1 commit
  11. 12 Jun, 2017 1 commit