Skip to content
Snippets Groups Projects
  1. Jan 28, 2023
  2. Jan 27, 2023
  3. Jan 26, 2023
  4. Jan 25, 2023
  5. Jan 24, 2023
    • Cheng Shao's avatar
      CmmToC: fix CmmRegOff for 64-bit register on a 32-bit target · d151546e
      Cheng Shao authored and Marge Bot's avatar Marge Bot committed
      We used to print the offset value to a platform word sized integer.
      This is incorrect when the offset is negative (e.g. output of cmm
      constant folding) and the register is 64-bit but on a 32-bit target,
      and may lead to incorrect runtime result (e.g. #22607).
      
      The fix is simple: just treat it as a proper MO_Add, with the correct
      width info inferred from the register itself.
      
      Metric Increase:
          T12707
          T13379
          T4801
          T5321FD
          T5321Fun
      d151546e
    • Tom Ellis's avatar
      Clarify where `f` is defined · 05e6a2d9
      Tom Ellis authored and Marge Bot's avatar Marge Bot committed
      05e6a2d9
    • Matthew Pickering's avatar
      Add test for T22671 · 1c050ed2
      Matthew Pickering authored and Marge Bot's avatar Marge Bot committed
      This was fixed by b13c6ea5
      
      Closes #22671
      1c050ed2
    • Krzysztof Gogolewski's avatar
      Fix Lint check for duplicate external names · 34d2d463
      Krzysztof Gogolewski authored and Marge Bot's avatar Marge Bot committed
      Lint was checking for duplicate external names by calling removeDups,
      which needs a comparison function that is passed to Data.List.sortBy.
      But the comparison was not a valid ordering - it returned LT
      if one of the names was not external.
      For example, the previous implementation won't find a duplicate in
      [M.x, y, M.x].
      Instead, we filter out non-external names before looking for duplicates.
      34d2d463
    • Matthew Pickering's avatar
      Debug: Print full NodeKey when pretty printing ModuleGraphNode · be701cc6
      Matthew Pickering authored and Marge Bot's avatar Marge Bot committed
      This is helpful when debugging multiple component issues.
      be701cc6
    • Matthew Pickering's avatar
      Finder: Look in current unit before looking in any home package dependencies · ada29f5c
      Matthew Pickering authored and Marge Bot's avatar Marge Bot committed
      In order to preserve existing behaviour it's important to look within the current component before consideirng a module might come from an external component.
      
      This already happened by accident in `downsweep`, (because roots are used to repopulated the cache) but in the `Finder` the logic was the wrong way around.
      
      Fixes #22680
      
      -------------------------
      Metric Decrease:
          MultiComponentModules
          MultiComponentModulesRecomp
      -------------------------p
      ada29f5c
    • Matthew Pickering's avatar
      Key ModSummary cache by UnitId as well as FilePath · 4fe9eaff
      Matthew Pickering authored and Marge Bot's avatar Marge Bot committed
      Multiple units can refer to the same files without any problem. Just
      another assumption which needs to be updated when we may have multiple
      home units.
      
      However, there is the invariant that within each unit each file only
      maps to one module, so as long as we also key the cache by UnitId then
      we are all good.
      
      This led to some confusing behaviour in GHCi when reloading,
      multipleHomeUnits_shared distils the essence of what can go wrong.
      
      Fixes #22679
      4fe9eaff
    • Matthew Pickering's avatar
      Improve driver diagnostic messages by including UnitId in message · 06cc0a95
      Matthew Pickering authored and Marge Bot's avatar Marge Bot committed
      Currently the driver diagnostics don't give any indication about which unit they correspond to.
      
      For example `-Wmissing-home-modules` can fire multiple times for each different home unit and gives no indication about which unit it's actually reporting about.
      
      Perhaps a longer term fix is to generalise the providence information away from a SrcSpan so that these kind of whole project errors can be reported with an accurate provenance. For now we can just include the `UnitId` in the error message.
      
      Fixes #22678
      06cc0a95
    • Matthew Pickering's avatar
      Don't write o-boot files in Interactive mode · 6469fea7
      Matthew Pickering authored and Marge Bot's avatar Marge Bot committed
      We should not be producing object files when in interactive mode but we
      still produced the dummy o-boot files. These never made it into a
      `Linkable` but then confused the recompilation checker.
      
      Fixes #22669
      6469fea7
    • Matthew Pickering's avatar
      Recompilation checking: Don't try to find artefacts for Interactive & hs-boot combo · 336b2b1c
      Matthew Pickering authored and Marge Bot's avatar Marge Bot committed
      In interactive mode we don't produce any linkables for hs-boot files. So
      we also need to not going looking for them when we check to see if we
      have all the right objects needed for recompilation.
      
      Ticket #22669
      336b2b1c
    • Matthew Pickering's avatar
      Use NodeKey rather than ModuleName in pruneCache · 69500dd4
      Matthew Pickering authored and Marge Bot's avatar Marge Bot committed
      The `pruneCache` function assumes that the list of `CachedInfo` all have unique `ModuleName`, this is not true:
      
      * In normal compilation, the same module name can appear for a file and it's boot file.
      * In multiple home unit compilation the same ModuleName can appear in different units
      
      The fix is to use a `NodeKey` as the actual key for the interfaces which includes `ModuleName`, `IsBoot` and `UnitId`.
      
      Fixes #22677
      69500dd4
    • Matthew Pickering's avatar
      Augment target filepath by working directory when checking if module satisfies target · 7bfb30f9
      Matthew Pickering authored and Marge Bot's avatar Marge Bot committed
      This fixes a spurious warning in -Wmissing-home-modules.
      
      This is a simple oversight where when looking for the target in the
      first place we augment the search by the -working-directory flag but
      then fail to do so when checking this warning.
      
      Fixes #22676
      7bfb30f9
    • Matthew Pickering's avatar
      Fix recompilation checking for multiple home units · 1d1dd3fb
      Matthew Pickering authored and Marge Bot's avatar Marge Bot committed
      The key part of this change is to store a UnitId in the
      `UsageHomeModule` and `UsageHomeModuleInterface`.
      
      * Fine-grained dependency tracking is used if the dependency comes from
        any home unit.
      * We actually look up the right module when checking whether we need to
        recompile in the `UsageHomeModuleInterface` case.
      
      These scenarios are both checked by the new tests (
      multipleHomeUnits_recomp and multipleHomeUnits_recomp_th )
      
      Fixes #22675
      1d1dd3fb
Loading