Skip to content
Snippets Groups Projects
  1. Mar 09, 2021
    • Vladislav Zavialov's avatar
      Location for tuple section pattern error (#19504) · df8e8ba2
      Vladislav Zavialov authored and Marge Bot's avatar Marge Bot committed
      This fixes a regression that led to loss of location information
      in error messages about the use of tuple sections in patterns.
      df8e8ba2
    • Ryan Scott's avatar
      Fix some warnings when bootstrapping with GHC 9.0 · e9189745
      Ryan Scott authored and Marge Bot's avatar Marge Bot committed
      This fixes two classes of warnings that appear when bootstrapping with GHC 9.0:
      
      * `ghc-boot.cabal` was using `cabal-version: >=1.22`, which `cabal-install-3.4`
        now warns about, instead recommending the use of `cabal-version: 1.22`.
      * Several pattern matches were producing `Pattern match(es) are non-exhaustive`
        because of incorrect CPP. The pattern-match coverage checker _did_ become
        smarter in GHC 9.1, however, so I ended up needing to keep the CPP, adjusting
        them to use `#if __GLASGOW_HASKELL__ < 901` instead.
      e9189745
    • Simon Peyton Jones's avatar
      Fixes to dealing with the export of main · 8fe274e2
      Simon Peyton Jones authored and Marge Bot's avatar Marge Bot committed
      It's surprisingly tricky to deal with 'main' (#19397). This
      patch does quite bit of refactoring do to it right. Well,
      more-right anyway!
      
      The moving parts are documented in GHC.Tc.Module
         Note [Dealing with main]
      
      Some other oddments:
      
      * Rename tcRnExports to rnExports; no typechecking here!
      
      * rnExports now uses checkNoErrs rather than failIfErrsM;
        the former fails only if rnExports itself finds errors
      
      * Small improvements to tcTyThingCategory, which ultimately
        weren't important to the patch, but I've retained as
        a minor improvement.
      8fe274e2
    • Vladislav Zavialov's avatar
      Replace Ord TyLit with nonDetCmpTyLit (#19441) · aaa5fc21
      Vladislav Zavialov authored and Marge Bot's avatar Marge Bot committed
      The Ord instance was non-deterministic, but it's easy assume that it is
      deterministic. In fact, haddock-api used to do exactly that
      before haddock/7e8c7c3491f3e769368b8e6c767c62a33e996c80
      aaa5fc21
    • Andreas Klebinger's avatar
      Add a distclean command to hadrian. · 7a728ca6
      Andreas Klebinger authored and Marge Bot's avatar Marge Bot committed
      Hadrian should behave well and not delete files created by configure
      with the clean command. With this patch hadrian now deletes the fs/mingw
      tarballs only with distclean.
      
      This fixes #19320. The main impact being that validate won't have to
      redownload the tarballs when re-run.
      7a728ca6
    • Ryan Scott's avatar
      Document operator sections' interaction with subsumption · 376427ec
      Ryan Scott authored and Marge Bot's avatar Marge Bot committed
      This resolves #19457 by making a note of breaking changes (introduced in
      GHC 9.2) to the way that GHC typechecks operator sections where the operator
      has nested `forall`s or contexts in its type signature.
      376427ec
    • Ryan Scott's avatar
      Require GHC 8.10 as the minimum compiler for bootstrapping · 0a709dd9
      Ryan Scott authored and Marge Bot's avatar Marge Bot committed
      Now that GHC 9.0.1 is released, it is time to drop support for bootstrapping
      with GHC 8.8, as we only support building with the previous two major GHC
      releases. As an added bonus, this allows us to remove several bits of CPP that
      are either always true or no longer reachable.
      0a709dd9
  2. Mar 08, 2021
  3. Mar 07, 2021
    • Ben Gamari's avatar
      Implement BoxedRep proposal · 3e082f8f
      Ben Gamari authored
      This implements the BoxedRep proposal, refactoring the `RuntimeRep`
      hierarchy from:
      
      ```haskell
      data RuntimeRep = LiftedPtrRep | UnliftedPtrRep | ...
      ```
      
      to
      
      ```haskell
      data RuntimeRep = BoxedRep Levity | ...
      data Levity = Lifted | Unlifted
      ```
      
      Updates binary, haddock submodules.
      
      Closes #17526.
      
      Metric Increase:
          T12545
      3e082f8f
    • Shayne Fletcher's avatar
      Implement record dot syntax · cf65cf16
      Shayne Fletcher authored and Ben Gamari's avatar Ben Gamari committed
      cf65cf16
  4. Mar 06, 2021
  5. Mar 05, 2021
  6. Mar 03, 2021
    • Matthew Pickering's avatar
      IPE: Give all constructor and function tables locations · f943edb0
      Matthew Pickering authored
      During testing it was observed that quite a few info tables were not
      being given locations (due to not being assigned source locations,
      because they were not enclosed by a source note). We can at least give
      the module name and type for such closures even if no more accurate
      source information.
      
      Especially for constructors this helps find them in the STG dumps.
      f943edb0
    • Matthew Pickering's avatar
    • Matthew Pickering's avatar
      f121ffe4
    • Matthew Pickering's avatar
    • Matthew Pickering's avatar
      Add test for whereFrom# · db80a5cc
      Matthew Pickering authored
      db80a5cc
    • Matthew Pickering's avatar
      Add whereFrom and whereFrom# primop · 9087899e
      Matthew Pickering authored
      The `whereFrom` function provides a Haskell interface for using the
      information created by `-finfo-table-map`. Given a Haskell value, the
      info table address will be passed to the `lookupIPE` function in order
      to attempt to find the source location information for that particular closure.
      
      At the moment it's not possible to distinguish the absense of the map
      and a failed lookup.
      9087899e
    • Matthew Pickering's avatar
      Add option to give each usage of a data constructor its own info table · a7aac008
      Matthew Pickering authored
      The `-fdistinct-constructor-tables` flag will generate a fresh info
      table for the usage of any data constructor. This is useful for
      debugging as now by inspecting the info table, you can determine which
      usage of a constructor caused that allocation rather than the old
      situation where the info table always mapped to the definition site of
      the data constructor which is useless.
      
      In conjunction with `-hi` and `-finfo-table-map` this gives a more fine
      grained understanding of where constructor allocations arise from in a
      program.
      a7aac008
    • Matthew Pickering's avatar
      Add -finfo-table-map which maps info tables to source positions · 4b297979
      Matthew Pickering authored
      This new flag embeds a lookup table from the address of an info table
      to information about that info table.
      
      The main interface for consulting the map is the `lookupIPE` C function
      
      > InfoProvEnt * lookupIPE(StgInfoTable *info)
      
      The `InfoProvEnt` has the following structure:
      
      > typedef struct InfoProv_{
      >     char * table_name;
      >     char * closure_desc;
      >     char * ty_desc;
      >     char * label;
      >     char * module;
      >     char * srcloc;
      > } InfoProv;
      >
      > typedef struct InfoProvEnt_ {
      >     StgInfoTable * info;
      >     InfoProv prov;
      >     struct InfoProvEnt_ *link;
      > } InfoProvEnt;
      
      The source positions are approximated in a similar way to the source
      positions for DWARF debugging information. They are only approximate but
      in our experience provide a good enough hint about where the problem
      might be. It is therefore recommended to use this flag in conjunction
      with `-g<n>` for more accurate locations.
      
      The lookup table is also emitted into the eventlog when it is available
      as it is intended to be used with the `-hi` profiling mode.
      
      Using this flag will significantly increase the size of the resulting
      object file but only by a factor of 2-3x in our experience.
      4b297979
    • Matthew Pickering's avatar
      Profiling by info table mode (-hi) · 8402ea95
      Matthew Pickering authored
      This profiling mode creates bands by the address of the info table for
      each closure. This provides a much more fine-grained profiling output
      than any of the other profiling modes.
      
      The `-hi` profiling mode does not require a profiling build.
      8402ea95
Loading