Skip to content
Snippets Groups Projects
  1. Apr 29, 2022
  2. Apr 28, 2022
    • Teo Camarasu's avatar
      add since annotation for GHC.Stack.CCS.whereFrom · 292e3971
      Teo Camarasu authored and Marge Bot's avatar Marge Bot committed
      292e3971
    • Ben Gamari's avatar
      configure: Bump GHC version to 9.5 · ca1434e3
      Ben Gamari authored and Marge Bot's avatar Marge Bot committed
      Bumps haddock submodule.
      ca1434e3
    • Simon Peyton Jones's avatar
      Add INLINE pragmas for Enum helper methods · 43bd897d
      Simon Peyton Jones authored and Marge Bot's avatar Marge Bot committed
      As #21343 showed, we need to be super-certain that the "helper
      methods" for Enum instances are actually inlined or specialised.
      
      I also tripped over this when I discovered that numericEnumFromTo
      and friends had no pragmas at all, so their performance was very
      fragile.  If they weren't inlined, all bets were off.  So I've added
      INLINE pragmas for them too.
      
      See new Note [Inline Enum method helpers] in GHC.Enum.
      
      I also expanded Note [Checking for INLINE loop breakers] in
      GHC.Core.Lint to explain why an INLINE function might temporarily
      be a loop breaker -- this was the initial bug report in #21343.
      
      Strangely we get a 16% runtime allocation decrease in
      perf/should_run/T15185, but only on i386.  Since it moves in the right
      direction I'm disinclined to investigate, so I'll accept it.
      
      Metric Decrease:
          T15185
      43bd897d
    • sheaf's avatar
      Fix unification of ConcreteTvs, removing IsRefl# · a8c99391
      sheaf authored and Marge Bot's avatar Marge Bot committed
      This patch fixes the unification of concrete type variables.
      The subtlety was that unifying concrete metavariables is more subtle
      than other metavariables, as decomposition is possible. See the Note
      [Unifying concrete metavariables], which explains how we unify a
      concrete type variable with a type 'ty' by concretising 'ty', using
      the function 'GHC.Tc.Utils.Concrete.concretise'.
      
      This can be used to perform an eager syntactic check for concreteness,
      allowing us to remove the IsRefl# special predicate. Instead of emitting
      two constraints `rr ~# concrete_tv` and `IsRefl# rr concrete_tv`, we
      instead concretise 'rr'. If this succeeds we can fill 'concrete_tv',
      and otherwise we directly emit an error message to the typechecker
      environment instead of deferring. We still need the error message
      to be passed on (instead of directly thrown), as we might benefit from
      further unification in which case we will need to zonk the stored types.
      To achieve this, we change the 'wc_holes' field of 'WantedConstraints'
      to 'wc_errors', which stores general delayed errors. For the moement,
      a delayed error is either a hole, or a syntactic equality error.
      
      hasFixedRuntimeRep_MustBeRefl is now hasFixedRuntimeRep_syntactic, and
      hasFixedRuntimeRep has been refactored to directly return the most
      useful coercion for PHASE 2 of FixedRuntimeRep.
      
      This patch also adds a field ir_frr to the InferResult datatype,
      holding a value of type Maybe FRROrigin. When this value is not
      Nothing, this means that we must fill the ir_ref field with a type
      which has a fixed RuntimeRep.
      When it comes time to fill such an ExpType, we ensure that the type
      has a fixed RuntimeRep by performing a representation-polymorphism
      check with the given FRROrigin
      This is similar to what we already do to ensure we fill an Infer
      ExpType with a type of the correct TcLevel.
      This allows us to properly perform representation-polymorphism checks
      on 'Infer' 'ExpTypes'.
      
      The fillInferResult function had to be moved to GHC.Tc.Utils.Unify
      to avoid a cyclic import now that it calls hasFixedRuntimeRep.
      
      This patch also changes the code in matchExpectedFunTys to make use
      of the coercions, which is now possible thanks to the previous change.
      This implements PHASE 2 of FixedRuntimeRep in some situations.
      For example, the test cases T13105 and T17536b are now both accepted.
      
      Fixes #21239 and #21325
      
      -------------------------
      Metric Decrease:
          T18223
          T5631
      -------------------------
      a8c99391
    • Ben Gamari's avatar
      Bump process submodule · 61305184
      Ben Gamari authored and Marge Bot's avatar Marge Bot committed
      61305184
    • Ben Gamari's avatar
      hadrian: Clean up flavour transformer definitions · da8ae7f2
      Ben Gamari authored and Marge Bot's avatar Marge Bot committed
      Previously the `ipe` and `omit_pragmas` transformers were hackily
      defined using the textual key-value syntax. Fix this.
      da8ae7f2
    • Matthew Pickering's avatar
      769279e6
    • Douglas Wilson's avatar
      hadrian: Don't pass -rtsopts when building libraries · f9728fdb
      Douglas Wilson authored and Marge Bot's avatar Marge Bot committed
      f9728fdb
    • Douglas Wilson's avatar
      hadrian: add debug_ghc and debug_stage1_ghc flavour transformers · 4ad559c8
      Douglas Wilson authored and Marge Bot's avatar Marge Bot committed
      4ad559c8
    • Douglas Wilson's avatar
      654bafea
    • Douglas Wilson's avatar
      hadrian: Add Monoid instance to Way · c7a3dc29
      Douglas Wilson authored and Marge Bot's avatar Marge Bot committed
      c7a3dc29
    • Ben Gamari's avatar
      testsuite: Add performance test for #14766 · f6a8185d
      Ben Gamari authored
      This distills the essence of the Sigs.hs program found in the ticket.
      f6a8185d
  3. Apr 27, 2022
  4. Apr 25, 2022
Loading