Zubin pushed to branch wip/9.10.3-backports at Glasgow Haskell Compiler / GHC
Commits:
-
f4f31e5c
by Zubin Duggal at 2025-07-16T18:28:07+05:30
-
19e7985b
by Ben Gamari at 2025-07-16T18:29:02+05:30
-
7d71b32d
by Ben Gamari at 2025-07-16T18:29:12+05:30
-
e13386f6
by Andreas Klebinger at 2025-07-16T18:29:29+05:30
-
d28a7f1c
by Zubin Duggal at 2025-07-16T18:30:18+05:30
5 changed files:
- .gitlab/rel_eng/fetch-gitlab-artifacts/fetch_gitlab.py
- docs/users_guide/using-optimisation.rst
- m4/find_ld.m4
- testsuite/tests/driver/recomp015/all.T
- utils/ghc-toolchain/src/GHC/Toolchain/Tools/Link.hs
Changes:
| ... | ... | @@ -129,8 +129,11 @@ def fetch_artifacts(release: str, pipeline_id: int, |
| 129 | 129 | for f in doc_files:
|
| 130 | 130 | subprocess.run(['tar', '-xf', f, '-C', dest])
|
| 131 | 131 | logging.info(f'extracted docs {f} to {dest}')
|
| 132 | - index_path = destdir / 'index.html'
|
|
| 132 | + index_path = destdir / 'docs' / 'index.html'
|
|
| 133 | 133 | index_path.replace(dest / 'index.html')
|
| 134 | + pdfs = list(destdir.glob('*.pdf'))
|
|
| 135 | + for f in pdfs:
|
|
| 136 | + f.replace(dest / f.name)
|
|
| 134 | 137 | elif job.name == 'hackage-doc-tarball':
|
| 135 | 138 | dest = dest_dir / 'hackage_docs'
|
| 136 | 139 | logging.info(f'moved hackage_docs to {dest}')
|
| ... | ... | @@ -517,16 +517,24 @@ as such you shouldn't need to set any of them explicitly. A flag |
| 517 | 517 | Eta-expand let-bindings to increase their arity.
|
| 518 | 518 | |
| 519 | 519 | .. ghc-flag:: -fdo-clever-arg-eta-expansion
|
| 520 | - :shortdesc: Enable sophisticated argument eta-expansion. Implied by :ghc-flag:`-O2`.
|
|
| 520 | + :shortdesc: Enable sophisticated argument eta-expansion. Implied by :ghc-flag:`-O`.
|
|
| 521 | 521 | :type: dynamic
|
| 522 | 522 | :reverse: -fno-do-clever-arg-eta-expansion
|
| 523 | 523 | :category:
|
| 524 | 524 | |
| 525 | 525 | :default: off
|
| 526 | + :since: 9.10.1
|
|
| 526 | 527 | |
| 527 | 528 | Eta-expand arguments to increase their arity to avoid allocating unnecessary
|
| 528 | 529 | thunks for them.
|
| 529 | 530 | |
| 531 | + For example in code like `foo = f (g x)` this flag will determine which analysis
|
|
| 532 | + is used to decide the arity of `g x`, with the goal of avoiding a thunk for `g x`
|
|
| 533 | + in cases where `g` is a function with an arity higher than one.
|
|
| 534 | + |
|
| 535 | + Enabling the flag enables a more sophisticated analysis, resulting in better
|
|
| 536 | + runtime but longer compile time.
|
|
| 537 | + |
|
| 530 | 538 | .. ghc-flag:: -feager-blackholing
|
| 531 | 539 | :shortdesc: Turn on :ref:`eager blackholing <parallel-compile-options>`
|
| 532 | 540 | :type: dynamic
|
| ... | ... | @@ -21,14 +21,7 @@ AC_DEFUN([FIND_LD],[ |
| 21 | 21 | return
|
| 22 | 22 | fi
|
| 23 | 23 | |
| 24 | - case $CPU in
|
|
| 25 | - i386)
|
|
| 26 | - # We refuse to use ld.gold on i386 due to #23579, which we don't
|
|
| 27 | - # have a good autoconf check for.
|
|
| 28 | - linkers="ld.lld ld" ;;
|
|
| 29 | - *)
|
|
| 30 | - linkers="ld.lld ld.gold ld" ;;
|
|
| 31 | - esac
|
|
| 24 | + linkers="ld.lld ld"
|
|
| 32 | 25 | |
| 33 | 26 | # Manually iterate over possible names since we want to ensure that, e.g.,
|
| 34 | 27 | # if ld.lld is installed but gcc doesn't support -fuse-ld=lld, that we
|
| ... | ... | @@ -5,7 +5,11 @@ test('recomp015', |
| 5 | 5 | # See ticket:11022#comment:7
|
| 6 | 6 | unless(opsys('linux') or opsys('solaris2') or opsys('openbsd'), skip),
|
| 7 | 7 | when(arch('arm'), skip),
|
| 8 | - js_skip # JS backend doesn't support .s assembly files
|
|
| 8 | + js_skip, # JS backend doesn't support .s assembly files
|
|
| 9 | + |
|
| 10 | + # the linker sometimes throws warnings since we don't
|
|
| 11 | + # generate a .note.GNU-stack section
|
|
| 12 | + ignore_stderr,
|
|
| 9 | 13 | ],
|
| 10 | 14 | makefile_test, [])
|
| 11 | 15 |
| ... | ... | @@ -91,7 +91,7 @@ findLinkFlags enableOverride cc ccLink |
| 91 | 91 | -- executable exists before trying cc.
|
| 92 | 92 | do _ <- findProgram (linker ++ " linker") emptyProgOpt ["ld."++linker]
|
| 93 | 93 | prog <$ checkLinkWorks cc prog
|
| 94 | - | linker <- ["lld", "gold"]
|
|
| 94 | + | linker <- ["lld", "bfd"]
|
|
| 95 | 95 | , let prog = over _prgFlags (++["-fuse-ld="++linker]) ccLink
|
| 96 | 96 | ]
|
| 97 | 97 | <|> (ccLink <$ checkLinkWorks cc ccLink)
|