Skip to content
Snippets Groups Projects
  1. May 09, 2022
  2. Apr 06, 2022
  3. Mar 05, 2022
  4. Mar 04, 2022
    • Robert Hensing's avatar
      Add test case for C++ exception handling · ddf209f3
      Robert Hensing authored and Ben Gamari's avatar Ben Gamari committed
      (cherry picked from commit 2133ab18)
      ddf209f3
    • Robert Hensing's avatar
      Add -fcompact-unwind · 1831d9eb
      Robert Hensing authored and Ben Gamari's avatar Ben Gamari committed
      This gives users the choice to enable __compact_unwind sections
      when linking. These were previously hardcoded to be removed.
      
      This can be used to solved the problem "C++ does not catch
      exceptions when used with Haskell-main and linked by ghc",
      ghc/ghc#11829
      
      It does not change the default behavior, because I can not
      estimate the impact this would have.
      
      When Apple first introduced the compact unwind ABI, a number of
      open source projects have taken the easy route of disabling it,
      avoiding errors or even just warnings shortly after its
      introduction.
      
      Since then, about a decade has passed, so it seems quite possible
      that Apple itself, and presumably many programs with it, have
      successfully switched to the new format, to the point where the
      old __eh_frame section support is in disrepair. Perhaps we should
      get along with the program, but for now we can test the waters
      with this flag, and use it to fix packages that need it.
      
      (cherry picked from commit 1496a2a7)
      1831d9eb
    • Tamar Christina's avatar
      windows: include aux lib dir path explicitly so e.g. cabal can't override it. · b3d7230e
      Tamar Christina authored and Ben Gamari's avatar Ben Gamari committed
      (cherry picked from commit 557db332)
      b3d7230e
    • Matthew Pickering's avatar
      Change lookupIdSubst panic back to a warning · 0438cc2e
      Matthew Pickering authored
      We don't want to backport the number of commits which were necessary to
      fix this issue for the 9.2.2 release so for now just turn it back into a
      warning.
      
      Partially reverts 0e5236ad
      0438cc2e
    • Ben Gamari's avatar
      Bump Cabal submodule to 3.6.3.0 · fbab2328
      Ben Gamari authored and Matthew Pickering's avatar Matthew Pickering committed
      fbab2328
    • Ben Gamari's avatar
      Ensure that wired-in exception closures aren't GC'd · e49057c5
      Ben Gamari authored and Matthew Pickering's avatar Matthew Pickering committed
      As described in Note [Wired-in exceptions are not CAFfy], a small set of
      built-in exception closures get special treatment in the code generator,
      being declared as non-CAFfy despite potentially containing CAF
      references. The original intent of this treatment for the RTS to then
      add StablePtrs for each of the closures, ensuring that they are not
      GC'd. However, this logic was not applied consistently and eventually
      removed entirely in 951c1fb0. This lead to #21141.
      
      Here we fix this bug by reintroducing the StablePtrs and document the
      status quo.
      
      Closes #21141.
      
      (cherry picked from commit 2ac45ba0)
      e49057c5
    • Ben Gamari's avatar
      rts: Factor out built-in GC roots · b4872b8e
      Ben Gamari authored and Matthew Pickering's avatar Matthew Pickering committed
      (cherry picked from commit 18d7007e)
      b4872b8e
  5. Mar 03, 2022
    • Ben Gamari's avatar
      bytestring: Bump to 0.11.3.0 · 99b1758c
      Ben Gamari authored
      See #20781.
      
      Metric increase due to new bytestring dependency on template-haskell
      which causes more interface files to be read (due to family instances).
      
      -------------------------
      Metric Increase:
          T9630
      -------------------------
      99b1758c
    • Ben Gamari's avatar
      testsuite: Specify expected word-size of machop tests · dc8ed73d
      Ben Gamari authored
      These generally expect a particular word size.
      
      (cherry picked from commit 44c08863)
      dc8ed73d
    • Ben Gamari's avatar
      CmmToC: Cast possibly-signed results as unsigned · 1488f064
      Ben Gamari authored
      C11 rule 6.3.1.1 dictates that all small integers used in expressions be
      implicitly converted to `signed int`.  However, Cmm semantics require that the
      width of the operands be preserved with zero-extension semantics. For
      this reason we must recast sub-word arithmetic results as unsigned.
      
      (cherry picked from commit e98dad1b)
      1488f064
    • Ben Gamari's avatar
      CmmToC: Always cast arguments as unsigned · 2bfa1bae
      Ben Gamari authored
      As noted in Note [When in doubt, cast arguments as unsigned], we
      must ensure that arguments have the correct signedness since some
      operations (e.g. `%`) have different semantics depending upon
      signedness.
      
      (cherry picked from commit 0aeaa8f3)
      2bfa1bae
    • Ben Gamari's avatar
      CmmToC: Zero-extend sub-word size results · 82e89561
      Ben Gamari authored
      As noted in Note [Zero-extending sub-word signed results] we must
      explicitly zero-extend the results of sub-word-sized signed operations.
      
      (cherry picked from commit ebaf7333)
      82e89561
    • Ben Gamari's avatar
      CmmToC: Fix width of shift operations · 299bddfc
      Ben Gamari authored
      Under C's implicit widening rules, the result of an operation like (a >>
      b) where a::Word8 and b::Word will have type Word, yet we want Word.
      
      (cherry picked from commit e19e9e71)
      299bddfc
    • Ben Gamari's avatar
      nativeGen/aarch64: Fix handling of subword values · 934fce23
      Ben Gamari authored
      Here we rework the handling of sub-word operations in the AArch64
      backend, fixing a number of bugs and inconsistencies. In short,
      we now impose the invariant that all subword values are represented in
      registers in zero-extended form. Signed arithmetic operations are then
      responsible for sign-extending as necessary.
      
      Possible future work:
      
       * Use `CMP`s extended register form to avoid burning an instruction
         in sign-extending the second operand.
      
       * Track sign-extension state of registers to elide redundant sign
         extensions in blocks with frequent sub-word signed arithmetic.
      
      (cherry picked from commit adc7f108)
      934fce23
    • Moritz Angermann's avatar
      [aarch64 NCG] Add better support for sub-word primops · a20e66f6
      Moritz Angermann authored and Ben Gamari's avatar Ben Gamari committed
      During the intial NCG development, GHC did not have support for
      anything below Words.  As such the NCG didn't support any of this
      either.  AArch64-Darwin however needs support for subword, as
      arguments in excess of the first eight (8) passed via registers
      are passed on the stack, and there in a packed fashion.  Thus
      ghc learned about subword sizes.  This than lead us to gain
      subword primops, and these subsequently highlighted deficiencies
      in the AArch64 NCG.
      
      This patch rectifies the ones I found through via the test-suite.
      I do not claim this to be exhaustive.
      
      Fixes: #19993
      
      Metric Increase:
          T10421
          T13035
          T13719
          T14697
          T1969
          T9203
          T9872a
          T9872b
          T9872c
          T9872d
          T9961
          haddock.Cabal
          haddock.base
          parsing001
      
      (cherry picked from commit d79530d1)
      a20e66f6
    • Ben Gamari's avatar
      cmm/opt: Fold away shifts larger than shiftee width · 4a34401c
      Ben Gamari authored
      This is necessary for lint-correctness since we no longer allow such
      shifts in Cmm.
      
      (cherry picked from commit 9c65197e)
      4a34401c
    • Ben Gamari's avatar
      nativeGen/aarch64: Don't rely on register width to determine amode · 96faf954
      Ben Gamari authored
      We might be loading, e.g., a 16- or 8-bit value, in which case the
      register width is not reflective of the loaded element size.
      
      (cherry picked from commit 7094f4fa)
      96faf954
  6. Mar 02, 2022
Loading