1. 23 Apr, 2020 16 commits
    • Ömer Sinan Ağacan's avatar
      Remove leftover comment in tcRnModule', redundant bind · 125aa2b8
      Ömer Sinan Ağacan authored
      The code for the comment was moved in dc8c03b2 but the comment was
    • Ryan Scott's avatar
      Update commentary and slightly refactor GHC.Tc.Deriv.Infer · c409961a
      Ryan Scott authored
      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.
    • Moritz Angermann's avatar
    • Ben Gamari's avatar
      llvmGen: Remove -fast-llvm flag · 4b4a8b60
      Ben Gamari authored
      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.
    • Andreas Klebinger's avatar
    • Ben Gamari's avatar
      rts: Ensure that sigaction structs are initialized · 6f84aca3
      Ben Gamari authored
      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.
    • Simon Peyton Jones's avatar
      Do eager instantation in terms · ffde2348
      Simon Peyton Jones authored
      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
      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
      * 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:
      Reduction of 1.6% in comiler allocation on T9961, I think.
    • Peter Trommler's avatar
      PPC NCG: Add DWARF constants and debug labels · 34a45ee6
      Peter Trommler authored
      Fixes #11261
    • Roland Senn's avatar
      Fix tab-completion for :break (#17989) · 48b8951e
      Roland Senn authored
      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.
    • Alexis King's avatar
      Mark DataCon wrappers CONLIKE · 6c9fae23
      Alexis King authored
      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:
    • John Ericson's avatar
      `MatchResult'` -> `MatchResult` · 401f7bb3
      John Ericson authored
      Inline `MatchResult` alias accordingly.
    • John Ericson's avatar
      Generalize type of `matchCanFail` · 72cb6bcc
      John Ericson authored
    • John Ericson's avatar
      Inline `adjustMatchResult` · cde23cd4
      John Ericson authored
      It is just `fmap`
    • John Ericson's avatar
      Remove panic in dsHandleMonadicFailure · dcb7fe5a
      John Ericson authored
      Rework dsHandleMonadicFailure to be correct by construction instead of
      using an unreachable panic.
    • Jonathan DK Gibbons's avatar
      Refactor the `MatchResult` type in the desugarer · e8a5d81b
      Jonathan DK Gibbons authored
      This way, it does a better job of proving whether or not the fail operator is used.
    • Takenobu Tani's avatar
      stg-spec: Modify file paths according to new module hierarchy · ffd7eef2
      Takenobu Tani authored
      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]
  2. 21 Apr, 2020 7 commits
  3. 20 Apr, 2020 3 commits
  4. 19 Apr, 2020 1 commit
    • Alexis King's avatar
      Add missing addInScope call for letrec binders in OccurAnal · eaed0a32
      Alexis King authored
      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
  5. 18 Apr, 2020 8 commits
  6. 17 Apr, 2020 5 commits