Skip to content
Snippets Groups Projects
  1. Apr 23, 2020
    • John Ericson's avatar
      Trees That Grow refactor for `ConPat` and `CoPat` · c42754d5
      John Ericson authored and Marge Bot's avatar Marge Bot committed
      - `ConPat{In,Out}` -> `ConPat`
      
      - `CoPat` -> `XPat (CoPat ..)`
      
      Note that `GHC.HS.*` still uses `HsWrap`, but only when `p ~ GhcTc`.
      After this change, moving the type family instances out of `GHC.HS.*` is
      sufficient to break the cycle.
      
      Add XCollectPat class to decide how binders are collected from XXPat based on the pass.
      
      Previously we did this with IsPass, but that doesn't work for Haddock's
      DocNameI, and the constraint doesn't express what actual distinction is being
      made. Perhaps a class for collecting binders more generally is in order, but we
      haven't attempted this yet.
      
      Pure refactor of code around ConPat
      
       - InPat/OutPat synonyms removed
      
       - rename several identifiers
      
       - redundant constraints removed
      
       - move extension field in ConPat to be first
      
       - make ConPat use record syntax more consistently
      
      Fix T6145 (ConPatIn became ConPat)
      
      Add comments from SPJ.
      
      Add comment about haddock's use of CollectPass.
      
      Updates haddock submodule.
      c42754d5
    • Ben Gamari's avatar
      testsuite: Don't attempt to read .std{err,out} files if they don't exist · 5946c85a
      Ben Gamari authored and Marge Bot's avatar Marge Bot committed
      Simon reports that he was previously seeing framework failures due to
      an attempt to read the non-existing T13456.stderr. While I don't know
      exactly what this is due to, it does seem like a non-existing
      .std{out,err} file should be equivalent to an empty file. Teach the
      testsuite driver to treat it as such.
      5946c85a
    • Ben Gamari's avatar
      hadrian/ghci: Allow arguments to be passed to GHCi · 339e8ece
      Ben Gamari authored and Marge Bot's avatar Marge Bot committed
      Previously the arguments passed to hadrian/ghci were passed both to
      `hadrian` and GHCi. This is rather odd given that there are essentially
      not arguments in the intersection of the two. Let's just pass them to
      GHCi; this allows `hadrian/ghci -Werror`.
      339e8ece
    • Ryan Scott's avatar
      Create di_scoped_tvs for associated data family instances properly · cd8409c2
      Ryan Scott authored and Marge Bot's avatar Marge Bot committed
      See `Note [Associated data family instances and di_scoped_tvs]` in
      `GHC.Tc.TyCl.Instance`, which explains all of the moving parts.
      
      Fixes #18055.
      cd8409c2
    • Sylvain Henry's avatar
      RTS: workaround a Linux kernel bug in timerfd · 8ea37b01
      Sylvain Henry authored and Marge Bot's avatar Marge Bot committed
      Reading a timerfd may return 0: https://lkml.org/lkml/2019/8/16/335.
      
      This is currently undocumented behavior and documentation "won't happen
      anytime soon" (https://lkml.org/lkml/2020/2/13/295).
      
      With this patch, we just ignore the result instead of crashing. It may
      fix #18033 but we can't be sure because we don't have enough
      information.
      
      See also this discussion about the kernel bug:
      https://github.com/Azure/sonic-swss-common/pull/302/files/1f070e7920c2e5d63316c0105bf4481e73d72dc9
      8ea37b01
    • Ömer Sinan Ağacan's avatar
      Remove leftover comment in tcRnModule', redundant bind · 125aa2b8
      Ömer Sinan Ağacan authored and Marge Bot's avatar Marge Bot committed
      The code for the comment was moved in dc8c03b2 but the comment was
      forgotten.
      125aa2b8
    • Ryan Scott's avatar
      Update commentary and slightly refactor GHC.Tc.Deriv.Infer · c409961a
      Ryan Scott authored and Marge Bot's avatar Marge Bot committed
      There was some out-of-date commentary in `GHC.Tc.Deriv.Infer` that
      has been modernized. Along the way, I removed the `bad` constraints
      in `simplifyDeriv`, which did not serve any useful purpose (besides
      being printed in debugging output).
      
      Fixes #18073.
      c409961a
    • Moritz Angermann's avatar
    • Ben Gamari's avatar
      llvmGen: Remove -fast-llvm flag · 4b4a8b60
      Ben Gamari authored and Marge Bot's avatar Marge Bot committed
      Issue #18076 drew my attention to the undocumented `-fast-llvm` flag for
      the LLVM code generator introduced in
      22733532. Speaking to Moritz about this,
      the motivation for this flag was to avoid potential incompatibilities
      between LLVM and the assembler/linker toolchain by making LLVM
      responsible for machine-code generation.
      
      Unfortunately, this cannot possibly work: the LLVM backend's mangler
      performs a number of transforms on the assembler generated by LLVM that
      are necessary for correctness. These are currently:
      
       * mangling Haskell functions' symbol types to be `object` instead of
         `function` on ELF platforms (necessary for tables-next-to-code)
       * mangling AVX instructions to ensure that we don't assume alignment
         (which LLVM otherwise does)
       * mangling Darwin's  subsections-via-symbols directives
      
      Given that these are all necessary I don't believe that we can support
      `-fast-llvm`. Let's rather remove it.
      4b4a8b60
    • Andreas Klebinger's avatar
      Add "ddump-cmm-opt" as alias for "ddump-opt-cmm". · c29f0fa6
      Andreas Klebinger authored and Marge Bot's avatar Marge Bot committed
      c29f0fa6
    • Ben Gamari's avatar
      rts: Ensure that sigaction structs are initialized · 6f84aca3
      Ben Gamari authored and Marge Bot's avatar Marge Bot committed
      I noticed these may have uninitialized fields when looking into #18037.
      The reporter says that zeroing them doesn't fix the MSAN failures they
      observe but zeroing them is the right thing to do regardless.
      6f84aca3
    • Simon Peyton Jones's avatar
      Do eager instantation in terms · ffde2348
      Simon Peyton Jones authored and Marge Bot's avatar Marge Bot committed
      This patch implements eager instantiation, a small but critical change
      to the type inference engine, #17173.  The main change is this:
      
        When inferring types, always return an instantiated type
        (for now, deeply instantiated; in future shallowly instantiated)
      
      There is more discussion in
      https://www.tweag.io/posts/2020-04-02-lazy-eager-instantiation.html
      
      There is quite a bit of refactoring in this patch:
      
      * The ir_inst field of GHC.Tc.Utils.TcType.InferResultk
        has entirely gone.  So tcInferInst and tcInferNoInst have collapsed
        into tcInfer.
      
      * Type inference of applications, via tcInferApp and
        tcInferAppHead, are substantially refactored, preparing
        the way for Quick Look impredicativity.
      
      * New pure function GHC.Tc.Gen.Expr.collectHsArgs and applyHsArgs
        are beatifully dual.  We can see the zipper!
      
      * GHC.Tc.Gen.Expr.tcArgs is now much nicer; no longer needs to return
        a wrapper
      
      * In HsExpr, HsTypeApp now contains the the actual type argument,
        and is used in desugaring, rather than putting it in a mysterious
        wrapper.
      
      * I struggled a bit with good error reporting in
        Unify.matchActualFunTysPart. It's a little bit simpler than before,
        but still not great.
      
      Some smaller things
      
      * Rename tcPolyExpr --> tcCheckExpr
               tcMonoExpr --> tcLExpr
      * tcPatSig moves from GHC.Tc.Gen.HsType to GHC.Tc.Gen.Pat
      
      Metric Decrease:
          T9961
      
      Reduction of 1.6% in comiler allocation on T9961, I think.
      ffde2348
    • Peter Trommler's avatar
      PPC NCG: Add DWARF constants and debug labels · 34a45ee6
      Peter Trommler authored and Marge Bot's avatar Marge Bot committed
      Fixes #11261
      34a45ee6
    • Roland Senn's avatar
      Fix tab-completion for :break (#17989) · 48b8951e
      Roland Senn authored and Marge Bot's avatar Marge Bot committed
      In tab-completion for the `:break` command, only those
      identifiers should be shown, that are accepted in the
      `:break` command. Hence these identifiers must be
      
      - defined in an interpreted module
      - top-level
      - currently in scope
      - listed in a `ModBreaks` value as a possible breakpoint.
      
      The identifiers my be qualified or unqualified.
      
      To get all possible top-level breakpoints for tab-completeion
      with the correct qualification do:
      
      1. Build the  list called `pifsBreaks` of all pairs of
      (Identifier, module-filename) from the `ModBreaks` values.
      Here all identifiers are unqualified.
      
      2. Build the list called `pifInscope` of all pairs of
      (Identifiers, module-filename) with identifiers from
      the `GlobalRdrEnv`. Take only those identifiers that are
      in scope and have the  correct prefix.
      Here the identifiers may be qualified.
      
      3. From the `pifInscope` list seclect all pairs that can be
      found in the `pifsBreaks` list, by comparing only the
      unqualified part of the identifier.
      The remaining identifiers can be used for tab-completion.
      
      This ensures, that we show only identifiers, that can be used
      in a `:break` command.
      48b8951e
    • Alexis King's avatar
      Mark DataCon wrappers CONLIKE · 6c9fae23
      Alexis King authored and Marge Bot's avatar Marge Bot committed
      Now that DataCon wrappers don’t inline until phase 0 (see commit
      b78cc64e), it’s important that
      case-of-known-constructor and RULE matching be able to see saturated
      applications of DataCon wrappers in unfoldings. Making them conlike is a
      natural way to do it, since they are, in fact, precisely the sort of
      thing the CONLIKE pragma exists to solve.
      
      Fixes #18012.
      
      This also bumps the version of the parsec submodule to incorporate a
      patch that avoids a metric increase on the haddock perf tests. The
      increase was not really a flaw in this patch, as parsec was implicitly
      relying on inlining heuristics. The patch to parsec just adds some
      INLINABLE pragmas, and we get a nice performance bump out of it (well
      beyond the performance we lost from this patch).
      
      Metric Decrease:
          T12234
          WWRec
          haddock.Cabal
          haddock.base
          haddock.compiler
      6c9fae23
    • John Ericson's avatar
      `MatchResult'` -> `MatchResult` · 401f7bb3
      John Ericson authored and Marge Bot's avatar Marge Bot committed
      Inline `MatchResult` alias accordingly.
      401f7bb3
    • John Ericson's avatar
      Generalize type of `matchCanFail` · 72cb6bcc
      John Ericson authored and Marge Bot's avatar Marge Bot committed
      72cb6bcc
    • John Ericson's avatar
      Inline `adjustMatchResult` · cde23cd4
      John Ericson authored and Marge Bot's avatar Marge Bot committed
      It is just `fmap`
      cde23cd4
    • John Ericson's avatar
      Remove panic in dsHandleMonadicFailure · dcb7fe5a
      John Ericson authored and Marge Bot's avatar Marge Bot committed
      Rework dsHandleMonadicFailure to be correct by construction instead of
      using an unreachable panic.
      dcb7fe5a
    • Jonathan DK Gibbons's avatar
      Refactor the `MatchResult` type in the desugarer · e8a5d81b
      Jonathan DK Gibbons authored and Marge Bot's avatar Marge Bot committed
      This way, it does a better job of proving whether or not the fail operator is used.
      e8a5d81b
    • Takenobu Tani's avatar
      stg-spec: Modify file paths according to new module hierarchy · ffd7eef2
      Takenobu Tani authored and Marge Bot's avatar Marge Bot committed
      This patch updates file paths according to new module hierarchy [1]:
      
        * GHC/Stg/Syntax.hs       <= stgSyn/StgSyn.hs
        * GHC/Types/Literal.hs    <= basicTypes/Literal.hs
        * GHC/Types/CostCentre.hs <= profiling/CostCentre.hs
      
      This patch also updates old file path [2]:
      
        * utils/genapply/Main.hs  <= utils/genapply/GenApply.hs
      
      [1]: https://gitlab.haskell.org/ghc/ghc/-/wikis/Make-GHC-codebase-more-modular
      [2]: commit 0cc4aad3
      
      [skip ci]
      ffd7eef2
  2. Apr 21, 2020
  3. Apr 20, 2020
  4. Apr 19, 2020
    • Alexis King's avatar
      Add missing addInScope call for letrec binders in OccurAnal · eaed0a32
      Alexis King authored and Marge Bot's avatar Marge Bot committed
      This fixes #18044, where a shadowed variable was incorrectly substituted
      by the binder swap on the RHS of a floated-in letrec. This can only
      happen when the uniques line up *just* right, so writing a regression
      test would be very difficult, but at least the fix is small and
      straightforward.
      eaed0a32
  5. Apr 18, 2020
Loading