- May 09, 2022
-
-
-
Note [Weak loop breakers] explains why we need to track variables free in RHS of rules. But we need to do this for /inactive/ rules as well as active ones, unlike the rhs_fv_env stuff. So we now have two fields in node Details, one for free vars of active rules, and one for free vars of all rules. This was shown up by #20820, which is now fixed. (cherry picked from commit ad835531)
-
-
Noticed build failures like ``` ghc-stage1: panic! (the 'impossible' happened) GHC version 9.3.20210721: pprCallishMachOp_for_C: MO_x64_Ne not supported! ``` on `--tagget=hppa2.0-unknown-linux-gnu`. The change does not fix all 32-bit unreg target problems, but at least allows linking final ghc binaries. Signed-off-by:
Sergei Trofimovich <slyfox@gentoo.org> (cherry picked from commit 20173629) (cherry picked from commit 1f914ce7)
-
(cherry picked from commit de772f89)
-
- Apr 06, 2022
-
-
Matthew Pickering authored
These are accidentally validate bindists which meant they lacked profiling libraries. Closes #21190
-
Matthew Pickering authored
-
Matthew Pickering authored
-
Matthew Pickering authored
The rule before decided to build the whole stage1 compiler, but this was unecessary as we were just missing one header file which can be generated directly by calling configure. Before: 18 minutes After: 54s
-
Not only does this eliminate some code duplication but we also add a maximum core count to HLint's command-line, hopefully avoiding issue #19600.
-
This commit adds the `lint:compiler` Hadrian target to the CI runner. It does also fixes hints in the compiler/ and libraries/base/ codebases.
-
Matthew Pickering authored
This reverts commit 04724566.
-
Matthew Pickering authored
-
Matthew Pickering authored
-
- Mar 05, 2022
-
-
Ben Gamari authored
-
Ben Gamari authored
-
Ben Gamari authored
-
- Mar 04, 2022
-
-
(cherry picked from commit 2133ab18)
-
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)
-
(cherry picked from commit 557db332)
-
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
-
-
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)
-
(cherry picked from commit 18d7007e)
-
- Mar 03, 2022
-
-
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 -------------------------
-
Ben Gamari authored
These generally expect a particular word size. (cherry picked from commit 44c08863)
-
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)
-
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)
-
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)
-
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)
-
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)
-
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)
-
Ben Gamari authored
This is necessary for lint-correctness since we no longer allow such shifts in Cmm. (cherry picked from commit 9c65197e)
-
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)
-
- Mar 02, 2022
-
-
Ben Gamari authored
There were found by the test-primops testsuite. (cherry picked from commit 2f6565cf)
-