[Git][ghc/ghc][wip/cbits-split-sections] 13 commits: base: specify tie-breaking behavior of min, max, and related list/Foldable functions
Cheng Shao (@TerrorJack)
gitlab at gitlab.haskell.org
Fri May 24 12:39:13 UTC 2024
Cheng Shao pushed to branch wip/cbits-split-sections at Glasgow Haskell Compiler / GHC
Commits:
a3e0b68b by Ryan Hendrickson at 2024-05-23T15:52:03-04:00
base: specify tie-breaking behavior of min, max, and related list/Foldable functions
- - - - -
bdcc0f37 by doyougnu at 2024-05-24T07:51:18-04:00
cmm: add word <-> double/float bitcast
- closes: #25331
This is the last step in the project plan described in #25331. This
commit:
- adds bitcast operands for x86_64, LLVM, aarch64
- For PPC and i386 we resort to using the cmm implementations
- renames conversion MachOps from Conv to Round|Truncate
- - - - -
f0d257f7 by Krzysztof Gogolewski at 2024-05-24T07:51:55-04:00
StgToByteCode: minor refactor
Some functions in StgToByteCode were filtering out void arguments.
However, StgToByteCode is called after unarisation: the void arguments
should have been removed earlier.
Instead of filtering out, we assert that the args are non-void.
- - - - -
03137fd2 by Krzysztof Gogolewski at 2024-05-24T07:51:55-04:00
StgToByteCode: minor refactor
`layoutNativeCall` was always called with a `primRepCmmType platform`
callback. Hence we can put it inside of `layoutNativeCall` rather than
repeat it.
- - - - -
27c430f3 by David Binder at 2024-05-24T07:52:38-04:00
haddock: Remove compatibility shims for GHC < 8.4 from haddock-library
- - - - -
8dd8a076 by Cheng Shao at 2024-05-24T07:53:14-04:00
compiler: avoid saving foreign call target to local when there are no caller-save GlobalRegs
This patch makes the STG->Cmm backend avoid saving foreign call target
to local when there are no caller-save GlobalRegs.
Since 321941a8ebe25192cdeece723e1058f2f47809ea, when we lower a
foreign call, we unconditionally save the foreign call target to a
temporary local first, then rely on cmmSink to clean it up later,
which only happens with -fcmm-sink (implied by -O) and not in
unoptimized code.
And this is troublesome for the wasm backend NCG, which needs to infer
a foreign call target symbol's type signature from the Cmm call site.
Previously, the NCG has been emitting incorrect type signatures for
unoptimized code, which happens to work with `wasm-ld` most of the
time, but this is never future-proof against upstream toolchain
updates, and it causes horrible breakages when LTO objects are
included in linker input. Hence this patch.
- - - - -
986df1ab by Cheng Shao at 2024-05-24T07:53:14-04:00
testsuite: add callee-no-local regression test
- - - - -
52d62e2a by Sylvain Henry at 2024-05-24T07:53:57-04:00
Fix HasCallStack leftovers from !12514 / #24726
- - - - -
c5e00c35 by crumbtoo at 2024-05-24T07:54:38-04:00
user_guide: Fix typo in MultiWayIf chapter
Close #24829
- - - - -
bd323b0e by Ben Gamari at 2024-05-24T07:55:15-04:00
base: Ensure that CHANGELOG is included in extra-source-files
This was missed in the `ghc-internal` split.
Closes #24831.
- - - - -
1bfd32e8 by Ben Gamari at 2024-05-24T07:55:15-04:00
base: Fix changelog reference to setBacktraceMechanismState
(cherry picked from commit b63f7ba01fdfd98a01d2f0dec8d9262b3e595c5d)
- - - - -
dc92e597 by Cheng Shao at 2024-05-24T12:31:58+00:00
hadrian: build C/C++ with split sections when enabled
When split sections is enabled, ensure -fsplit-sections is passed to
GHC as well when invoking GHC to compile C/C++; and pass
-ffunction-sections -fdata-sections to gcc/clang when compiling C/C++
with the hadrian Cc builder. Fixes #23381.
- - - - -
8c5a2dac by Cheng Shao at 2024-05-24T12:35:59+00:00
driver: build C/C++ with -ffunction-sections -fdata-sections when split sections is enabled
When -fsplit-sections is passed to GHC, pass -ffunction-sections
-fdata-sections to gcc/clang when building C/C++. Previously,
-fsplit-sections was only respected by the NCG/LLVM backends, but not
the unregisterised backend; the GHC driver did not pass
-fdata-sections and -ffunction-sections to the C compiler, which
resulted in excessive executable sizes.
Fixes #23381.
-------------------------
Metric Decrease:
size_hello_artifact
size_hello_unicode
-------------------------
- - - - -
30 changed files:
- compiler/GHC/Cmm/MachOp.hs
- compiler/GHC/Cmm/Opt.hs
- compiler/GHC/Cmm/Parser.y
- compiler/GHC/CmmToAsm/AArch64/CodeGen.hs
- compiler/GHC/CmmToAsm/AArch64/Instr.hs
- compiler/GHC/CmmToAsm/AArch64/Ppr.hs
- compiler/GHC/CmmToAsm/PPC/CodeGen.hs
- compiler/GHC/CmmToAsm/Wasm/FromCmm.hs
- compiler/GHC/CmmToAsm/X86/CodeGen.hs
- compiler/GHC/CmmToAsm/X86/Instr.hs
- compiler/GHC/CmmToAsm/X86/Ppr.hs
- compiler/GHC/CmmToC.hs
- compiler/GHC/CmmToLlvm/CodeGen.hs
- compiler/GHC/Core/SimpleOpt.hs
- compiler/GHC/Driver/Config/StgToCmm.hs
- compiler/GHC/Driver/Pipeline/Execute.hs
- compiler/GHC/Platform.hs
- compiler/GHC/StgToByteCode.hs
- compiler/GHC/StgToCmm/Config.hs
- compiler/GHC/StgToCmm/Foreign.hs
- compiler/GHC/StgToCmm/Prim.hs
- docs/users_guide/exts/multiway_if.rst
- hadrian/src/Settings/Builders/SplitSections.hs
- libraries/base/base.cabal
- libraries/base/changelog.md
- libraries/base/src/Data/Bifoldable.hs
- libraries/base/src/Data/Foldable1.hs
- libraries/base/src/Data/Semigroup.hs
- libraries/ghc-internal/src/GHC/Internal/Data/Foldable.hs
- libraries/ghc-internal/src/GHC/Internal/Data/OldList.hs
The diff was not included because it is too large.
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/23031759df5b8c13482646f1f9c202a1c77dd7c6...8c5a2dac6f5530c089d035147b99ae203415bd7a
--
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/23031759df5b8c13482646f1f9c202a1c77dd7c6...8c5a2dac6f5530c089d035147b99ae203415bd7a
You're receiving this email because of your account on gitlab.haskell.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-commits/attachments/20240524/38cba466/attachment.html>
More information about the ghc-commits
mailing list