1. 29 May, 2019 7 commits
  2. 28 May, 2019 1 commit
  3. 27 May, 2019 10 commits
    • Ömer Sinan Ağacan's avatar
      Add missing opening braces in Cmm dumps · db8e3275
      Ömer Sinan Ağacan authored
      Previously -ddump-cmm was generating code with unbalanced curly braces:
      
           stg_atomically_entry() //  [R1]
                   { info_tbls: [(cfl,
                                  label: stg_atomically_info
                                  rep: tag:16 HeapRep 1 ptrs { Thunk }
                                  srt: Nothing)]
                     stack_info: arg_space: 8 updfr_space: Just 8
                   }
               {offset
                 cfl: // cfk
                     unwind Sp = Just Sp + 0;
                     _cfk::P64 = R1;
                     //tick src<rts/PrimOps.cmm:(1243,1)-(1245,1)>
                     R1 = I64[_cfk::P64 + 8 + 8 + 0 * 8];
                     call stg_atomicallyzh(R1) args: 8, res: 0, upd: 8;
               }
           }, <---- OPENING BRACE MISSING
      
      After this patch:
      
           stg_atomically_entry() { //  [R1] <---- MISSING OPENING BRACE HERE
                   { info_tbls: [(cfl,
                                  label: stg_atomically_info
                                  rep: tag:16 HeapRep 1 ptrs { Thunk }
                                  srt: Nothing)]
                     stack_info: arg_space: 8 updfr_space: Just 8
                   }
               {offset
                 cfl: // cfk
                     unwind Sp = Just Sp + 0;
                     _cfk::P64 = R1;
                     //tick src<rts/PrimOps.cmm:(1243,1)-(1245,1)>
                     R1 = I64[_cfk::P64 + 8 + 8 + 0 * 8];
                     call stg_atomicallyzh(R1) args: 8, res: 0, upd: 8;
               }
           },
      db8e3275
    • John Ericson's avatar
      hadrian: Fix generation of settings · f80d3afd
      John Ericson authored
      I jumbled some lines in e529c65e,
      messing up the leading underscores and rts ways settings. This broke at
      least stage1 linking on macOS, but probably loads of other things too.
      
      Should fix #16685 and #16658.
      f80d3afd
    • Jasper Van der Jeugt's avatar
      Fix padding of entries in .prof files · 95b79173
      Jasper Van der Jeugt authored
      When the number of entries of a cost centre reaches 11 digits, it takes
      up the whole space reserved for it and the prof file ends up looking
      like:
      
          ... no.        entries  %time %alloc   %time %alloc
      
              ...
          ... 120918     978250    0.0    0.0     0.0    0.0
          ... 118891          0    0.0    0.0    73.3   80.8
          ... 11890229702412351    8.9   13.5    73.3   80.8
          ... 118903  153799689    0.0    0.1     0.0    0.1
              ...
      
      This results in tooling not being able to parse the .prof file.  I
      realise we have the JSON output as well now, but still it'd be good to
      fix this little weirdness.
      
      Original bug report and full prof file can be seen here:
      <https://github.com/jaspervdj/profiteur/issues/28>.
      95b79173
    • Simon Jakobi's avatar
      base: Include (<$) in all exports of Functor · 6d188dd5
      Simon Jakobi authored
      Previously the haddocks for Control.Monad and Data.Functor gave
      the impression that `fmap` was the only Functor method.
      
      Fixes #16681.
      6d188dd5
    • Sebastian Graf's avatar
      Add a pprTraceWith function · 723216e3
      Sebastian Graf authored
      723216e3
    • Krzysztof Gogolewski's avatar
      Fix tcfail158 (#15899) · 1f51aad6
      Krzysztof Gogolewski authored
      As described in #15899, this test was broken, but now it's back
      to normal.
      1f51aad6
    • Josh Price's avatar
      Correct the large tuples section in user's guide · 3f6e5b97
      Josh Price authored
      Fixes #16644.
      3f6e5b97
    • mizunashi_mana's avatar
      Fix typo of primop format · dcd843ac
      mizunashi_mana authored
      dcd843ac
    • Alp Mestanogullari's avatar
      Hadrian: Fix problem with unlit path in settings file · 01f8e390
      Alp Mestanogullari authored
      e529c65e introduced a problem in the logic for generating the
      path to the unlit command in the settings file, and this patches
      fixes it.
      
      This fixes many tests, the simplest of which is:
      
      > _build/stage1/bin/ghc testsuite/tests/parser/should_fail/T8430.lhs
      
      which failed because of a wrong path for unlit, and now fails for the right
      reason, with the error message expected for this test.
      
      This addresses #16659.
      01f8e390
    • Moritz Angermann's avatar
      Lowercase windows imports · 4b228768
      Moritz Angermann authored
      While windows and macOS are currently on case-insensitive file
      systems, this poses no issue on those.  When cross compiling from
      linux with a case sensitive file system and mingw providing only
      lowercase headers, this in fact produces an issue.  As such we just
      lowercase the import headers, which should still work fine on a
      case insensitive file system and also enable mingw's headers to
      be usable porperly.
      4b228768
  4. 26 May, 2019 1 commit
    • isovector's avatar
      Let the specialiser work on dicts under lambdas · 2d0cf625
      isovector authored
      Following the discussion under #16473, this change allows the
      specializer to work on any dicts in a lambda, not just those that occur
      at the beginning.
      
      For example, if you use data types which contain dictionaries and
      higher-rank functions then once these are erased by the optimiser you
      end up with functions such as:
      
      ```
        go_s4K9
        Int#
        -> forall (m :: * -> *).
           Monad m =>
           (forall x. Union '[State (Sum Int)] x -> m x) -> m ()
      ```
      
      The dictionary argument is after the Int# value argument, this patch
      allows `go` to be specialised.
      2d0cf625
  5. 25 May, 2019 2 commits
  6. 24 May, 2019 6 commits
    • Michael Sloan's avatar
      Add PlainPanic for throwing exceptions without depending on pprint · d9dfbde3
      Michael Sloan authored
      This commit splits out a subset of GhcException which do not depend on
      pretty printing (SDoc), as a new datatype called
      PlainGhcException. These exceptions can be caught as GhcException,
      because 'fromException' will convert them.
      
      The motivation for this change is that that the Panic module
      transitively depends on many modules, primarily due to pretty printing
      code.  It's on the order of about 130 modules.  This large set of
      dependencies has a few implications:
      
      1. To avoid cycles / use of boot files, these dependencies cannot
      throw GhcException.
      
      2. There are some utility modules that use UnboxedTuples and also use
      `panic`. This means that when loading GHC into GHCi, about 130
      additional modules would need to be compiled instead of
      interpreted. Splitting the non-pprint exception throwing into a new
      module resolves this issue. See #13101
      d9dfbde3
    • David Eichmann's avatar
      Allow metric change after reverting "Add Generic tuple instances up to 15-tuple" #16688 · c931f256
      David Eichmann authored
      Metrics increased on commit 5eb94454 and
      decreased on revert commit 535a26c9.
      
      Metric Decrease:
          T9630
          haddock.base
      c931f256
    • Ryan Scott's avatar
      Some forall-related cleanup in deriving code · 6eedbd83
      Ryan Scott authored
      * Tweak the parser to allow `deriving` clauses to mention explicit
        `forall`s or kind signatures without gratuitous parentheses.
        (This fixes #14332 as a consequence.)
      * Allow Haddock comments on `deriving` clauses with explicit
        `forall`s. This requires corresponding changes in Haddock.
      6eedbd83
    • Iavor S. Diatchki's avatar
      Add a `NOINLINE` pragma on `someNatVal` (#16586) · 59f4cb6f
      Iavor S. Diatchki authored
      This fixes #16586, see `Note [NOINLINE someNatVal]` for details.
      59f4cb6f
    • Ömer Sinan Ağacan's avatar
      Add a test for #16597 · 0b449d34
      Ömer Sinan Ağacan authored
      0b449d34
    • Alp Mestanogullari's avatar
      add an --hadrian mode to ./validate · 04b4b984
      Alp Mestanogullari authored
      When the '--hadrian' flag is passed to the validate script, we use hadrian
      to build GHC, package it up in a binary distribution and later on run GHC's
      testsuite against the said bindist, which gets installed locally in the process.
      
      Along the way, this commit fixes a typo, an omission (build iserv binaries
      before producing the bindist archive) and moves the Makefile that enables
      'make install' on those bindists from being a list of strings in the code to
      an actual file (it was becoming increasingly annoying to work with).
      
      Finally, the Settings.Builders.Ghc part of this patch is necessary for being
      able to use the installed binary distribution, in 'validate'.
      04b4b984
  7. 23 May, 2019 1 commit
  8. 22 May, 2019 8 commits
    • Luite Stegeman's avatar
    • Ryan Scott's avatar
      Use HsTyPats in associated type family defaults · 6efe04de
      Ryan Scott authored
      Associated type family default declarations behave strangely in a
      couple of ways:
      
      1. If one tries to bind the type variables with an explicit `forall`,
         the `forall`'d part will simply be ignored. (#16110)
      2. One cannot use visible kind application syntax on the left-hand
         sides of associated default equations, unlike every other form
         of type family equation. (#16356)
      
      Both of these issues have a common solution. Instead of using
      `LHsQTyVars` to represent the left-hand side arguments of an
      associated default equation, we instead use `HsTyPats`, which is what
      other forms of type family equations use. In particular, here are
      some highlights of this patch:
      
      * `FamEqn` is no longer parameterized by a `pats` type variable, as
        the `feqn_pats` field is now always `HsTyPats`.
      * The new design for `FamEqn` in chronicled in
        `Note [Type family instance declarations in HsSyn]`.
      * `TyFamDefltEqn` now becomes the same thing as `TyFamInstEqn`. This
        means that many of `TyFamDefltEqn`'s code paths can now reuse the
        code paths for `TyFamInstEqn`, resulting in substantial
        simplifications to various parts of the code dealing with
        associated type family defaults.
      
      Fixes #16110 and #16356.
      6efe04de
    • Alp Mestanogullari's avatar
      Hadrian: add --test-root-dirs, to only run specific directories of tests · 2c15b85e
      Alp Mestanogullari authored
      We can specify several of those, by using the flag multiple times or
      just once but combining the directories with ':'.
      
      Along the way, this patch also fixes the testsuite-related --only flag,
      so that we can use it many times instead of being force to specify a
      space-separated list of test in a single --only flag.
      2c15b85e
    • Alec Theriault's avatar
      RTS: Fix restrictive cast · ecc9366a
      Alec Theriault authored
      Commit e75a9afd added an `unsigned` cast
      to account for OSes that have signed `rlim_t` signed. Unfortunately,
      the `unsigned` cast has the unintended effect of narrowing `rlim_t` to
      only 4 bytes. This leads to some spurious out of memory crashes
      (in particular: Haddock crashes with OOM whenn building docs of
      `ghc`-the-library).
      
      In this case, `W_` is a better type to cast to: we know it will be
      unsigned too and it has the same type as `*len` (so we don't suffer from
      accidental narrowing).
      ecc9366a
    • KevinBuhr's avatar
      78c3f330
    • Michael Sloan's avatar
      ddae344e
    • Michael Sloan's avatar
      Have GHCi use object code for UnboxedTuples modules #15454 · 21272670
      Michael Sloan authored
      The idea is to automatically enable -fobject-code for modules that use
      UnboxedTuples, along with all the modules they depend on. When looking
      into how to solve this, I was pleased to find that there was already
      highly similar logic for enabling code generation when -fno-code is
      specified but TemplateHaskell is used.
      
      The state before this patch was that if you used unboxed tuples then you
      had to enable `-fobject-code` globally rather than on a per module
      basis.
      21272670
    • Julian Leviston's avatar
  9. 21 May, 2019 4 commits