GHC issueshttps://gitlab.haskell.org/ghc/ghc/-/issues2024-03-28T23:10:11Zhttps://gitlab.haskell.org/ghc/ghc/-/issues/24605Cannot bootstrap ghc-9.8.2 with ghc-9.8.2 as a bootstrap compiler2024-03-28T23:10:11ZSören TempelCannot bootstrap ghc-9.8.2 with ghc-9.8.2 as a bootstrap compiler## Summary
Hi, I maintain the Alpine Linux GHC package 👋 I am currently in [the process of upgrading this package](https://gitlab.alpinelinux.org/alpine/aports/-/merge_requests/62229) from ghc-9.4.8 to ghc-9.8.2. I can already successfu...## Summary
Hi, I maintain the Alpine Linux GHC package 👋 I am currently in [the process of upgrading this package](https://gitlab.alpinelinux.org/alpine/aports/-/merge_requests/62229) from ghc-9.4.8 to ghc-9.8.2. I can already successfully compile GHC 9.8.2 with version 9.4.8. Unfortunately, for our Alpine package, we need to be able to compile GHC 9.8.2 with itself as a bootstrap compiler. I understand that this is not officially supported, but for past versions (with some minor patches here and there), I was always able to make it work.
The current issue, which I am unable to fix by myself, occurs during the compilation of `ghc/Main.hs` with GHC 9.4.8 (libraries needed by `ghc/Main.hs` were successfully compiled prior to that). The relevant part of the build log looks as follows:
```
Command line: /usr/bin/ghc -Wall -Wcompat -fdiagnostics-color=never -hisuf hi -osuf o -hcsuf hc -static -hide-all-packages -no-user-package-db '-package-env -' '-packa
ge-db _build/stage0/inplace/package.conf.d' '-this-unit-id ghc-bin-9.8.2-inplace' '-package-id array-0.5.6.0-inplace' '-package-id base-4.19.1.0-inplace' '-package-id
bytestring-0.12.1.0-inplace' '-package-id containers-0.6.8-inplace' '-package-id directory-1.3.8.1-inplace' '-package-id filepath-1.4.200.1-inplace' '-package-id ghc-9
.8.2-inplace' '-package-id ghc-boot-9.8.2-inplace' '-package-id process-1.6.18.0-inplace' '-package-id transformers-0.6.1.0-inplace' '-package-id unix-2.8.4.0-inplace'
-i -i/home/buildozer/aports/community/ghc/src/ghc-9.8.2/_build/stage0/ghc/build -i/home/buildozer/aports/community/ghc/src/ghc-9.8.2/_build/stage0/ghc/build/ghc/autog
en -i/home/buildozer/aports/community/ghc/src/ghc-9.8.2/ghc -I_build/stage0/ghc/build -I/home/buildozer/aports/community/ghc/src/ghc-9.8.2/compiler -I/home/buildozer/a
ports/community/ghc/src/ghc-9.8.2/_build/stage0/compiler/build -I/home/buildozer/aports/community/ghc/src/ghc-9.8.2/libraries/process/include -I/home/buildozer/aports/
community/ghc/src/ghc-9.8.2/_build/stage0/libraries/process/build/include -I/home/buildozer/aports/community/ghc/src/ghc-9.8.2/libraries/directory -I/home/buildozer/ap
orts/community/ghc/src/ghc-9.8.2/_build/stage0/libraries/directory/build -I/home/buildozer/aports/community/ghc/src/ghc-9.8.2/libraries/unix/include -I/home/buildozer/
aports/community/ghc/src/ghc-9.8.2/_build/stage0/libraries/unix/build/include -I/home/buildozer/aports/community/ghc/src/ghc-9.8.2/libraries/time/lib/include -I/home/b
uildozer/aports/community/ghc/src/ghc-9.8.2/_build/stage0/libraries/time/build/lib/include -I/home/buildozer/aports/community/ghc/src/ghc-9.8.2/libraries/containers/co
ntainers/include -I/home/buildozer/aports/community/ghc/src/ghc-9.8.2/_build/stage0/libraries/containers/containers/build/include -I/home/buildozer/aports/community/gh
c/src/ghc-9.8.2/libraries/bytestring/include -I/home/buildozer/aports/community/ghc/src/ghc-9.8.2/_build/stage0/libraries/bytestring/build/include -I/usr/lib/ghc-9.8.2
/lib/x86_64-linux-ghc-9.8.2/base-4.19.1.0-inplace/include -I/usr/lib/ghc-9.8.2/lib/x86_64-linux-ghc-9.8.2/ghc-bignum-1.3-inplace/include -I/usr/lib/ghc-9.8.2/lib/x86_6
4-linux-ghc-9.8.2/rts-1.0.2/include -optP-include -optP_build/stage0/ghc/build/ghc/autogen/cabal_macros.h -outputdir _build/stage0/ghc/build -Wall -Wnoncanonical-monad
-instances -Wnoncanonical-monoid-instances -rtsopts=all '-with-rtsopts=-K512M -H -I5 -T' -threaded -XHaskell2010 -XNoImplicitPrelude -XScopedTypeVariables -XBangPatter
ns -optc-Wno-error=inline -c ghc/Main.hs -o _build/stage0/ghc/build/Main.o -O -H64m -O -I_build/stage0/compiler/build
===> Command failed with error code: 1
ghc/Main.hs:18:1: error: [GHC-53693]
Something is amiss; requested module ghc-9.8.2:GHC differs from name found in the interface file ghc:GHC (if these names look the same, try again with -dppr-debug
)
|
18 | import qualified GHC
```
I confirmed (using `--show-iface`) that the interfaces files do—in fact—contain the name `ghc` instead of `ghc-9.8.2` and initially assumed this to be caused by an assumption about the bootstrap compiler version somewhere in the GHC source code. However, after asking around on IRC a bit, I was told that this looks like a GHC bug and that it should be reported here.
The full build log (includes some output of the Alpine tooling in the beginning): https://dev.alpinelinux.org/~nmeum/alpine-linux-edge-ghc-9.8.2-log.txt
## Steps to reproduce
I believe all that is needed to reproduce this is building ghc-9.8.2 (which at the time of writing is the latest release) with itself (i.e. with ghc-9.8.2 as a bootstrap compiler). This requires a [minor patch](https://gitlab.alpinelinux.org/alpine/aports/-/blob/bb4141be7164a2c4128bc56692d5518d80467af4/community/ghc/self-bootstrap-relaxed-version-constraints.patch) to adjust some version constraints on libraries bundled by GHC. Apart from the build log, the exact build flags we use in Alpine are documented in the GHC [APKBUILD](https://gitlab.alpinelinux.org/alpine/aports/-/blob/bb4141be7164a2c4128bc56692d5518d80467af4/community/ghc/APKBUILD#L74). In case this cannot be reproduced on non-Alpine systems, I can look into preparing an Alpine-based Dockerfile to trigger this.
## Expected behavior
A successful build of ghc-9.8.2.
## Environment
* GHC version used: 9.8.2
Optional:
* Operating System: Alpine Linux Edge
* System Architecture: x86_64https://gitlab.haskell.org/ghc/ghc/-/issues/24604GHC internal error in class; "not in scope during type checking, but passed t...2024-03-28T23:17:21ZJkensikGHC internal error in class; "not in scope during type checking, but passed to the renamer"## Summary
I was working with standaloneKindSignatures and using visible dependent quantification in a class. The error said
```haskell
GHC internal error: f is not in scope during type checking, but it passed the renamer
tcl...## Summary
I was working with standaloneKindSignatures and using visible dependent quantification in a class. The error said
```haskell
GHC internal error: f is not in scope during type checking, but it passed the renamer
tcl_env of environment: [aG5 :-> Type variable k = k :: *,
aG6 :-> Type variable oo = oo :: *,
aG7 :-> Type variable mm = mm :: k -> *,
aG9 :-> Type variable u = u :: *,
aGa :-> Type variable a = a :: mm u,
aGb :-> Type variable d = d :: k,
aGd :-> Type variable u = u :: k,
aGh :-> Type variable k = k :: *,
rG3 :-> ATcTyCon UF :: forall {k} (u :: k).
*
-> forall (mm :: k -> *) k1 ->
* -> mm u -> k1 -> Constraint,
rG4 :-> ATcTyCon FF :: forall {k} {mm :: k -> *} {u1 :: k}
(f :: * -> *) u2.
mm u1 -> f u2]
In the kind f u
In the first argument of FF, namely (a :: f u)
In the first argument of (~~), namely (FF (a :: f u))
|
11 | class (((FF (a::f u) ) ~~ (a::k))) =>UF oo mm (f) (u) (a) (d::k) where
| ^^^
```
## Steps to reproduce
compile this code
```Haskell
import Data.Kind (Type)
import Data.Type.Equality
import GHC.Exts (Constraint)
type UF :: Type -> forall f -> forall k -> Type -> f u -> k -> Constraint
class (((FF (a::f u) ) ~~ (a::k))) =>UF oo mm (f) (u) (a) (d::k) where
type FF a = (c:: f u) | c -> f u
```
## Expected behavior
result in a more informative error message or not error.
## Environment
GHC 9.8.2https://gitlab.haskell.org/ghc/ghc/-/issues/24603Support for ARM64 Windows2024-03-28T19:38:06ZRodrigo MesquitaSupport for ARM64 Windows## Summary
I was wondering whether it would be possible to build an ARM64 Windows GHC. One thing I'm not immediately understanding is how do we bootstrap such a compiler? Do I need to build a cross compiler targeting arm64 windows to th...## Summary
I was wondering whether it would be possible to build an ARM64 Windows GHC. One thing I'm not immediately understanding is how do we bootstrap such a compiler? Do I need to build a cross compiler targeting arm64 windows to then build a native arm64 windows compiler?
This came up as I was trying to debug a windows issue with virtualization on my aarch64 M2 machine, and was using an aarch64 virtualized windows for performance... Emulating a x64 windows on arm is much more expensive unfortunately.https://gitlab.haskell.org/ghc/ghc/-/issues/24602Google Closure Compiler hard errors2024-03-28T16:17:06ZSerge S. GulinGoogle Closure Compiler hard errors## Summary
After [Dupe of h$rts_isProfiled](https://gitlab.haskell.org/ghc/ghc/-/issues/24578) raises the question of further actions over Google Closure Compiler execution support. For now trivial build with google closure compiler wil...## Summary
After [Dupe of h$rts_isProfiled](https://gitlab.haskell.org/ghc/ghc/-/issues/24578) raises the question of further actions over Google Closure Compiler execution support. For now trivial build with google closure compiler will result in failure.
Further MR will contain description how this was handled (with details over applied compromises).
## Steps to reproduce
Need to build hello world and execute closure compiler over its javascript-backend output.
The `HelloJS.hs`:
```
module Main where
main :: IO ()
main = putStrLn "Hello, JavaScript!"
```
Builing:
```
$ ../ghc-js/_build/stage1/bin/javascript-unknown-ghcjs-ghc -fforce-recomp HelloJS.hs
...
$ google-closure-compiler --compilation_level ADVANCED_OPTIMIZATIONS ./HelloJS.jsexe/all.js --js_output_file ./HelloJS.jsexe/all.min.js
```
<details><summary>See hard errors (not warnings, for this issue they are skipped) at the end</summary>
```
./HelloJS.jsexe/all.js:7795:8: ERROR - [JSC_UNDEFINED_VARIABLE] variable java is undeclared
7795| java.lang.System.out.print(s);
^^^^
./HelloJS.jsexe/all.js:8432:27: ERROR - [JSC_UNDEFINED_VARIABLE] variable Buffer is undeclared
8432| h$fs.read(real_fd, Buffer.alloc(n), 0, n, pos, function(err, bytesRead, nbuf) {
^^^^^^
./HelloJS.jsexe/all.js:8495:8: ERROR - [JSC_UNDEFINED_VARIABLE] variable putstr is undeclared
8495| putstr(h$decodeUtf8(buf, n, buf_offset));
^^^^^^
./HelloJS.jsexe/all.js:8499:8: ERROR - [JSC_UNDEFINED_VARIABLE] variable printErr is undeclared
8499| printErr(h$decodeUtf8(buf, n, buf_offset));
^^^^^^^^
./HelloJS.jsexe/all.js:8507:37: ERROR - [JSC_UNDEFINED_VARIABLE] variable debug is undeclared
8507| var h$base_stderrLeftover = { f: debug, val: null };
^^^^^
./HelloJS.jsexe/all.js:9747:68: ERROR - [JSC_UNDEFINED_VARIABLE] variable null_ is undeclared
9747| var p = (((ptr_d).arr && (ptr_d).arr[off]) ? (ptr_d).arr[off] : null_); var o = (ptr_d).dv.getInt32(off,true);;
^^^^^
./HelloJS.jsexe/all.js:10273:26: ERROR - [JSC_UNDEFINED_VARIABLE] variable j is undeclared
10273| for(j=x.length-1;j>=0;j--) {
^
./HelloJS.jsexe/all.js:12247:9: ERROR - [JSC_UNDEFINED_VARIABLE] variable ptr is undeclared
12247| return ptr = h$initHeapBufferLen(str_d, str_o, str_d.len);
^^^
./HelloJS.jsexe/all.js:12498:25: ERROR - [JSC_UNDEFINED_VARIABLE] variable h$setCcs_e is undeclared
12498| if(h$stack[h$sp] !== h$setCcs_e) {
^^^^^^^^^^
./HelloJS.jsexe/all.js:12808:11: ERROR - [JSC_UNDEFINED_VARIABLE] variable h$vt_int is undeclared
12808| case h$vt_int:
^^^^^^^^
./HelloJS.jsexe/all.js:12941:22: ERROR - [JSC_UNDEFINED_VARIABLE] variable h$checkInvariants_e is undeclared
12941| h$stack[h$sp] = h$checkInvariants_e;
^^^^^^^^^^^^^^^^^^^
./HelloJS.jsexe/all.js:13834:33: ERROR - [JSC_UNDEFINED_VARIABLE] variable arr is undeclared
13834| return h$charCodeArrayToString(arr);
^^^
./HelloJS.jsexe/all.js:13925:12: ERROR - [JSC_UNDEFINED_VARIABLE] variable h$EINVAL is undeclared
13925| h$errno = h$EINVAL;
^^^^^^^^
./HelloJS.jsexe/all.js:14112:2: ERROR - [JSC_UNDEFINED_VARIABLE] variable h$fds is undeclared
14112| h$fds[fd].waitRead.push(h$currentThread);
^^^^^
./HelloJS.jsexe/all.js:24517:13: ERROR - [JSC_UNDEFINED_VARIABLE] variable h$stg_cloneMyStackzh is undeclared
24517| if(c) {var g=h$stg_cloneMyStackzh();
^^^^^^^^^^^^^^^^^^^^
./HelloJS.jsexe/all.js:24518:6: ERROR - [JSC_UNDEFINED_VARIABLE] variable h$stg_decodeStackzh is undeclared
24518| var i=h$stg_decodeStackzh(g);
^^^^^^^^^^^^^^^^^^^
./HelloJS.jsexe/all.js:25814:6: ERROR - [JSC_UNDEFINED_VARIABLE] variable h$libdwLookupLocation is undeclared
25814| var h=h$libdwLookupLocation(d,e,a,c,f,g);
^^^^^^^^^^^^^^^^^^^^^
./HelloJS.jsexe/all.js:26282:21: ERROR - [JSC_UNDEFINED_VARIABLE] variable h$libdwPoolRelease is undeclared
26282| h$r3=h$mkFunctionPtr(h$libdwPoolRelease);
^^^^^^^^^^^^^^^^^^
./HelloJS.jsexe/all.js:26290:2: ERROR - [JSC_UNDEFINED_VARIABLE] variable h$libdwPoolTake is undeclared
26290| a=h$libdwPoolTake();
^^^^^^^^^^^^^^^
./HelloJS.jsexe/all.js:26307:2: ERROR - [JSC_UNDEFINED_VARIABLE] variable h$libdwGetBacktrace is undeclared
26307| c=h$libdwGetBacktrace(a,b);
^^^^^^^^^^^^^^^^^^^
./HelloJS.jsexe/all.js:26335:21: ERROR - [JSC_UNDEFINED_VARIABLE] variable h$backtraceFree is undeclared
26335| h$r3=h$mkFunctionPtr(h$backtraceFree);
^^^^^^^^^^^^^^^
./HelloJS.jsexe/all.js:33154:5: ERROR - [JSC_UNDEFINED_VARIABLE] variable h$fdReady is undeclared
33154| h$r1=h$fdReady(a,1,f,(c>>>0),0);
^^^^^^^^^
./HelloJS.jsexe/all.js:37760:5: ERROR - [JSC_UNDEFINED_VARIABLE] variable h$lookupIPE is undeclared
37760| h$r1=h$lookupIPE(a,c,d,0);
^^^^^^^^^^^
./HelloJS.jsexe/all.js:47403:0: ERROR - [JSC_UNDEFINED_VARIABLE] variable h$reportStackOverflow is undeclared
47403| h$reportStackOverflow(c);
^^^^^^^^^^^^^^^^^^^^^
./HelloJS.jsexe/all.js:47407:8: ERROR - [JSC_UNDEFINED_VARIABLE] variable h$reportHeapOverflow is undeclared
47407| case(2):h$reportHeapOverflow();
^^^^^^^^^^^^^^^^^^^^
./HelloJS.jsexe/all.js:57052:22: ERROR - [JSC_UNDEFINED_VARIABLE] variable __dirname is undeclared
57052| scriptDirectory = __dirname + '/';
^^^^^^^^^
./HelloJS.jsexe/all.js:57067:4: ERROR - [JSC_VAR_MULTIPLY_DECLARED_ERROR] Variable fs declared more than once. First occurrence: ./HelloJS.jsexe/all.js:7767:8
57067| var fs, nodePath;
^^
27 error(s), 81 warning(s)
```
</details>
## Expected behavior
No hard errors. Warnings are fine for now.
## Environment
* GHC master hash used: `0acfe391583d77a72051d505f05fab0ada056c49`
Optional:
* Operating System: MacOS 13.6.3 (22G436)
* System Architecture: M1Serge S. GulinSerge S. Gulinhttps://gitlab.haskell.org/ghc/ghc/-/issues/24601_get_osfhandle bound with an incorrect type2024-03-28T20:11:58ZBen Gamari_get_osfhandle bound with an incorrect type`compiler/GHC/Runtime/Utils.hs` has the following:
```haskell
foreign import ccall unsafe "io.h _get_osfhandle"
_get_osfhandle :: CInt -> IO CInt
```
This is wrong. The result type should be `HANDLE`.
This was introduced in 44a5d51...`compiler/GHC/Runtime/Utils.hs` has the following:
```haskell
foreign import ccall unsafe "io.h _get_osfhandle"
_get_osfhandle :: CInt -> IO CInt
```
This is wrong. The result type should be `HANDLE`.
This was introduced in 44a5d51a4892b85c7eba09dcb90ca02245637812Ben GamariBen Gamarihttps://gitlab.haskell.org/ghc/ghc/-/issues/24600loadDecls and loadExpr: needed_mods can have a lot of duplication2024-03-28T13:41:29ZRodrigo MesquitaloadDecls and loadExpr: needed_mods can have a lot of duplication## Summary
While debugging something in the linker modules I observed that the `needed_mods` list in `loadDecls` (and in `loadExpr` too) can contain dozens of entries of the same module. My brief investigation suggests we should likely ...## Summary
While debugging something in the linker modules I observed that the `needed_mods` list in `loadDecls` (and in `loadExpr` too) can contain dozens of entries of the same module. My brief investigation suggests we should likely use a Set-like data structure because it would be more efficient (not have duplicates) and would better model its purpose, as its occurrences seem to be pretty list-agnostic (it doesn't look like these modules need to be ordered).https://gitlab.haskell.org/ghc/ghc/-/issues/24598Allow State# RealWorld in foreign import prim2024-03-28T20:11:58ZBen GamariAllow State# RealWorld in foreign import primCurrently programs such as:
```haskell
foreign import prim do_something :: State# RealWorld -> State# RealWorld
```
are rejected by GHC as `State# RealWorld` is not considered to be marshalable.
The rationale for this is rather question...Currently programs such as:
```haskell
foreign import prim do_something :: State# RealWorld -> State# RealWorld
```
are rejected by GHC as `State# RealWorld` is not considered to be marshalable.
The rationale for this is rather questionable:
```
Note [Marshalling void]
~~~~~~~~~~~~~~~~~~~~~~~
We don't treat State# (whose PrimRep is VoidRep) as marshalable.
In turn that means you can't write
foreign import foo :: Int -> State# RealWorld
Reason: the back end falls over with panic "primRepHint:VoidRep";
and there is no compelling reason to permit it
```
I have run into this multiple times in the past, most recently while fixing #24595, and the restriction seems rather indefensible.https://gitlab.haskell.org/ghc/ghc/-/issues/24597GHC 9.6.4 is shipped with deprecated filepath2024-03-27T01:35:44Zkazu-yamamotoGHC 9.6.4 is shipped with deprecated filepath## Summary
GHC 9.6.4 is shipped with "filepath" 1.4.200.1 which is deprecated according to Hackage.
This results in a dependency hell.
GHC 9.6.5 should provide "filepath" 1.4.300.1.## Summary
GHC 9.6.4 is shipped with "filepath" 1.4.200.1 which is deprecated according to Hackage.
This results in a dependency hell.
GHC 9.6.5 should provide "filepath" 1.4.300.1.9.6.5ZubinZubinhttps://gitlab.haskell.org/ghc/ghc/-/issues/24596missing export lists warning gives wrong line2024-03-27T03:14:14ZHateUsernamesmissing export lists warning gives wrong line## Summary
When compiling a file that has LANGUAGE or OPTIONS_GHC pragmas at the top the warning `-Wmissing-export-lists` gives the incorrect line number.
```txt
DB/Command.hs:1:1: error: [-Wmissing-export-lists, -Werror=missing-export...## Summary
When compiling a file that has LANGUAGE or OPTIONS_GHC pragmas at the top the warning `-Wmissing-export-lists` gives the incorrect line number.
```txt
DB/Command.hs:1:1: error: [-Wmissing-export-lists, -Werror=missing-export-lists]
The export item ‘module DB.Command’ is missing an export list
|
1 | {-# LANGUAGE Unsafe #-}
| ^
```
## Steps to reproduce
```sh
echo '{-# LANGUAGE Unsafe #-}\nmodule ABC where\n' > /tmp/mxl.hs
ghc -Wmissing-export-lists -Werror /tmp/mxl.hs
```
## Expected behavior
```txt
Loaded package environment from /home/wjr/.ghc/x86_64-openbsd-9.2.7/environments/default
[1 of 1] Compiling ABC ( /tmp/mxl.hs, /tmp/mxl.o )
/tmp/mxl.hs:1:1: error: [-Wmissing-export-lists, -Werror=missing-export-lists]
The export item ‘module ABC’ is missing an export list
|
1 | {-# LANGUAGE Unsafe #-}
| ^
```
## Environment
* GHC version used: 9.2.7
Optional:
* Operating System: OpenBSD 7.4
* System Architecture: x86_64https://gitlab.haskell.org/ghc/ghc/-/issues/24595GHC-9.10.0-rc linking error on Linux OS2024-03-27T02:33:49Zrecursion-ninjaGHC-9.10.0-rc linking error on Linux OS## Summary
The new GHC-9.10.0 release candidate results in a linker error when building at least [one project](https://github.com/amnh/PhyG) on Linux OS(es).
This linker error did not occur when building the same project with GHC-9.8.1 ...## Summary
The new GHC-9.10.0 release candidate results in a linker error when building at least [one project](https://github.com/amnh/PhyG) on Linux OS(es).
This linker error did not occur when building the same project with GHC-9.8.1 or GHC-9.8.2, hence I beleive the liker error was introduced by the GHC-9.10.0 release candidate.
The introduced linker error does not occur when building the same project on MacOS with either M1 or M3 chipsets using the GHC-9.10.0 release candidate.
It seems this might be a "Linux-only" issue.
I have uploaded a copy of the terminal output generated during the second phase of the build procedure below [`bug-report.log`](/uploads/c3d0f77c7b92bec130216f2e1c63cc2a/bug-report.log)
## Steps to reproduce
```bash
# Initialize the reproducible environment
git clone git@github.com:amnh/PhyG.git
cd PhyG
git checkout 27b86ae56ccfa4270bab1af37eb4af5f8972653f
cabal update
cabal clean
# First build just the dependencies, to omit them from the verbose logs:
cabal build PhyG:phyg \
--with-compiler=ghc-9.10.0.20240313 \
--dependencies-only
# ... < wait a very long time, so sorry >
# Second build the executable and verbosely log the resulting linker error:
cabal build PhyG:phyg \
--with-compiler=ghc-9.10.0.20240313 \
--ghc-options=-v \
&> bug-report.log
# ... < wait a less long time >
[62 of 62] Linking /home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/x/phyg/opt/build/phyg/phyg
*** systool:cc:
*** C Compiler:
gcc -c /tmp/ghc2756050_0/ghc_19.c -o /tmp/ghc2756050_0/ghc_20.o -fno-PIC -I/home/ward/.ghcup/ghc/9.10.0.20240313/lib/ghc-9.10.0.20240313/lib/../lib/x86_64-linux-ghc-9.10.0.20240313/rts-1.0.2/include
!!! systool:cc: finished in 0.68 milliseconds, allocated 0.165 megabytes
*** systool:cc:
*** C Compiler:
gcc -c /tmp/ghc2756050_0/ghc_22.s -o /tmp/ghc2756050_0/ghc_23.o
!!! systool:cc: finished in 0.42 milliseconds, allocated 0.131 megabytes
*** systool:linker:
*** Linker:
gcc '-fuse-ld=gold' -Wl,--no-as-needed -o /home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/x/phyg/opt/build/phyg/phyg -lm -no-pie -Wl,--gc-sections /home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/x/phyg/opt/build/phyg/phyg-tmp/CommandLineOptions/Types.o /home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/x/phyg/opt/build/phyg/phyg-tmp/Complexity/Constants.o /home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/x/phyg/opt/build/phyg/phyg-tmp/Complexity/CodeStrings.o /home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/x/phyg/opt/build/phyg/phyg-tmp/Complexity/Graphs.o /home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/x/phyg/opt/build/phyg/phyg-tmp/Complexity/Huffman.o /home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/x/phyg/opt/build/phyg/phyg-tmp/Complexity/Utilities.o /home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/x/phyg/opt/build/phyg/phyg-tmp/PackageInfo_PhyG.o /home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/x/phyg/opt/build/phyg/phyg-tmp/Paths_PhyG.o /home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/x/phyg/opt/build/phyg/phyg-tmp/Software/Metadata/Embedded.o /home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/x/phyg/opt/build/phyg/phyg-tmp/Software/License.o /home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/x/phyg/opt/build/phyg/phyg-tmp/Software/Credits.o /home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/x/phyg/opt/build/phyg/phyg-tmp/Software/Metadata/TimeStamp.o /home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/x/phyg/opt/build/phyg/phyg-tmp/Software/Metadata.o /home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/x/phyg/opt/build/phyg/phyg-tmp/Software/Preamble.o /home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/x/phyg/opt/build/phyg/phyg-tmp/Software/SplashImage.o /home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/x/phyg/opt/build/phyg/phyg-tmp/CommandLineOptions/Display.o /home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/x/phyg/opt/build/phyg/phyg-tmp/CommandLineOptions.o /home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/x/phyg/opt/build/phyg/phyg-tmp/System/Timing.o /home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/x/phyg/opt/build/phyg/phyg-tmp/Types/DistanceTypes.o /home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/x/phyg/opt/build/phyg/phyg-tmp/Utilities/LocalGraph.o /home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/x/phyg/opt/build/phyg/phyg-tmp/Types/Types.o /home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/x/phyg/opt/build/phyg/phyg-tmp/Utilities/DistanceUtilities.o /home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/x/phyg/opt/build/phyg/phyg-tmp/Search/DistanceWagner.o /home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/x/phyg/opt/build/phyg/phyg-tmp/Search/DistanceMethods.o /home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/x/phyg/opt/build/phyg/phyg-tmp/Reconciliation/Adams.o /home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/x/phyg/opt/build/phyg/phyg-tmp/Debug/Debug.o /home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/x/phyg/opt/build/phyg/phyg-tmp/Commands/Verify.o /home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/x/phyg/opt/build/phyg/phyg-tmp/Utilities/LocalSequence.o /home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/x/phyg/opt/build/phyg/phyg-tmp/Utilities/TcmHash.o /home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/x/phyg/opt/build/phyg/phyg-tmp/Utilities/Utilities.o /home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/x/phyg/opt/build/phyg/phyg-tmp/Input/DataTransformation.o /home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/x/phyg/opt/build/phyg/phyg-tmp/Input/FastAC.o /home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/x/phyg/opt/build/phyg/phyg-tmp/Input/TNTUtilities.o /home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/x/phyg/opt/build/phyg/phyg-tmp/Input/ReadInputFiles.o /home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/x/phyg/opt/build/phyg/phyg-tmp/Commands/ProcessCommands.o /home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/x/phyg/opt/build/phyg/phyg-tmp/Input/BitPack.o /home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/x/phyg/opt/build/phyg/phyg-tmp/GraphOptimization/Medians.o /home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/x/phyg/opt/build/phyg/phyg-tmp/Utilities/ThreeWayFunctions.o /home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/x/phyg/opt/build/phyg/phyg-tmp/Utilities/Distances.o /home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/x/phyg/opt/build/phyg/phyg-tmp/Input/Reorganize.o /home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/x/phyg/opt/build/phyg/phyg-tmp/Graphs/GraphOperations.o /home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/x/phyg/opt/build/phyg/phyg-tmp/Reconciliation/Eun.o /home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/x/phyg/opt/build/phyg/phyg-tmp/Reconciliation/ReconcileGraphs.o /home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/x/phyg/opt/build/phyg/phyg-tmp/GraphOptimization/PreOrderFunctions.o /home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/x/phyg/opt/build/phyg/phyg-tmp/GraphOptimization/PostOrderSoftWiredFunctionsNew.o /home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/x/phyg/opt/build/phyg/phyg-tmp/GraphOptimization/PostOrderSoftWiredFunctions.o /home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/x/phyg/opt/build/phyg/phyg-tmp/GraphOptimization/Traversals.o /home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/x/phyg/opt/build/phyg/phyg-tmp/Search/WagnerBuild.o /home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/x/phyg/opt/build/phyg/phyg-tmp/Search/Swap.o /home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/x/phyg/opt/build/phyg/phyg-tmp/Search/SwapMaster.o /home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/x/phyg/opt/build/phyg/phyg-tmp/Search/NetworkAddDelete.o /home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/x/phyg/opt/build/phyg/phyg-tmp/Search/Fuse.o /home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/x/phyg/opt/build/phyg/phyg-tmp/Search/GeneticAlgorithm.o /home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/x/phyg/opt/build/phyg/phyg-tmp/Search/Refinement.o /home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/x/phyg/opt/build/phyg/phyg-tmp/Search/Build.o /home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/x/phyg/opt/build/phyg/phyg-tmp/Support/Support.o /home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/x/phyg/opt/build/phyg/phyg-tmp/Commands/CommandUtilities.o /home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/x/phyg/opt/build/phyg/phyg-tmp/Commands/Transform.o /home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/x/phyg/opt/build/phyg/phyg-tmp/Search/Search.o /home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/x/phyg/opt/build/phyg/phyg-tmp/Commands/CommandExecution.o /home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/x/phyg/opt/build/phyg/phyg-tmp/Main.o /home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/x/phyg/opt/build/phyg/phyg-tmp/ffi/external-direct-optimization/alignCharacters.o /home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/x/phyg/opt/build/phyg/phyg-tmp/ffi/external-direct-optimization/alignmentMatrices.o /home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/x/phyg/opt/build/phyg/phyg-tmp/ffi/external-direct-optimization/c_alignment_interface.o /home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/x/phyg/opt/build/phyg/phyg-tmp/ffi/external-direct-optimization/c_code_alloc_setup.o /home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/x/phyg/opt/build/phyg/phyg-tmp/ffi/external-direct-optimization/costMatrix.o /home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/x/phyg/opt/build/phyg/phyg-tmp/ffi/external-direct-optimization/dyn_character.o /home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/x/phyg/opt/build/phyg/phyg-tmp/ffi/external-direct-optimization/ukkCheckPoint.o /home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/x/phyg/opt/build/phyg/phyg-tmp/ffi/external-direct-optimization/ukkCommon.o -L/home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/l/dynamic-character/opt/build/dynamic-character -L/home/ward/.cabal/store/ghc-9.10.0.20240313/matrices-0.5.0-9a87c80463dbe35ef27be22acdc771f1188447138fd0f1c061dbcf179a3332fb/lib -L/home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/l/tcm/opt/build/tcm -L/home/ward/.cabal/store/ghc-9.10.0.20240313/hashtables-1.3.1-d6b607aa090d5fd689970c5124246936962a52923884ad9a8cdc5abad1233eee/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/concurrent-hashtable-0.1.8-6d80284bacf78296e263f30ec70f18661d4f982e3ab9690de9f1d756cf746442/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/atomic-primops-0.8.5-d1604ef4633b9dc0d9510d5197661c6cc9d8094e8ce28d7e8557fd7209aa86a7/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/concurrent-extra-0.7.0.12-a602ce75c4fc0cd682b22f0d1fea5b5783bcf6bd3c8848986f1d849bb3043b26/lib -L/home/ward/home/PhyG/dist-newstyle/build/x86_64-linux/ghc-9.10.0.20240313/PhyG-0.1.4/l/utility/opt/build/utility -L/home/ward/.cabal/store/ghc-9.10.0.20240313/vector-instances-3.4.2-1bb3a95bcd58dbb188689f3c179c710d7630d0a88b821704741d4fb104582485/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/vector-binary-instances-0.2.5.2-5bb3221da661c7078a5cd4fb1ff298bcea14cdb8000cc3cb3c91641adaa4b73a/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/pointed-5.0.4-ed7f1dcfd8a1ba770a563461033de10e1a2633f26969ca97947e8db628a50f9d/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/data-default-class-0.1.2.0-5c0e1b43c8299caa99a50773e1f4a0e1adb8887fbcb8131a82bc4ef9d4b9f13d/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/matrix-0.3.6.3-f3f5a075e29810e884b15dfa2e0150f0645a0fc7f638baeff3e8362d89c19518/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/loop-0.3.0-d88ffc61282f6b41f4efd3e26979fb5dd8be60941be8355c27152e067fa191c1/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/lens-5.2.3-b4dca3ff3cc8c706a97847f8608c8688504b240607f09ac6c768d404f58f0c20/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/kan-extensions-5.2.5-21ccbc0205c83db218e3ea62812d048bb36516fc4fa79e9340ec51ceae075351/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/invariant-0.6.2-604b6f28b872ebdfbbe8ab139df6b2330e5f10273903d9b74d0906472317a3c5/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/adjunctions-4.4.2-009b046c6a460a9987c0fe6d4cede557850c4f2b622dccac5c0be76e09dee155/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/void-0.7.3-d94546b220f98856f3b952037a8ced59eeb2561efaf978b88ab7bfb04e28e69d/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/call-stack-0.4.0-99c99225a3a2549fbde9205528d058b5dc6d6061c1d029893decf2078b516540/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/keys-3.12.3-80331c1e5a0900b85cd925b090d4be6edd3268c03ae62cc43311c9b56227f425/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/semigroups-0.20-433fa4ea165918f07c69e4c6dbfe87f4963f75b93f0a124a72a5b17be0505795/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/free-5.2-01bb8a61bfcf52d09512ed8029f4709cda9f99ffac177277dfc29fae697cb3ed/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/transformers-base-0.4.6-d1b31c6625064809c8ab473833302c5d0eb4750004faad2d6ecb9b40c2cb08ae/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/mmark-0.0.7.6-f0d7a30f192e6a6f9bf265ffec4f2e40edf48c7a1210cec9bc8fcedaf5f4cf42/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/yaml-0.11.11.2-d94c79ab18b84c59e53e73a5e31a1ba1a711f25768640f2452868f0e753c0ddb/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/libyaml-0.1.4-fe3cc56e711985416fd203a5940a49aaafa1550fe9acf3fd883f54dbe1470f95/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/libyaml-clib-0.2.5-fff58eb26dc021cd0949644bf8d2d1e2a25817f943bd6ad180c552278a274d99/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/conduit-1.3.5-b0261fe83cb8d18d96e4406f524712c9abe03c0d76955f18b9a41eb3735137b5/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/resourcet-1.3.0-bc513d8b036d9192eb8254a59c5ecc1ac62a0cacb7215951095cd70262c84194/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/mono-traversable-1.0.17.0-d11dc60575166ae0c6e24566b2e54c303c73999ea8637f96fb7eea54d7806e40/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/vector-algorithms-0.9.0.1-25d1d87a515ec667881a5b55a37ecaddc33f73dc6b99c2f8de4795d37113083b/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/text-metrics-0.3.2-3a570e6e1bdcc01b6a273b45b92617dacb550a6a8ff64b176549bd03d3c8dfd9/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/modern-uri-0.3.6.1-09f4a2a5835da6cb4c33b3e3f0a1f5adf73780cc192628b94da38fe4165e39ae/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/reflection-2.1.7-39deb79fe52241cc499b49172e0d7a07d68f6ad1c9d472f3b7698ac0de778ef3/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/microlens-th-0.4.3.14-57431124cf516db9640522c6ebdc05fe856777d786bfcde7a396d6e4cfd3aa3a/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/microlens-0.4.13.1-7ecacbc77e9a9c2eb73258db30d8c59efa2c7fcd8d493419f34bf105edce5934/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/megaparsec-9.6.1-8250b6748d335e93b30097ca7c84f48ca6314004010ab5d0f45c541b8b742427/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/parser-combinators-1.3.0-2001cdbbdd4e42f0073204441050a8fafe6693531a404ba1f7ccb503a29c9e96/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/lucid-2.11.20230408-4138c9d2c50a6792d42ed48f00b077b8cb2fbeb65edf2ef1ea409f57146b8acc/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/blaze-builder-0.4.2.3-5bb60ad90b8e92a67fd002c65339763ef10aa190c00042f63061e697af6a46f1/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/html-entity-map-0.1.0.0-eda09169ccfde47e573785ba6fabb6562933894b326c33175bddc1aee7b20df3/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/foldl-1.4.16-ff63c7e8c1cedf48f2670e40b3310727a533b9595f29f864ed502621f0579de1/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/profunctors-5.6.2-842c805864d8ce95639ee8088b1a96084fa2731f6e7ce38d34f960c7e02b8661/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/email-validate-2.3.2.20-66bb6773c17f7b0329d309dacf52116f18adbd62425d8303cc401b1133e2bd49/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/aeson-2.2.1.0-8befb79d0d106f1d4c60c5b20aedfdf64f5eda1783b800809dcecdcb33e712d5/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/witherable-0.4.2-b53f864bb77e2282548f63dc267ffb4ae21f0f65c5ae7e69c74904ccbfd528e6/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/text-iso8601-0.1-aac844663b2d31becc08aa07b88b9b29f861171c9f90fd847b6d7da7dabfb00c/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/semialign-1.3-52ac0fbe2aeb663cb47f3b7eeb5701ee2b7fa92264a23b41e5f243ca04fc586c/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/semigroupoids-6.0.0.1-86c0b62329f9ac2dfe87fbbb5c8a3dc84243bd3f43dc9d001473f47e0abd3ed0/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/contravariant-1.5.5-32bf2fbeee28b9e8e4d1a40ba16df4bcda31f4efec746051a8ae489f35ab22fb/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/StateVar-1.2.2-3be256fecd0c57e14cb78e136bf2e7c80b8d1d6dc33eb599da8dc39e802c1eef/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/bifunctors-5.6.1-ab6cb543e37e5be9101a015f625bec8e6e6092baa43fa3b5dc7d04f9af18293a/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/comonad-5.0.8-6f3d11816e42419daefa539d3466d9293c6f8e823801066e769556fc1685271e/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/distributive-0.6.2.1-10a3b641d8f398fc6e830221bfe36744b22985d3f5cf4dd5a25329fc553cde95/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/indexed-traversable-instances-0.1.1.2-f6645ef51e0bc1a0c55288ede1da4b4cc0b44d2527013e5c56e2a99ccf990130/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/network-uri-2.6.4.2-6011520a1bf141d76d6a03a4d9eae3f578e0abc92671941c03ac57a94f8ec96f/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/th-compat-0.1.4-ddfa68d85e6c624aa3dbbce8ea9f8ba7b402c2963b36de45fb8c7708637f05cb/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/integer-conversion-0.1.0.1-956dd66c19940f595754137f2ab1ffbe6374734494162328e7965b9148cf9c09/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/indexed-traversable-0.1.3-95e606a9cc39926b2fb8da2a5b2676650c294ec94dc4a4379e3937d19eef4042/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/generically-0.1.1-ee28e64e964fc0323cfc6306a0b6c655d60120a74c24f48718d4f97d3f70c6a4/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/unbounded-delays-0.1.1.1-4280607e4d240d535c11f8c54e57e61df1a44012f4bd962d728b9a43c7f026a0/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/fingertree-0.1.5.0-131d0b0b298131f2c6ea9ad081e2cfa0cc649029edc45a5efa9bf425ee5c0152/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/logfloat-0.14.0-f194320452509c40111f2bef67943d1a776327d506c77ff48ce57c092fc50897/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/PHANE-evaluation-0.1.0-2e429c55d9cb0ac90d219d9942adb8bdb31b298bff29e2b6235ef70e0ab1b928/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/unliftio-0.2.25.0-659f8e2cdccb124175a8e79c216e75c5d4b7caef60197805ca65f2eaede21c2d/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/safe-exceptions-0.1.7.4-4ebbd0a99aa6b2f9714158becb9667579f3f646763529a0661da212c549c5e81/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/async-2.2.5-aaf0327b1564b4aba95159e470fd38dbf8c8eedbe144ea06620e7c74e5d123da/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/random-shuffle-0.0.4-36e5d58d479af0151bdcbb826cc7df94009ecd10e15bc5353953f47127a80a4a/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/QuickCheck-GenT-0.2.2.1-0313bf034b771b4f18f837ff2bffb7a288aa922a0d64448470f87b17da73e398/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/mmorph-1.2.0-b45ff2680fdce77ec2bcb176a68105984ef1027d6e4f565c76b2dc05db4c6f83/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/PHANE-evaluation-0.1.0-l-result-efbd4bd08610ffcad07d5ae499903f187f3fd093b2a38abaf8026a3f1c37477c/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/text-builder-linear-0.1.2-d15499532d43bd462b4434a7a15118f78c2433c2cb717f99c8ae9288a4177da7/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/quote-quot-0.2.1.0-8c074ed9653c32399fb275f7f2ad3d75c77d1b7459845a8506d7920455fe43a1/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/quickcheck-instances-0.3.30-76dfdf6a921936b8b49d449368ed6b72089b0ea7c7523095ec02e0b439e2cd96/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/uuid-types-1.0.5.1-96f4ab439a2ade32174fe3c4847d3c4a841a8ca812947d2682b0d12b16ceba3e/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/unordered-containers-0.2.20-9bd3dd75181ca839210ba79d192953b66874fc0c66e13ca6eb71b496d371acb1/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/time-compat-1.9.6.1-7a82772002738dcc84d179824eba6c61b1dfec19169b0a9f952bf49ea0d1d5f0/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/base-orphans-0.9.1-4ff2811d4947467a1c993a95d8e3734ff881e08fa8d4418bbf410dfd3b524f61/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/text-short-0.1.5-e2e846f1f09be81b4602dcfbf33b46b972b1b5780c4b44e4cece84335faf27b9/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/strict-0.5-147de9c8aecb7c5af21f41d618ef67be1afe6bb2c48632ec6d98d0da34146c85/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/these-1.2-cefda0a70a6c15c2df268520621ea2ddf98cc25c56c2510453d84eb218627e0a/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/assoc-1.1-0d0dacad358cd6dcd8cf5a0d0a52494aec3f2c7d245fa5338a2539dea7fb5c95/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/tagged-0.8.8-48ae4460345ce738e542e6d0c46d3265536a7ecb6228e86f6d9b4566e8f5029d/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/data-fix-0.3.2-2c09420051677ef7bea1fb4bffb035ecd89862766412bfdd1feb7db6197f5d04/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/case-insensitive-1.2.1.0-b3d8e67d93badbaf9be944b078af50674d9ddbaf382117f10c7da1106944eafc/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/OneTuple-0.4.1.1-271841e54034f1c5a4b69dda2bcac28324300c76fdb3aeeb7ae402f1fa74ea89/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/file-embed-0.0.16.0-af8d4076932d1314dd1c4ea82f78dcf156bdb8dfefad3c7e9679146381e7b444/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/encode-string-0.1.0.0-45f1c815e706e90d21926e966bca216dc54cb47f7f9b3b487dfa44e768f87a4f/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/th-lift-instances-0.1.20-f9236a9145e60a4bcaeb295601b2bdd57b1857aaf24ec8542d89d3fe42610845/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/th-lift-0.8.4-434cda8f59eeb4133f3487357e15f98fd32f1a2aac62d792002df65370df6273/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/th-abstraction-0.6.0.0-5aa19f6979ac1301fc167208e35578130c94638237693bb8abbf4a99aba22adf/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/gitrev-1.3.1-4eb1bc6f330f4c5c2102460f59ea7cd072554a98557168f4ce17e5ddb44edd77/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/unliftio-core-0.2.1.0-ee8834331f87a686edc6b072ed331f51b7f0c1b89669540d8bdf346f3f00b70d/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/MonadRandom-0.6-5bff522e25f5a5156e56b4cb31f407a603dfd8474721e94cd4cb4e92ec5e56a0/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/PHANE-dynamic-character-0.1.0-l-core-5417cd5a35a6d5fb7b7c499c451d9bd18ff21100a50aceb2a4322e0f3af506c1/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/monad-loops-0.4.3-adf67481ae46e3f990ab25d61c909154ab1feef35d4f220227e501d40f1749d3/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/MissingH-1.6.0.1-ce6febc5a32f5209e67580573750f133b9d71038dc546824e81ccd4576c1948f/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/regex-compat-0.95.2.1-678f4a6f654677003c2d6cb12951031028f8549a69f963280b2bcbe0e404222d/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/regex-posix-0.96.0.1-09bf6204202b01ab8017870c8a6b82a19b01de047dfc7dd8814b035b39d4e34d/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/regex-base-0.94.0.2-97972b35fd301aa76cbd54c102627cbda4652c6a235dbc2159ff78641f13374f/lib -L/home/ward/.ghcup/ghc/9.10.0.20240313/lib/ghc-9.10.0.20240313/lib/../lib/x86_64-linux-ghc-9.10.0.20240313/parsec-3.1.16.1-7a99 -L/home/ward/.cabal/store/ghc-9.10.0.20240313/old-time-1.1.0.4-45c303b9b4fcef7cb87347454164fdde9e92b84a981cbbc5c6ccf1551addc337/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/hslogger-1.3.1.0-37aae41ec7ad718b8d6732b2c191a2a1ec01d93436ae3694d3890d8ec9c4e6b9/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/old-locale-1.0.0.7-8f48608228de8769f88a0f5f216197a62f37df059327aa8f5cc8a441e2d03b9b/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/network-bsd-2.8.1.0-0bed7ea7b41bc6e29e1e594982632d0c2441969dc5710bf4cb1ec35b6640bb4e/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/network-3.1.4.0-2e852c263a71fdb4634a494c7c64a01f028737be30d7eafa48354b914dd63ba9/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/inflist-0.0.1-4702c17a69cab6eb0304e406f6cd04aa2d732306a25ce26d6bd5b8973d35d9a4/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/QuickCheck-2.14.3-7361a2a5fcfca6327ecf98169d6de62d4022891eb983e4aa4ef86c86d551a16c/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/PHANE-PhyloLib-0.1.0-0ecff0762185545d099be07c6b1a300a9029638b9771d74b61940b5bad38ecb9/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/sort-1.0.0.0-071d8c7c237807d6a1c6cba384384ee3c9e50b0bcbc583f659dfdb68ee335b9b/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/parallel-3.2.2.0-6b03a2d48793f9d78ee5fa4d135eb3ae3152e2e8cfae16ac39153cb6560820de/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/graphviz-2999.20.2.0-001619552d5ae6e973768f7a50f5bfbc41172d52d2f7a95f63aa3ff5beea43b4/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/wl-pprint-text-1.2.0.2-d35a32b242bbadcc2907884759589a583717dde5fb6e79ac3c3891a3108a2cf6/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/base-compat-0.13.1-f8da63fc026603e83d0e439e3abb40ada687e7f7a5601b45eae1e206daa894d9/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/temporary-1.3-d96a437ad3748af0523521a3c37c665156e8d2907a9277c8f274eac811307a95/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/random-1.2.1.2-169527d7b513727e30f59486dbd5feea96dd7530665e6ef38c4d9b81fc1f5f04/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/splitmix-0.1.0.5-258c37948587547443795f4877180c2ae7d800482e38af1a9803e808993aa962/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/polyparse-1.13-69b29990d8978f614f7903de39d7d5a1bf1f884792039c19c48e7fb9257ddad3/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/dlist-1.0-9c644bd7106b4fabceb49ddfa405280251f24ddc90bc1def7b85e7b4d9987525/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/bv-little-1.3.2-84c7e70393d54bc2aaa815bc88b19c1c75fd1cd192a32421f3864a5774098646/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/bv-little-1.3.2-l-core-56c05e3401b513743e941fcde029877a031d48e365d19a351dd65e954c1f65d3/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/bv-0.5-8539d98d6802c0ed85cf7aec0e8b0c11029d8ca42a765b2e9b36d7289665cc4c/lib -L/home/ward/.ghcup/ghc/9.10.0.20240313/lib/ghc-9.10.0.20240313/lib/../lib/x86_64-linux-ghc-9.10.0.20240313/integer-gmp-1.1-060f -L/home/ward/.cabal/store/ghc-9.10.0.20240313/PHANE-dynamic-character-element-0.1.0-40c01af5b8f4ec8b04384d1b84f7cf6d74e8952932c48542df99f1706a7ae4f1/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/PHANE-dynamic-character-element-0.1.0-l-core-a3e6a8d26264734aac1b148b0c1769950837ed78b7b747db079edc69f3efcbb5/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/bitvec-1.1.5.0-87285043749926a6da7a702129f184fa40e5133f06dd40c0f2c5bce250d1be28/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/PHANE-alphabet-0.1.0-91c3a224f8fcd2686217c4cab65da0e4f17d71ab1976f424073f8e7f5f57f8da/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/bimap-0.5.0-24c2e4a64e68f06564d3f245d7a1e60537be56861fd63f4f86ecd7b56865ee98/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/PHANE-alphabet-0.1.0-l-core-63d2ac0998c007b972b5701b9350da6aed3082d56b3147a2200f16e31928cc71/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/PHANE-measure-units-0.1.0-e8db44473454fb9e34ae190aaff84fba263e3a7ca83ebeb695bb49f6a7065cbe/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/vector-0.13.1.0-8dd3acf28f4218c732ff7446a937c02a168b6ca0b458ca8c8b06cdcb1ef5a26a/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/vector-stream-0.1.0.1-43d7326a2f5d1e129a86650285b4f59f852b604eb7f2233a852a995420bfcdb1/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/fgl-5.8.2.0-338e107736ed8ad2fdb1d41acf12f9308fc8cb11ae7df4f66eed5b969e49e92c/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/zlib-0.7.0.0-04c483d310d80e111950b59b78d4281a51930682650d883416bed3e37ad31d56/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/split-0.2.5-d67e7d971a4a42223615f63130b314ad39aa543d4f0742bea300aea40ceb614b/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/cpuinfo-0.1.0.2-d63e4c0f4ca355594d6dcc62cf674ecc89d401977c763b3ab3ad64112af81b86/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/attoparsec-0.14.4-16af435b2e647346c1d6d6624f6db0253c14dc40632c84c2a6f61d27cf5e6864/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/scientific-0.3.7.0-1f28a550478c91ad5535a24e7b02e945fbaeaddf6a2dc81d9cf4691e5138cc53/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/primitive-0.9.0.0-74b0b78a7155a064dc1f301b8e4c1698fe756ec1ec838f99f56e29560368dd8a/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/integer-logarithms-1.0.3.1-48eaa839fa97ec6253f87b64aea58f20e3707f927b5636a657cd14ebd7a1508c/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/hashable-1.4.3.0-63fb114e80737ed55c49027500ebb252862b286bfa670d2c3ee8fcbfa71c3209/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/attoparsec-0.14.4-l-attoparsec-internal-8f6e0f908499a00fdfbe9ca5f6c99353ec0c0f95e3e309f44a1501ec7cbcb9f2/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/optparse-applicative-0.18.1.0-7a2d25360e9a1524a9087b047f4fde0f0786d3c4ccd59992096fccc029a7bc56/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/transformers-compat-0.7.2-5b684c55afc805ea0e07a0ea47c141a9ec569c95a0449b6a4d9e2497e9126d40/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/process-1.6.18.0-31b02aa9b98b46bda2995b158752605ee4e5d58a729c9cfbed03a0d0c8cd9c1f/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/directory-1.3.8.1-107b22c0e7ebbe3c8d544fbc68f0a9d6f3b9c030ab746efcb44ac3dad04233b9/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/unix-2.8.5.0-ff79bc3b37242ff9c4f6c3743c0c38a3c346dd95478cd31574319b213226e237/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/filepath-1.4.300.1-e13738987058f2bc651531b5174e7137f3721b7d252227bf692a2210e4552bc3/lib -L/home/ward/.ghcup/ghc/9.10.0.20240313/lib/ghc-9.10.0.20240313/lib/../lib/x86_64-linux-ghc-9.10.0.20240313/exceptions-0.10.7-5fa6 -L/home/ward/.ghcup/ghc/9.10.0.20240313/lib/ghc-9.10.0.20240313/lib/../lib/x86_64-linux-ghc-9.10.0.20240313/stm-2.5.3.0-f23a -L/home/ward/.ghcup/ghc/9.10.0.20240313/lib/ghc-9.10.0.20240313/lib/../lib/x86_64-linux-ghc-9.10.0.20240313/mtl-2.3.1-a73e -L/home/ward/.ghcup/ghc/9.10.0.20240313/lib/ghc-9.10.0.20240313/lib/../lib/x86_64-linux-ghc-9.10.0.20240313/transformers-0.6.1.1-c378 -L/home/ward/.cabal/store/ghc-9.10.0.20240313/prettyprinter-ansi-terminal-1.1.3-f6ccc3e953bd6e7f36c2612bcf635a501d22edc1ca5a22a8a9ea8ee1afa92b39/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/ansi-terminal-1.1-bbc3bc4bac4723d9f39112568c226d83a33f83335996810f69004319b911c803/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/ansi-terminal-types-1.1-856077d4de8b5f226274a9d4f123cf3d02df68d7d26402416ec90c93bd4b1469/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/colour-2.3.6-bf4351fb8f3e089bffe64d7480284caa3dbd7194642175a49797978e61469fad/lib -L/home/ward/.cabal/store/ghc-9.10.0.20240313/prettyprinter-1.7.1-f2f04d58e9ef6102321faae325eddcddc9fe88363e796f98ff490957de19557a/lib -L/home/ward/.ghcup/ghc/9.10.0.20240313/lib/ghc-9.10.0.20240313/lib/../lib/x86_64-linux-ghc-9.10.0.20240313/time-1.12.2-c238 -L/home/ward/.ghcup/ghc/9.10.0.20240313/lib/ghc-9.10.0.20240313/lib/../lib/x86_64-linux-ghc-9.10.0.20240313/text-2.1.1-7204 -L/home/ward/.ghcup/ghc/9.10.0.20240313/lib/ghc-9.10.0.20240313/lib/../lib/x86_64-linux-ghc-9.10.0.20240313/binary-0.8.9.1-0ced -L/home/ward/.ghcup/ghc/9.10.0.20240313/lib/ghc-9.10.0.20240313/lib/../lib/x86_64-linux-ghc-9.10.0.20240313/containers-0.7-08af -L/home/ward/.ghcup/ghc/9.10.0.20240313/lib/ghc-9.10.0.20240313/lib/../lib/x86_64-linux-ghc-9.10.0.20240313/bytestring-0.12.1.0-315d -L/home/ward/.ghcup/ghc/9.10.0.20240313/lib/ghc-9.10.0.20240313/lib/../lib/x86_64-linux-ghc-9.10.0.20240313/template-haskell-2.22.0.0-7b8f -L/home/ward/.ghcup/ghc/9.10.0.20240313/lib/ghc-9.10.0.20240313/lib/../lib/x86_64-linux-ghc-9.10.0.20240313/pretty-1.1.3.6-dd28 -L/home/ward/.ghcup/ghc/9.10.0.20240313/lib/ghc-9.10.0.20240313/lib/../lib/x86_64-linux-ghc-9.10.0.20240313/ghc-boot-th-9.10.0.20240313-c8d6 -L/home/ward/.ghcup/ghc/9.10.0.20240313/lib/ghc-9.10.0.20240313/lib/../lib/x86_64-linux-ghc-9.10.0.20240313/deepseq-1.5.0.0-b3b5 -L/home/ward/.ghcup/ghc/9.10.0.20240313/lib/ghc-9.10.0.20240313/lib/../lib/x86_64-linux-ghc-9.10.0.20240313/array-0.5.6.0-4317 -L/home/ward/.ghcup/ghc/9.10.0.20240313/lib/ghc-9.10.0.20240313/lib/../lib/x86_64-linux-ghc-9.10.0.20240313/base-4.20.0.0-9d65 -L/home/ward/.ghcup/ghc/9.10.0.20240313/lib/ghc-9.10.0.20240313/lib/../lib/x86_64-linux-ghc-9.10.0.20240313/ghc-internal-9.1001.0-1dbd -L/home/ward/.ghcup/ghc/9.10.0.20240313/lib/ghc-9.10.0.20240313/lib/../lib/x86_64-linux-ghc-9.10.0.20240313/ghc-bignum-1.3-cfac -L/home/ward/.ghcup/ghc/9.10.0.20240313/lib/ghc-9.10.0.20240313/lib/../lib/x86_64-linux-ghc-9.10.0.20240313/ghc-prim-0.11.0-3fe2 -L/home/ward/.ghcup/ghc/9.10.0.20240313/lib/ghc-9.10.0.20240313/lib/../lib/x86_64-linux-ghc-9.10.0.20240313/rts-1.0.2 /tmp/ghc2756050_0/ghc_20.o /tmp/ghc2756050_0/ghc_23.o -Wl,-u,ghczminternal_GHCziInternalziTopHandler_runIO_closure -Wl,-u,ghczminternal_GHCziInternalziTopHandler_runNonIO_closure -Wl,-u,ghczmprim_GHCziTuple_Z0T_closure -Wl,-u,ghczmprim_GHCziTypes_True_closure -Wl,-u,ghczmprim_GHCziTypes_False_closure -Wl,-u,ghczminternal_GHCziInternalziPack_unpackCString_closure -Wl,-u,ghczminternal_GHCziInternalziWeakziFinalizze_runFinalizzerBatch_closure -Wl,-u,ghczminternal_GHCziInternalziIOziException_stackOverflow_closure -Wl,-u,ghczminternal_GHCziInternalziIOziException_heapOverflow_closure -Wl,-u,ghczminternal_GHCziInternalziIOziException_allocationLimitExceeded_closure -Wl,-u,ghczminternal_GHCziInternalziIOziException_blockedIndefinitelyOnMVar_closure -Wl,-u,ghczminternal_GHCziInternalziIOziException_blockedIndefinitelyOnSTM_closure -Wl,-u,ghczminternal_GHCziInternalziIOziException_cannotCompactFunction_closure -Wl,-u,ghczminternal_GHCziInternalziIOziException_cannotCompactPinned_closure -Wl,-u,ghczminternal_GHCziInternalziIOziException_cannotCompactMutable_closure -Wl,-u,ghczminternal_GHCziInternalziIOPort_doubleReadException_closure -Wl,-u,ghczminternal_GHCziInternalziControlziExceptionziBase_nonTermination_closure -Wl,-u,ghczminternal_GHCziInternalziControlziExceptionziBase_nestedAtomically_closure -Wl,-u,ghczminternal_GHCziInternalziEventziThread_blockedOnBadFD_closure -Wl,-u,ghczminternal_GHCziInternalziConcziSync_runSparks_closure -Wl,-u,ghczminternal_GHCziInternalziConcziIO_ensureIOManagerIsRunning_closure -Wl,-u,ghczminternal_GHCziInternalziConcziIO_interruptIOManager_closure -Wl,-u,ghczminternal_GHCziInternalziConcziIO_ioManagerCapabilitiesChanged_closure -Wl,-u,ghczminternal_GHCziInternalziConcziSignal_runHandlersPtr_closure -Wl,-u,ghczminternal_GHCziInternalziTopHandler_flushStdHandles_closure -Wl,-u,ghczminternal_GHCziInternalziTopHandler_runMainIO_closure -Wl,-u,ghczmprim_GHCziTypes_Czh_con_info -Wl,-u,ghczmprim_GHCziTypes_Izh_con_info -Wl,-u,ghczmprim_GHCziTypes_Fzh_con_info -Wl,-u,ghczmprim_GHCziTypes_Dzh_con_info -Wl,-u,ghczmprim_GHCziTypes_Wzh_con_info -Wl,-u,ghczminternal_GHCziInternalziPtr_Ptr_con_info -Wl,-u,ghczminternal_GHCziInternalziPtr_FunPtr_con_info -Wl,-u,ghczminternal_GHCziInternalziInt_I8zh_con_info -Wl,-u,ghczminternal_GHCziInternalziInt_I16zh_con_info -Wl,-u,ghczminternal_GHCziInternalziInt_I32zh_con_info -Wl,-u,ghczminternal_GHCziInternalziInt_I64zh_con_info -Wl,-u,ghczminternal_GHCziInternalziWord_W8zh_con_info -Wl,-u,ghczminternal_GHCziInternalziWord_W16zh_con_info -Wl,-u,ghczminternal_GHCziInternalziWord_W32zh_con_info -Wl,-u,ghczminternal_GHCziInternalziWord_W64zh_con_info -Wl,-u,ghczminternal_GHCziInternalziStable_StablePtr_con_info -Wl,-u,hs_atomic_add8 -Wl,-u,hs_atomic_add16 -Wl,-u,hs_atomic_add32 -Wl,-u,hs_atomic_add64 -Wl,-u,hs_atomic_sub8 -Wl,-u,hs_atomic_sub16 -Wl,-u,hs_atomic_sub32 -Wl,-u,hs_atomic_sub64 -Wl,-u,hs_atomic_and8 -Wl,-u,hs_atomic_and16 -Wl,-u,hs_atomic_and32 -Wl,-u,hs_atomic_and64 -Wl,-u,hs_atomic_nand8 -Wl,-u,hs_atomic_nand16 -Wl,-u,hs_atomic_nand32 -Wl,-u,hs_atomic_nand64 -Wl,-u,hs_atomic_or8 -Wl,-u,hs_atomic_or16 -Wl,-u,hs_atomic_or32 -Wl,-u,hs_atomic_or64 -Wl,-u,hs_atomic_xor8 -Wl,-u,hs_atomic_xor16 -Wl,-u,hs_atomic_xor32 -Wl,-u,hs_atomic_xor64 -Wl,-u,hs_cmpxchg8 -Wl,-u,hs_cmpxchg16 -Wl,-u,hs_cmpxchg32 -Wl,-u,hs_cmpxchg64 -Wl,-u,hs_xchg8 -Wl,-u,hs_xchg16 -Wl,-u,hs_xchg32 -Wl,-u,hs_xchg64 -Wl,-u,hs_atomicread8 -Wl,-u,hs_atomicread16 -Wl,-u,hs_atomicread32 -Wl,-u,hs_atomicread64 -Wl,-u,hs_atomicwrite8 -Wl,-u,hs_atomicwrite16 -Wl,-u,hs_atomicwrite32 -Wl,-u,hs_atomicwrite64 -Wl,-u,ghczminternal_GHCziInternalziStackziCloneStack_StackSnapshot_closure -lHSPhyG-0.1.4-inplace-dynamic-character -lHSmatrices-0.5.0-9a87c80463dbe35ef27be22acdc771f1188447138fd0f1c061dbcf179a3332fb -lHSPhyG-0.1.4-inplace-tcm -lHShashtables-1.3.1-d6b607aa090d5fd689970c5124246936962a52923884ad9a8cdc5abad1233eee -lHSconcurrent-hashtable-0.1.8-6d80284bacf78296e263f30ec70f18661d4f982e3ab9690de9f1d756cf746442 -lHSatomic-primops-0.8.5-d1604ef4633b9dc0d9510d5197661c6cc9d8094e8ce28d7e8557fd7209aa86a7 -lHSconcurrent-extra-0.7.0.12-a602ce75c4fc0cd682b22f0d1fea5b5783bcf6bd3c8848986f1d849bb3043b26 -lHSPhyG-0.1.4-inplace-utility -lHSvector-instances-3.4.2-1bb3a95bcd58dbb188689f3c179c710d7630d0a88b821704741d4fb104582485 -lHSvector-binary-instances-0.2.5.2-5bb3221da661c7078a5cd4fb1ff298bcea14cdb8000cc3cb3c91641adaa4b73a -lHSpointed-5.0.4-ed7f1dcfd8a1ba770a563461033de10e1a2633f26969ca97947e8db628a50f9d -lHSdata-default-class-0.1.2.0-5c0e1b43c8299caa99a50773e1f4a0e1adb8887fbcb8131a82bc4ef9d4b9f13d -lHSmatrix-0.3.6.3-f3f5a075e29810e884b15dfa2e0150f0645a0fc7f638baeff3e8362d89c19518 -lHSloop-0.3.0-d88ffc61282f6b41f4efd3e26979fb5dd8be60941be8355c27152e067fa191c1 -lHSlens-5.2.3-b4dca3ff3cc8c706a97847f8608c8688504b240607f09ac6c768d404f58f0c20 -lHSkan-extensions-5.2.5-21ccbc0205c83db218e3ea62812d048bb36516fc4fa79e9340ec51ceae075351 -lHSinvariant-0.6.2-604b6f28b872ebdfbbe8ab139df6b2330e5f10273903d9b74d0906472317a3c5 -lHSadjunctions-4.4.2-009b046c6a460a9987c0fe6d4cede557850c4f2b622dccac5c0be76e09dee155 -lHSvoid-0.7.3-d94546b220f98856f3b952037a8ced59eeb2561efaf978b88ab7bfb04e28e69d -lHScall-stack-0.4.0-99c99225a3a2549fbde9205528d058b5dc6d6061c1d029893decf2078b516540 -lHSkeys-3.12.3-80331c1e5a0900b85cd925b090d4be6edd3268c03ae62cc43311c9b56227f425 -lHSsemigroups-0.20-433fa4ea165918f07c69e4c6dbfe87f4963f75b93f0a124a72a5b17be0505795 -lHSfree-5.2-01bb8a61bfcf52d09512ed8029f4709cda9f99ffac177277dfc29fae697cb3ed -lHStransformers-base-0.4.6-d1b31c6625064809c8ab473833302c5d0eb4750004faad2d6ecb9b40c2cb08ae -lHSmmark-0.0.7.6-f0d7a30f192e6a6f9bf265ffec4f2e40edf48c7a1210cec9bc8fcedaf5f4cf42 -lHSyaml-0.11.11.2-d94c79ab18b84c59e53e73a5e31a1ba1a711f25768640f2452868f0e753c0ddb -lHSlibyaml-0.1.4-fe3cc56e711985416fd203a5940a49aaafa1550fe9acf3fd883f54dbe1470f95 -lHSlibyaml-clib-0.2.5-fff58eb26dc021cd0949644bf8d2d1e2a25817f943bd6ad180c552278a274d99 -lHSconduit-1.3.5-b0261fe83cb8d18d96e4406f524712c9abe03c0d76955f18b9a41eb3735137b5 -lHSresourcet-1.3.0-bc513d8b036d9192eb8254a59c5ecc1ac62a0cacb7215951095cd70262c84194 -lHSmono-traversable-1.0.17.0-d11dc60575166ae0c6e24566b2e54c303c73999ea8637f96fb7eea54d7806e40 -lHSvector-algorithms-0.9.0.1-25d1d87a515ec667881a5b55a37ecaddc33f73dc6b99c2f8de4795d37113083b -lHStext-metrics-0.3.2-3a570e6e1bdcc01b6a273b45b92617dacb550a6a8ff64b176549bd03d3c8dfd9 -lHSmodern-uri-0.3.6.1-09f4a2a5835da6cb4c33b3e3f0a1f5adf73780cc192628b94da38fe4165e39ae -lHSreflection-2.1.7-39deb79fe52241cc499b49172e0d7a07d68f6ad1c9d472f3b7698ac0de778ef3 -lHSmicrolens-th-0.4.3.14-57431124cf516db9640522c6ebdc05fe856777d786bfcde7a396d6e4cfd3aa3a -lHSmicrolens-0.4.13.1-7ecacbc77e9a9c2eb73258db30d8c59efa2c7fcd8d493419f34bf105edce5934 -lHSmegaparsec-9.6.1-8250b6748d335e93b30097ca7c84f48ca6314004010ab5d0f45c541b8b742427 -lHSparser-combinators-1.3.0-2001cdbbdd4e42f0073204441050a8fafe6693531a404ba1f7ccb503a29c9e96 -lHSlucid-2.11.20230408-4138c9d2c50a6792d42ed48f00b077b8cb2fbeb65edf2ef1ea409f57146b8acc -lHSblaze-builder-0.4.2.3-5bb60ad90b8e92a67fd002c65339763ef10aa190c00042f63061e697af6a46f1 -lHShtml-entity-map-0.1.0.0-eda09169ccfde47e573785ba6fabb6562933894b326c33175bddc1aee7b20df3 -lHSfoldl-1.4.16-ff63c7e8c1cedf48f2670e40b3310727a533b9595f29f864ed502621f0579de1 -lHSprofunctors-5.6.2-842c805864d8ce95639ee8088b1a96084fa2731f6e7ce38d34f960c7e02b8661 -lHSemail-validate-2.3.2.20-66bb6773c17f7b0329d309dacf52116f18adbd62425d8303cc401b1133e2bd49 -lHSaeson-2.2.1.0-8befb79d0d106f1d4c60c5b20aedfdf64f5eda1783b800809dcecdcb33e712d5 -lHSwitherable-0.4.2-b53f864bb77e2282548f63dc267ffb4ae21f0f65c5ae7e69c74904ccbfd528e6 -lHStext-iso8601-0.1-aac844663b2d31becc08aa07b88b9b29f861171c9f90fd847b6d7da7dabfb00c -lHSsemialign-1.3-52ac0fbe2aeb663cb47f3b7eeb5701ee2b7fa92264a23b41e5f243ca04fc586c -lHSsemigroupoids-6.0.0.1-86c0b62329f9ac2dfe87fbbb5c8a3dc84243bd3f43dc9d001473f47e0abd3ed0 -lHScontravariant-1.5.5-32bf2fbeee28b9e8e4d1a40ba16df4bcda31f4efec746051a8ae489f35ab22fb -lHSStateVar-1.2.2-3be256fecd0c57e14cb78e136bf2e7c80b8d1d6dc33eb599da8dc39e802c1eef -lHSbifunctors-5.6.1-ab6cb543e37e5be9101a015f625bec8e6e6092baa43fa3b5dc7d04f9af18293a -lHScomonad-5.0.8-6f3d11816e42419daefa539d3466d9293c6f8e823801066e769556fc1685271e -lHSdistributive-0.6.2.1-10a3b641d8f398fc6e830221bfe36744b22985d3f5cf4dd5a25329fc553cde95 -lHSindexed-traversable-instances-0.1.1.2-f6645ef51e0bc1a0c55288ede1da4b4cc0b44d2527013e5c56e2a99ccf990130 -lHSnetwork-uri-2.6.4.2-6011520a1bf141d76d6a03a4d9eae3f578e0abc92671941c03ac57a94f8ec96f -lHSth-compat-0.1.4-ddfa68d85e6c624aa3dbbce8ea9f8ba7b402c2963b36de45fb8c7708637f05cb -lHSinteger-conversion-0.1.0.1-956dd66c19940f595754137f2ab1ffbe6374734494162328e7965b9148cf9c09 -lHSindexed-traversable-0.1.3-95e606a9cc39926b2fb8da2a5b2676650c294ec94dc4a4379e3937d19eef4042 -lHSgenerically-0.1.1-ee28e64e964fc0323cfc6306a0b6c655d60120a74c24f48718d4f97d3f70c6a4 -lHSunbounded-delays-0.1.1.1-4280607e4d240d535c11f8c54e57e61df1a44012f4bd962d728b9a43c7f026a0 -lHSfingertree-0.1.5.0-131d0b0b298131f2c6ea9ad081e2cfa0cc649029edc45a5efa9bf425ee5c0152 -lHSlogfloat-0.14.0-f194320452509c40111f2bef67943d1a776327d506c77ff48ce57c092fc50897 -lHSPHANE-evaluation-0.1.0-2e429c55d9cb0ac90d219d9942adb8bdb31b298bff29e2b6235ef70e0ab1b928 -lHSunliftio-0.2.25.0-659f8e2cdccb124175a8e79c216e75c5d4b7caef60197805ca65f2eaede21c2d -lHSsafe-exceptions-0.1.7.4-4ebbd0a99aa6b2f9714158becb9667579f3f646763529a0661da212c549c5e81 -lHSasync-2.2.5-aaf0327b1564b4aba95159e470fd38dbf8c8eedbe144ea06620e7c74e5d123da -lHSrandom-shuffle-0.0.4-36e5d58d479af0151bdcbb826cc7df94009ecd10e15bc5353953f47127a80a4a -lHSQuickCheck-GenT-0.2.2.1-0313bf034b771b4f18f837ff2bffb7a288aa922a0d64448470f87b17da73e398 -lHSmmorph-1.2.0-b45ff2680fdce77ec2bcb176a68105984ef1027d6e4f565c76b2dc05db4c6f83 -lHSPHANE-evaluation-0.1.0-l-result-efbd4bd08610ffcad07d5ae499903f187f3fd093b2a38abaf8026a3f1c37477c -lHStext-builder-linear-0.1.2-d15499532d43bd462b4434a7a15118f78c2433c2cb717f99c8ae9288a4177da7 -lHSquote-quot-0.2.1.0-8c074ed9653c32399fb275f7f2ad3d75c77d1b7459845a8506d7920455fe43a1 -lHSquickcheck-instances-0.3.30-76dfdf6a921936b8b49d449368ed6b72089b0ea7c7523095ec02e0b439e2cd96 -lHSuuid-types-1.0.5.1-96f4ab439a2ade32174fe3c4847d3c4a841a8ca812947d2682b0d12b16ceba3e -lHSunordered-containers-0.2.20-9bd3dd75181ca839210ba79d192953b66874fc0c66e13ca6eb71b496d371acb1 -lHStime-compat-1.9.6.1-7a82772002738dcc84d179824eba6c61b1dfec19169b0a9f952bf49ea0d1d5f0 -lHSbase-orphans-0.9.1-4ff2811d4947467a1c993a95d8e3734ff881e08fa8d4418bbf410dfd3b524f61 -lHStext-short-0.1.5-e2e846f1f09be81b4602dcfbf33b46b972b1b5780c4b44e4cece84335faf27b9 -lHSstrict-0.5-147de9c8aecb7c5af21f41d618ef67be1afe6bb2c48632ec6d98d0da34146c85 -lHSthese-1.2-cefda0a70a6c15c2df268520621ea2ddf98cc25c56c2510453d84eb218627e0a -lHSassoc-1.1-0d0dacad358cd6dcd8cf5a0d0a52494aec3f2c7d245fa5338a2539dea7fb5c95 -lHStagged-0.8.8-48ae4460345ce738e542e6d0c46d3265536a7ecb6228e86f6d9b4566e8f5029d -lHSdata-fix-0.3.2-2c09420051677ef7bea1fb4bffb035ecd89862766412bfdd1feb7db6197f5d04 -lHScase-insensitive-1.2.1.0-b3d8e67d93badbaf9be944b078af50674d9ddbaf382117f10c7da1106944eafc -lHSOneTuple-0.4.1.1-271841e54034f1c5a4b69dda2bcac28324300c76fdb3aeeb7ae402f1fa74ea89 -lHSfile-embed-0.0.16.0-af8d4076932d1314dd1c4ea82f78dcf156bdb8dfefad3c7e9679146381e7b444 -lHSencode-string-0.1.0.0-45f1c815e706e90d21926e966bca216dc54cb47f7f9b3b487dfa44e768f87a4f -lHSth-lift-instances-0.1.20-f9236a9145e60a4bcaeb295601b2bdd57b1857aaf24ec8542d89d3fe42610845 -lHSth-lift-0.8.4-434cda8f59eeb4133f3487357e15f98fd32f1a2aac62d792002df65370df6273 -lHSth-abstraction-0.6.0.0-5aa19f6979ac1301fc167208e35578130c94638237693bb8abbf4a99aba22adf -lHSgitrev-1.3.1-4eb1bc6f330f4c5c2102460f59ea7cd072554a98557168f4ce17e5ddb44edd77 -lHSunliftio-core-0.2.1.0-ee8834331f87a686edc6b072ed331f51b7f0c1b89669540d8bdf346f3f00b70d -lHSMonadRandom-0.6-5bff522e25f5a5156e56b4cb31f407a603dfd8474721e94cd4cb4e92ec5e56a0 -lHSPHANE-dynamic-character-0.1.0-l-core-5417cd5a35a6d5fb7b7c499c451d9bd18ff21100a50aceb2a4322e0f3af506c1 -lHSmonad-loops-0.4.3-adf67481ae46e3f990ab25d61c909154ab1feef35d4f220227e501d40f1749d3 -lHSMissingH-1.6.0.1-ce6febc5a32f5209e67580573750f133b9d71038dc546824e81ccd4576c1948f -lHSregex-compat-0.95.2.1-678f4a6f654677003c2d6cb12951031028f8549a69f963280b2bcbe0e404222d -lHSregex-posix-0.96.0.1-09bf6204202b01ab8017870c8a6b82a19b01de047dfc7dd8814b035b39d4e34d -lHSregex-base-0.94.0.2-97972b35fd301aa76cbd54c102627cbda4652c6a235dbc2159ff78641f13374f -lHSparsec-3.1.16.1-7a99 -lHSold-time-1.1.0.4-45c303b9b4fcef7cb87347454164fdde9e92b84a981cbbc5c6ccf1551addc337 -lHShslogger-1.3.1.0-37aae41ec7ad718b8d6732b2c191a2a1ec01d93436ae3694d3890d8ec9c4e6b9 -lHSold-locale-1.0.0.7-8f48608228de8769f88a0f5f216197a62f37df059327aa8f5cc8a441e2d03b9b -lHSnetwork-bsd-2.8.1.0-0bed7ea7b41bc6e29e1e594982632d0c2441969dc5710bf4cb1ec35b6640bb4e -lHSnetwork-3.1.4.0-2e852c263a71fdb4634a494c7c64a01f028737be30d7eafa48354b914dd63ba9 -lHSinflist-0.0.1-4702c17a69cab6eb0304e406f6cd04aa2d732306a25ce26d6bd5b8973d35d9a4 -lHSQuickCheck-2.14.3-7361a2a5fcfca6327ecf98169d6de62d4022891eb983e4aa4ef86c86d551a16c -lHSPHANE-PhyloLib-0.1.0-0ecff0762185545d099be07c6b1a300a9029638b9771d74b61940b5bad38ecb9 -lHSsort-1.0.0.0-071d8c7c237807d6a1c6cba384384ee3c9e50b0bcbc583f659dfdb68ee335b9b -lHSparallel-3.2.2.0-6b03a2d48793f9d78ee5fa4d135eb3ae3152e2e8cfae16ac39153cb6560820de -lHSgraphviz-2999.20.2.0-001619552d5ae6e973768f7a50f5bfbc41172d52d2f7a95f63aa3ff5beea43b4 -lHSwl-pprint-text-1.2.0.2-d35a32b242bbadcc2907884759589a583717dde5fb6e79ac3c3891a3108a2cf6 -lHSbase-compat-0.13.1-f8da63fc026603e83d0e439e3abb40ada687e7f7a5601b45eae1e206daa894d9 -lHStemporary-1.3-d96a437ad3748af0523521a3c37c665156e8d2907a9277c8f274eac811307a95 -lHSrandom-1.2.1.2-169527d7b513727e30f59486dbd5feea96dd7530665e6ef38c4d9b81fc1f5f04 -lHSsplitmix-0.1.0.5-258c37948587547443795f4877180c2ae7d800482e38af1a9803e808993aa962 -lHSpolyparse-1.13-69b29990d8978f614f7903de39d7d5a1bf1f884792039c19c48e7fb9257ddad3 -lHSdlist-1.0-9c644bd7106b4fabceb49ddfa405280251f24ddc90bc1def7b85e7b4d9987525 -lHSbv-little-1.3.2-84c7e70393d54bc2aaa815bc88b19c1c75fd1cd192a32421f3864a5774098646 -lHSbv-little-1.3.2-l-core-56c05e3401b513743e941fcde029877a031d48e365d19a351dd65e954c1f65d3 -lHSbv-0.5-8539d98d6802c0ed85cf7aec0e8b0c11029d8ca42a765b2e9b36d7289665cc4c -lHSinteger-gmp-1.1-060f -lHSPHANE-dynamic-character-element-0.1.0-40c01af5b8f4ec8b04384d1b84f7cf6d74e8952932c48542df99f1706a7ae4f1 -lHSPHANE-dynamic-character-element-0.1.0-l-core-a3e6a8d26264734aac1b148b0c1769950837ed78b7b747db079edc69f3efcbb5 -lHSbitvec-1.1.5.0-87285043749926a6da7a702129f184fa40e5133f06dd40c0f2c5bce250d1be28 -lHSPHANE-alphabet-0.1.0-91c3a224f8fcd2686217c4cab65da0e4f17d71ab1976f424073f8e7f5f57f8da -lHSbimap-0.5.0-24c2e4a64e68f06564d3f245d7a1e60537be56861fd63f4f86ecd7b56865ee98 -lHSPHANE-alphabet-0.1.0-l-core-63d2ac0998c007b972b5701b9350da6aed3082d56b3147a2200f16e31928cc71 -lHSPHANE-measure-units-0.1.0-e8db44473454fb9e34ae190aaff84fba263e3a7ca83ebeb695bb49f6a7065cbe -lHSvector-0.13.1.0-8dd3acf28f4218c732ff7446a937c02a168b6ca0b458ca8c8b06cdcb1ef5a26a -lHSvector-stream-0.1.0.1-43d7326a2f5d1e129a86650285b4f59f852b604eb7f2233a852a995420bfcdb1 -lHSfgl-5.8.2.0-338e107736ed8ad2fdb1d41acf12f9308fc8cb11ae7df4f66eed5b969e49e92c -lHSzlib-0.7.0.0-04c483d310d80e111950b59b78d4281a51930682650d883416bed3e37ad31d56 -lHSsplit-0.2.5-d67e7d971a4a42223615f63130b314ad39aa543d4f0742bea300aea40ceb614b -lHScpuinfo-0.1.0.2-d63e4c0f4ca355594d6dcc62cf674ecc89d401977c763b3ab3ad64112af81b86 -lHSattoparsec-0.14.4-16af435b2e647346c1d6d6624f6db0253c14dc40632c84c2a6f61d27cf5e6864 -lHSscientific-0.3.7.0-1f28a550478c91ad5535a24e7b02e945fbaeaddf6a2dc81d9cf4691e5138cc53 -lHSprimitive-0.9.0.0-74b0b78a7155a064dc1f301b8e4c1698fe756ec1ec838f99f56e29560368dd8a -lHSinteger-logarithms-1.0.3.1-48eaa839fa97ec6253f87b64aea58f20e3707f927b5636a657cd14ebd7a1508c -lHShashable-1.4.3.0-63fb114e80737ed55c49027500ebb252862b286bfa670d2c3ee8fcbfa71c3209 -lHSattoparsec-0.14.4-l-attoparsec-internal-8f6e0f908499a00fdfbe9ca5f6c99353ec0c0f95e3e309f44a1501ec7cbcb9f2 -lHSoptparse-applicative-0.18.1.0-7a2d25360e9a1524a9087b047f4fde0f0786d3c4ccd59992096fccc029a7bc56 -lHStransformers-compat-0.7.2-5b684c55afc805ea0e07a0ea47c141a9ec569c95a0449b6a4d9e2497e9126d40 -lHSprocess-1.6.18.0-31b02aa9b98b46bda2995b158752605ee4e5d58a729c9cfbed03a0d0c8cd9c1f -lHSdirectory-1.3.8.1-107b22c0e7ebbe3c8d544fbc68f0a9d6f3b9c030ab746efcb44ac3dad04233b9 -lHSunix-2.8.5.0-ff79bc3b37242ff9c4f6c3743c0c38a3c346dd95478cd31574319b213226e237 -lHSfilepath-1.4.300.1-e13738987058f2bc651531b5174e7137f3721b7d252227bf692a2210e4552bc3 -lHSexceptions-0.10.7-5fa6 -lHSstm-2.5.3.0-f23a -lHSmtl-2.3.1-a73e -lHStransformers-0.6.1.1-c378 -lHSprettyprinter-ansi-terminal-1.1.3-f6ccc3e953bd6e7f36c2612bcf635a501d22edc1ca5a22a8a9ea8ee1afa92b39 -lHSansi-terminal-1.1-bbc3bc4bac4723d9f39112568c226d83a33f83335996810f69004319b911c803 -lHSansi-terminal-types-1.1-856077d4de8b5f226274a9d4f123cf3d02df68d7d26402416ec90c93bd4b1469 -lHScolour-2.3.6-bf4351fb8f3e089bffe64d7480284caa3dbd7194642175a49797978e61469fad -lHSprettyprinter-1.7.1-f2f04d58e9ef6102321faae325eddcddc9fe88363e796f98ff490957de19557a -lHStime-1.12.2-c238 -lHStext-2.1.1-7204 -lHSbinary-0.8.9.1-0ced -lHScontainers-0.7-08af -lHSbytestring-0.12.1.0-315d -lHStemplate-haskell-2.22.0.0-7b8f -lHSpretty-1.1.3.6-dd28 -lHSghc-boot-th-9.10.0.20240313-c8d6 -lHSdeepseq-1.5.0.0-b3b5 -lHSarray-0.5.6.0-4317 -lHSbase-4.20.0.0-9d65 -lHSghc-internal-9.1001.0-1dbd -lHSghc-bignum-1.3-cfac -lHSghc-prim-0.11.0-3fe2 -lHSrts-1.0.2_thr -lCffi -lm -lz -lgmp -lc -lm -lc -lm -lrt -ldl -lpthread
/home/ward/.cabal/store/ghc-9.10.0.20240313/atomic-primops-0.8.5-d1604ef4633b9dc0d9510d5197661c6cc9d8094e8ce28d7e8557fd7209aa86a7/lib/libHSatomic-primops-0.8.5-d1604ef4633b9dc0d9510d5197661c6cc9d8094e8ce28d7e8557fd7209aa86a7.a(Atomics.o):function atomiczmprimopszm0zi8zi5zmd1604ef4633b9dc0d9510d5197661c6cc9d8094e8ce28d7e8557fd7209aa86a7_DataziAtomics_storeLoadBarrier_info: error: undefined reference to 'hs_atomics_primops_store_load_barrier'
/home/ward/.cabal/store/ghc-9.10.0.20240313/atomic-primops-0.8.5-d1604ef4633b9dc0d9510d5197661c6cc9d8094e8ce28d7e8557fd7209aa86a7/lib/libHSatomic-primops-0.8.5-d1604ef4633b9dc0d9510d5197661c6cc9d8094e8ce28d7e8557fd7209aa86a7.a(Atomics.o):function atomiczmprimopszm0zi8zi5zmd1604ef4633b9dc0d9510d5197661c6cc9d8094e8ce28d7e8557fd7209aa86a7_DataziAtomics_loadLoadBarrier_info: error: undefined reference to 'hs_atomics_primops_load_load_barrier'
/home/ward/.cabal/store/ghc-9.10.0.20240313/atomic-primops-0.8.5-d1604ef4633b9dc0d9510d5197661c6cc9d8094e8ce28d7e8557fd7209aa86a7/lib/libHSatomic-primops-0.8.5-d1604ef4633b9dc0d9510d5197661c6cc9d8094e8ce28d7e8557fd7209aa86a7.a(Atomics.o):function atomiczmprimopszm0zi8zi5zmd1604ef4633b9dc0d9510d5197661c6cc9d8094e8ce28d7e8557fd7209aa86a7_DataziAtomics_writeBarrier_info: error: undefined reference to 'hs_atomics_primops_write_barrier'
collect2: error: ld returned 1 exit status
ghc-9.10.0.20240313: `gcc' failed in phase `Linker'. (Exit code: 1)
HasCallStack backtrace:
collectBacktraces, called at libraries/ghc-internal/src/GHC/Internal/Exception.hs:92:13 in ghc-internal:GHC.Internal.Exception
toExceptionWithBacktrace, called at libraries/ghc-internal/src/GHC/Internal/IO.hs:260:11 in ghc-internal:GHC.Internal.IO
throwIO, called at libraries/exceptions/src/Control/Monad/Catch.hs:371:12 in exceptions-0.10.7-5fa6:Control.Monad.Catch
throwM, called at libraries/exceptions/src/Control/Monad/Catch.hs:860:84 in exceptions-0.10.7-5fa6:Control.Monad.Catch
onException, called at compiler/GHC/Driver/Make.hs:2974:23 in ghc-9.10.0.20240313-97aa:GHC.Driver.Make
*** Deleting temp files:
Deleting: /tmp/ghc2756050_0/ghc_19.c /tmp/ghc2756050_0/ghc_2.h /tmp/ghc2756050_0/ghc_21.rsp /tmp/ghc2756050_0/ghc_22.s /tmp/ghc2756050_0/ghc_24.rsp /tmp/ghc2756050_0/ghc_25.rsp /tmp/ghc2756050_0/ghc_4.h /tmp/ghc2756050_0/ghc_6.h /tmp/ghc2756050_0/ghc_1.hscpp /tmp/ghc2756050_0/ghc_20.o /tmp/ghc2756050_0/ghc_23.o /tmp/ghc2756050_0/ghc_3.hscpp /tmp/ghc2756050_0/ghc_5.hscpp /tmp/ghc2756050_0/libghc_11.so /tmp/ghc2756050_0/libghc_13.so
*** Deleting temp subdirs:
Deleting:
*** Deleting temp dirs:
Deleting: /tmp/ghc2756050_0
Error: cabal: Failed to build exe:phyg from PhyG-0.1.4.
```
## Expected behavior
The executable builds without linking errors, as it does with GHC-9.8.2.
## Environment
* GHC version used:
```bash
$ ghc-9.10.0.20240313 --version
The Glorious Glasgow Haskell Compilation System, version 9.10.0.20240313
```
* Operating System:
```bash
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04.4 LTS
Release: 22.04
Codename: jammy
```
* System Architecture:
```bash
$ uname -m
x86_64
```
* Cabal version used:
```bash
$ cabal --version
cabal-install version 3.10.2.1
compiled using version 3.10.2.1 of the Cabal library
```
* Linker version used:
```bash
$ ld -v
GNU ld (GNU Binutils for Ubuntu) 2.38
```
* C Compiler version used:
```bash
$ cc -v
Using built-in specs.
COLLECT_GCC=cc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-linux-gnu/13/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 13.1.0-8ubuntu1~22.04' --with-bugurl=file:///usr/share/doc/gcc-13/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++,m2,rust --prefix=/usr --with-gcc-major-version-only --program-suffix=-13 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/libexec --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --enable-cet --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-13-IvzKaI/gcc-13-13.1.0/debian/tmp-nvptx/usr,amdgcn-amdhsa=/build/gcc-13-IvzKaI/gcc-13-13.1.0/debian/tmp-gcn/usr --enable-offload-defaulted --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu --with-build-config=bootstrap-lto-lean --enable-link-serialization=2
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 13.1.0 (Ubuntu 13.1.0-8ubuntu1~22.04)
```https://gitlab.haskell.org/ghc/ghc/-/issues/24594Consider adding a CI configuration that builds stage2 with -O2 for AArch64.2024-03-26T17:01:38ZAndreas KlebingerConsider adding a CI configuration that builds stage2 with -O2 for AArch64.## Summary
I recently wrote a patch that got merged, despite it turning out to be broken with `-O2` on AArch64 (see #24586).
This was only caught when colleagues complained about being unable to build ghc head locally.
I think testing...## Summary
I recently wrote a patch that got merged, despite it turning out to be broken with `-O2` on AArch64 (see #24586).
This was only caught when colleagues complained about being unable to build ghc head locally.
I think testing this config would be beneficial. But I don't know if we have the resources to do so for every run.
Maybe there is already a label to use to enable such a config which I forgot about?Ben GamariBen Gamarihttps://gitlab.haskell.org/ghc/ghc/-/issues/24593`putEnum` in `GHC.StgToJS.Object` could be simpler and more general (and more...2024-03-26T14:59:30ZMatthew Pickering`putEnum` in `GHC.StgToJS.Object` could be simpler and more general (and more correct)It seems there is some effort in `GHC.StgToJS.Object` to save some space by restricting `putEnum` to work with `Word16`.
However, the binary instance for all word types is exactly the same and uses a variable length encoding.
Either
*...It seems there is some effort in `GHC.StgToJS.Object` to save some space by restricting `putEnum` to work with `Word16`.
However, the binary instance for all word types is exactly the same and uses a variable length encoding.
Either
* Replace `Word16` with `FixedLengthEncoding Word16` if you actually want to serialise precisley two bytes (always).
* Use something bigger than Word16 and remove the check that `n > 65535`
It also seems that this check that `n > 65535` is always going to fail anyway as 65535 is the maxBound of Word16 so values will already have been wrapped by the time the comparison happens.doyougnujmy6342@gmail.comdoyougnujmy6342@gmail.comhttps://gitlab.haskell.org/ghc/ghc/-/issues/24592Off by one error in seekBinNoExpand2024-03-26T14:59:59ZMatthew PickeringOff by one error in seekBinNoExpandIf `seekBinNoExpand` is called with an offset equal to the buffer size then the function panics.
However, `putPrim` only expands the buffer in the case that the offset plus the size is strictly greater than the buffer size.
Therefore i...If `seekBinNoExpand` is called with an offset equal to the buffer size then the function panics.
However, `putPrim` only expands the buffer in the case that the offset plus the size is strictly greater than the buffer size.
Therefore if you end up writing exactly up to the buffer size and then moving to the end you will get a panic.
I imagine the following program exhibits the failure more directly.
```
bh <- openBinMem 0
bp <- tellBin @() bh
seekBinNoExpand bh bp
```
In general `seekBinNoExpand` with the result of `tellBin` should always succeed.
It might seem surprising this hasn't been discovered before but
* The initial buffer when writing an interface is 1mb, almost all interfaces are smaller than this.
* lazyPut/lazyGet and other functions which call seekBinNoExpand are not used very often.
The fix is simple, replace `>=` with `>` in `seekBin` and `seekBinNoExpand`.Hannes SiebenhandlHannes Siebenhandlhttps://gitlab.haskell.org/ghc/ghc/-/issues/24591Arity analysis fails badly2024-03-26T20:12:32ZSimon Peyton JonesArity analysis fails badlyHere's an interesting program, derived from the implementation of
`coVarsOfType` in GHC.Core.TyCo.FVs. It came up @Mikolaj's MR !12037, where the bug
described below made GHC allocate **six times as much** to compile the same program. ...Here's an interesting program, derived from the implementation of
`coVarsOfType` in GHC.Core.TyCo.FVs. It came up @Mikolaj's MR !12037, where the bug
described below made GHC allocate **six times as much** to compile the same program. Six times!
Here's the issue.
```haskell
module Foo where
import Data.List
import Data.Monoid
data Type = Tv Int | Tc [Type]
foldTyCo :: Monoid a => (Int -> a) -> Type -> a
{-# INLINE foldTyCo #-}
foldTyCo do_tv = go
where
go (Tv x) = do_tv x
----------------- foldl version --------------
go (Tc tys) = foldl (\ acc ty -> acc `mappend` go ty) mempty tys
----------------- foldr version --------------
-- go (Tc tys) = foldr (\t acc -> go t `mappend` acc) mempty tys
----------------- Explicit version --------------
-- go (Tc tys) = go_tys tys
-- go_tys [] = mempty
-- go_tys (t:ts) = go t `mappend` go_tys ts
free_tvs :: Type -> [Int]
free_tvs ty = appEndo (foldTyCo f ty) []
where
f :: Int -> Endo [Int]
f x = Endo (\xs -> x:xs)
```
Reminder:
* `foldTyCo` is specialised (by inlining) at every call site.
* In this case `free_tvs` specialises it at `Endo [Int]`.
* `newtype Endo = Endo (a->a)`; so `free_tvs` has an accumulating parameter.
We expect to get nice code like this:
```
Foo.free_tvs1 [Occ=LoopBreaker] :: [Type] -> [Int] -> [Int]
[GblId, Arity=2, Str=<1L><ML>, Unf=OtherCon []]
Foo.free_tvs1
= \ (ds_a1ez :: [Type]) (eta_X2 [OS=OneShot] :: [Int]) ->
case ds_a1ez of {
[] -> eta_X2;
: y_a1eC ys_a1eD ->
case y_a1eC of {
Tv x_aBb -> GHC.Types.: @Int x_aBb (Foo.free_tvs1 ys_a1eD eta_X2);
Tc tys_aBc -> Foo.free_tvs1 tys_aBc (Foo.free_tvs1 ys_a1eD eta_X2)
}
}
```
And we do get this code with
* The `Explicit version` which uses explicit recursion.
* The `foldr version` which uses foldr.
But with the "foldl version" we get
```
go1_r1f2 :: [Type] -> Endo [Int] -> Endo [Int]
[GblId[StrictWorker([!])], Arity=2, Str=<1L><L>, Unf=OtherCon []]
go1_r1f2
= \ (ds_a1eC :: [Type]) (eta_B0 [OS=OneShot] :: Endo [Int]) ->
case ds_a1eC of {
[] -> eta_B0;
: y_a1eF ys_a1eG ->
go1_r1f2
ys_a1eG
(let {
g_s1eq [Dmd=LC(S,L)] :: Endo [Int]
[LclId]
g_s1eq = Foo.free_tvs_go y_a1eF } in
(\ (x_a1ej :: [Int]) ->
(eta_B0
`cast` (base:Data.Semigroup.Internal.N:Endo[0] <[Int]>_R
:: Endo [Int] ~R# ([Int] -> [Int])))
((g_s1eq
`cast` (base:Data.Semigroup.Internal.N:Endo[0] <[Int]>_R
:: Endo [Int] ~R# ([Int] -> [Int])))
x_a1ej))
`cast` (Sym (base:Data.Semigroup.Internal.N:Endo[0] <[Int]>_R)
:: ([Int] -> [Int]) ~R# Endo [Int])) }
Foo.free_tvs_go [Occ=LoopBreaker] :: Type -> Endo [Int]
[GblId, Arity=1, Str=<1L>, Unf=OtherCon []]
Foo.free_tvs_go
= \ (ds_dVv :: Type) ->
case ds_dVv of {
Tv x_aB5 ->
(\ (xs_aRa :: [Int]) -> GHC.Types.: @Int x_aB5 xs_aRa)
`cast` (Sym (base:Data.Semigroup.Internal.N:Endo[0] <[Int]>_R)
:: ([Int] -> [Int]) ~R# Endo [Int]);
Tc tys_aB6 ->
go1_r1f2
tys_aB6
((id @[Int])
`cast` (Sym (base:Data.Semigroup.Internal.N:Endo[0] <[Int]>_R)
:: ([Int] -> [Int]) ~R# Endo [Int])) }
```
This is very bad. Two mutually-recursive functions, with higher order arguments. No no no.
A heavy cost for switching from `foldr` to `foldl`.
Reminder: not only are we using higher order stuff in the form of `Endo`, but also `foldl` is implemented in terms of `foldr`. See
this in `GHC.Internal.List`:
```
foldl k z0 xs =
foldr (\(v::a) (fn::b->b) -> oneShot (\(z::b) -> fn (k z v))) (id :: b -> b) xs z0
-- See Note [Left folds via right fold]
{-
Note [Left folds via right fold]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
...
```
## Diagnosis
At an earlier stage in the pipeline we have
```
go_s1em [Occ=LoopBreaker] :: Type -> Endo [Int]
go_s1em
= \ (ds_dVv :: Type) ->
case ds_dVv of {
Tv x_aB6 ->
(\ (xs_aRa :: [Int]) -> GHC.Types.: @Int x_aB6 xs_aRa)
`cast` <Co:4> :: ([Int] -> [Int]) ~R# Endo [Int];
Tc tys_aB7 ->
letrec {
go1_a1et [Occ=LoopBreaker] :: [Type] -> Endo [Int]
go1_a1et
= \ (ds_a1eu :: [Type]) ->
case ds_a1eu of {
[] -> (id @[Int]) `cast` <Co:4> :: ([Int] -> [Int]) ~R# Endo [Int];
: y_a1ex ys_a1ey ->
(let {
f_s1ei :: Endo [Int]
f_s1ei = go_s1em y_a1ex } in
let {
acc_aLK [OS=OneShot] :: Endo [Int]
acc_aLK = go1_a1et ys_a1ey } in
\ (x_a1e9 :: [Int]) ->
(f_s1ei `cast` <Co:3> :: Endo [Int] ~R# ([Int] -> [Int]))
((acc_aLK `cast` <Co:3> :: Endo [Int] ~R# ([Int] -> [Int]))
x_a1e9))
`cast` <Co:4> :: ([Int] -> [Int]) ~R# Endo [Int]
}; } in
go1_a1et tys_aB7
}
```
We want to eta-expand `go_s1em` and `go1_a1et`; then all would be well. And indeed, if we
hypothesis that both have arity 2, we can indeed eta-expand. But `GHC.Core.Opt.Arity.findRhsArity`
only works on **self-recursive** functions; it is defeated by nested mutual recursion like
the example above. And apparently Call Arity analysis is defeated too.
Mabye @sgraf812's new plan will catch this.
Meanwhile, this ticket just serves to immortalise the missed opportunity.Sebastian GrafSimon Peyton JonesSebastian Grafhttps://gitlab.haskell.org/ghc/ghc/-/issues/24590Out-of-range literal warnings interact poorly with rebindable syntax2024-03-26T15:25:02ZDavid FeuerOut-of-range literal warnings interact poorly with rebindable syntax## Summary
The fancy logic in `-Woverflowed-literals` can be triggered improperly under `RebindableSyntax`.
## Steps to reproduce
```haskell
{-# LANGUAGE RebindableSyntax #-}
module Silly where
import Prelude hiding (negate)
negate :...## Summary
The fancy logic in `-Woverflowed-literals` can be triggered improperly under `RebindableSyntax`.
## Steps to reproduce
```haskell
{-# LANGUAGE RebindableSyntax #-}
module Silly where
import Prelude hiding (negate)
negate :: Word -> Word
negate x = x + 1
foo :: Word
foo = -40
```
```plaintext
dfeuer@squirrel:~/src> ghc -fforce-recomp -Wall Silly
[1 of 1] Compiling Silly ( Silly.hs, Silly.o )Silly.hs:9:8: warning: [GHC-97441] [-Woverflowed-literals]
Literal -40 is out of the Word range 0..18446744073709551615
|
9 | foo = -40
| ^^
```
## Expected behavior
I expect the module to compile with no warnings.
## Discussion
As I understand it, there are three functions potentially involved in literal out of range warnings: `fromInteger`, `fromRational`, and `negate`. I believe that in a module using `RebindableSyntax` we want to modify the warning mechanism under the following circumstances.
1. If the literal is non-negative, or if `NegativeLiterals` is enabled, then we should not get a warning for an integer literal if `fromInteger` is rebound, and we should not get a warning for a rational literal if `fromRational` is rebound.
2. If the literal is negative, `NegativeLiterals` is disabled, and `negate` is rebound, then we should act exactly as though the user had written `negate lit`. That is, the range check should be performed on `lit` (unless the relevant `fromInteger` or `fromRational` is rebound), rather than on `-lit`. That can potentially produce warnings we do not currently produce. For example, if `negate` is rebound but `fromInteger` is not, `-128 :: Int8` should produce a warning, because `128` is out of range for `Int8`.
## Environment
* GHC version used: 9.8.2
Optional:
* Operating System:
* System Architecture:https://gitlab.haskell.org/ghc/ghc/-/issues/24589`inline` may only inline the wrapper and not the worker2024-03-26T15:46:20ZMichael Peyton Jones`inline` may only inline the wrapper and not the worker## Summary
Using the `inline` magic function on a reference to a function that has been worker-wrapper-transformed may result in only the _worker_ being inlined, which is unlikely to be what the user intended.
## Steps to reproduce
Ob...## Summary
Using the `inline` magic function on a reference to a function that has been worker-wrapper-transformed may result in only the _worker_ being inlined, which is unlikely to be what the user intended.
## Steps to reproduce
Observed when updating https://gitlab.haskell.org/ghc/ghc/-/merge_requests/5316 : `getTraceFlags` needs to be inlined to get the best code, but I am observing that the worker is still present.
## Expected behavior
The worker should be inlined.
## Environment
* GHC version used: 9.6.2
Optional:
* Operating System: NixOS
* System Architecture: x86_64https://gitlab.haskell.org/ghc/ghc/-/issues/24588ghc-toolchain and configure disagree on whether windres exists2024-03-27T01:37:22ZArsen Arsenovićghc-toolchain and configure disagree on whether windres exists## Summary
Please read the guidance in [https://gitlab.haskell.org/ghc/ghc/-/wikis/report-a-bug] and write a brief description of the issue.
## Steps to reproduce
1. clone ghc
2. ./boot && ./configure
3. see the following:
```
For mo...## Summary
Please read the guidance in [https://gitlab.haskell.org/ghc/ghc/-/wikis/report-a-bug] and write a brief description of the issue.
## Steps to reproduce
1. clone ghc
2. ./boot && ./configure
3. see the following:
```
For more information on how to configure your GHC build, see
https://gitlab.haskell.org/ghc/ghc/-/wikis/building/hadrian
configure: WARNING:
There are some differences between the toolchain configured by "configure" (hadrian/cfg/default.target) and the toolchain configured by the "ghc-toolchain" program (hadrian/cfg/default.target.ghc-toolchain).
39c39
< , tgtWindres = Just Program { prgPath = "/usr/bin/windres" , prgFlags = [] }
---
> , tgtWindres = Nothing
Don't worry! This won't affect your ghc in any way.
However, in a near future, we will move to configuring toolchains with "ghc-toolchain" by default, so you might have discovered a future bug.
In light of it, if you've spotted this difference, please report a GHC bug at https://www.haskell.org/ghc/reportabug
```
currently narrowing down what triggered the difference..
## Expected behavior
no diff between toolchain and configure
## Environment
* GHC version used: HEAD (host has The Glorious Glasgow Haskell Compilation System, version 9.6.4)
Optional:
* Operating System: Gentoo GNU/Linux
* System Architecture: x86-649.10.1Ben GamariBen Gamarihttps://gitlab.haskell.org/ghc/ghc/-/issues/24587Ticky allocation counters are broken2024-03-25T16:48:27ZBen GamariTicky allocation counters are brokenIt appears that 0e93023eef174262310737004d398bc7a606939a introduced a copy-paste error, causing the ticky entry counter to be incremented instead of the allocation counter:
```patch
@@ -597,7 +718,12 @@ bumpTickyEntryCount lbl = do
bump...It appears that 0e93023eef174262310737004d398bc7a606939a introduced a copy-paste error, causing the ticky entry counter to be incremented instead of the allocation counter:
```patch
@@ -597,7 +718,12 @@ bumpTickyEntryCount lbl = do
bumpTickyAllocd :: CLabel -> Int -> FCode ()
bumpTickyAllocd lbl bytes = do
platform <- getPlatform
- bumpTickyLitBy (cmmLabelOffB lbl (pc_OFFSET_StgEntCounter_allocd (platformConstants platform))) bytes
+ bumpTickyLitBy (cmmLabelOffB lbl (pc_OFFSET_StgEntCounter_entry_count (platformConstants platform))) bytes
+
+bumpTickyTagSkip :: CLabel -> FCode ()
+bumpTickyTagSkip lbl = do
+ platform <- getPlatform
+ bumpTickyLitBy (cmmLabelOffB lbl (pc_OFFSET_StgEntCounter_entry_count (platformConstants platform))) 1
bumpTickyLbl :: CLabel -> FCode ()
bumpTickyLbl lhs = bumpTickyLitBy (cmmLabelOffB lhs 0) 1
```https://gitlab.haskell.org/ghc/ghc/-/issues/24584Size reduction of "hello world" bundle compiled by javascript-backend2024-03-28T16:17:06ZSerge S. GulinSize reduction of "hello world" bundle compiled by javascript-backendLong-running issue (more like _epic_ than issue)
## Motivation
[Hello World](https://gitlab.haskell.org/ghc/ghc/-/wikis/javascript-backend/building#compiling-hello-world) bundle size is:
```
6224 -rw-r--r-- 1 gulinserge staff 5398132 ...Long-running issue (more like _epic_ than issue)
## Motivation
[Hello World](https://gitlab.haskell.org/ghc/ghc/-/wikis/javascript-backend/building#compiling-hello-world) bundle size is:
```
6224 -rw-r--r-- 1 gulinserge staff 5398132 Mar 23 20:39 all.js
```
Reduction `~5.4mb` would help to use ghc in wider application of web development.
## Proposal
Size reduction strategy could be considered in following broad directions:
1. **JavaScript-centric**. Use widely known existing tools to reduce js bundle size, such as (at least): [Google Closure Compiler](https://github.com/google/closure-compiler) and [UglifyJS](https://github.com/mishoo/UglifyJS). Here we will gather information on how existing bundle compress solutions work with hello-world. And if they do not work for some reasonable cases we will apply fixes and improvements to our javascript-backend building process.
2. **Environment-related**. JavaScript code is running in a rich environment where many basic things are defined and implemented already. For example, browsers already provide some Unicode and Locale support via `Intl`, which can probably be reused. So, our javascript hello-world bundle could reduce its size by removing already implemented stuff in browsers via ECMAScript standard.
3. **Translation-leaned**. GHCJS had built-in tooling for better dedupe called [Compactor](https://github.com/ghcjs/ghcjs/blob/b7711fbca7c3f43a61f1dba526e6f2a2656ef44c/src/Gen2/Compactor.hs). Such an approach could be ported to GHC Javascript-Backend and enabled in the same fashion via compilation options like `-dedupe`.
Currently this issue is about **N1** as other options still require deep dive from my side.
### JavaScript-centric
Usage of existing JavaScript tools to reduce the size of bundle output is a straightforward task. Honestly that is the first thing that comes to the mind.
See the difference how it is much between UglifyJS and Closure Compiler for hello-world:
```
$ uglifyjs --compress --mangle --output ./HelloJS.jsexe/all.min.uglifyjs.js -- ./HelloJS.jsexe/all.js
$ ls -als ./HelloJS.jsexe
...
4968 -rw-r--r-- 1 gulinserge staff 5084786 Mar 24 19:11 all.min.uglifyjs.js
```
To run Closure Compiler need to do [some](https://gitlab.haskell.org/ghc/ghc/-/merge_requests/12293) (See the origin [issue](https://gitlab.haskell.org/ghc/ghc/-/issues/24578)) [changes](https://gitlab.haskell.org/gulin.serge/ghc/-/compare/master...wip%2Fgoogle_closure?from_project_id=1&straight=false) (will be prepared as MR after applying the MR before) in GHC code because Closure Compiler will raise errors.
<details><summary>What if we run without these changes?</summary>
At first we hit the following:
```
./HelloJS.jsexe/all.js:12611:9: ERROR - [JSC_VAR_MULTIPLY_DECLARED_ERROR] Variable h$rts_isProfiled declared more than once. First occurrence: ./HelloJS.jsexe/all.js:8723:9
12611| function h$rts_isProfiled() {
```
The [origin issue](https://gitlab.haskell.org/ghc/ghc/-/issues/24578) has some investigation into how it happened.
> Commit https://gitlab.haskell.org/ghc/ghc/-/merge_requests/11447/diffs#24e9216fe80fd5aa5c24ea79d3633fb0b2bee7c6_0_17 added a dupe of `h$rts_isProfiled` which was already defined by https://gitlab.haskell.org/ghc/ghc/-/commit/08d8e9efa245e87e9c67da73e0987846865671d6#c14e882edb9d4b205929f4f71581a2e43ea05852_334_335
Then if we try to fix it locally (how MR suggests) we will hit the following on [latest master](https://gitlab.haskell.org/ghc/ghc/-/tree/8d67f247c3e4ca3810712654e1becbf927405f6b) (+ applied [MR](https://gitlab.haskell.org/ghc/ghc/-/merge_requests/12293)):
```
./HelloJS.jsexe/all.js:7795:8: ERROR - [JSC_UNDEFINED_VARIABLE] variable java is undeclared
7795| java.lang.System.out.print(s);
^^^^
./HelloJS.jsexe/all.js:8432:27: ERROR - [JSC_UNDEFINED_VARIABLE] variable Buffer is undeclared
8432| h$fs.read(real_fd, Buffer.alloc(n), 0, n, pos, function(err, bytesRead, nbuf) {
^^^^^^
./HelloJS.jsexe/all.js:8495:8: ERROR - [JSC_UNDEFINED_VARIABLE] variable putstr is undeclared
8495| putstr(h$decodeUtf8(buf, n, buf_offset));
^^^^^^
./HelloJS.jsexe/all.js:8499:8: ERROR - [JSC_UNDEFINED_VARIABLE] variable printErr is undeclared
8499| printErr(h$decodeUtf8(buf, n, buf_offset));
^^^^^^^^
./HelloJS.jsexe/all.js:8507:37: ERROR - [JSC_UNDEFINED_VARIABLE] variable debug is undeclared
8507| var h$base_stderrLeftover = { f: debug, val: null };
^^^^^
./HelloJS.jsexe/all.js:9747:68: ERROR - [JSC_UNDEFINED_VARIABLE] variable null_ is undeclared
9747| var p = (((ptr_d).arr && (ptr_d).arr[off]) ? (ptr_d).arr[off] : null_); var o = (ptr_d).dv.getInt32(off,true);;
^^^^^
./HelloJS.jsexe/all.js:10273:26: ERROR - [JSC_UNDEFINED_VARIABLE] variable j is undeclared
10273| for(j=x.length-1;j>=0;j--) {
^
./HelloJS.jsexe/all.js:12247:9: ERROR - [JSC_UNDEFINED_VARIABLE] variable ptr is undeclared
12247| return ptr = h$initHeapBufferLen(str_d, str_o, str_d.len);
^^^
./HelloJS.jsexe/all.js:12498:25: ERROR - [JSC_UNDEFINED_VARIABLE] variable h$setCcs_e is undeclared
12498| if(h$stack[h$sp] !== h$setCcs_e) {
^^^^^^^^^^
./HelloJS.jsexe/all.js:12808:11: ERROR - [JSC_UNDEFINED_VARIABLE] variable h$vt_int is undeclared
12808| case h$vt_int:
^^^^^^^^
./HelloJS.jsexe/all.js:12941:22: ERROR - [JSC_UNDEFINED_VARIABLE] variable h$checkInvariants_e is undeclared
12941| h$stack[h$sp] = h$checkInvariants_e;
^^^^^^^^^^^^^^^^^^^
./HelloJS.jsexe/all.js:13834:33: ERROR - [JSC_UNDEFINED_VARIABLE] variable arr is undeclared
13834| return h$charCodeArrayToString(arr);
^^^
./HelloJS.jsexe/all.js:13925:12: ERROR - [JSC_UNDEFINED_VARIABLE] variable h$EINVAL is undeclared
13925| h$errno = h$EINVAL;
^^^^^^^^
./HelloJS.jsexe/all.js:14112:2: ERROR - [JSC_UNDEFINED_VARIABLE] variable h$fds is undeclared
14112| h$fds[fd].waitRead.push(h$currentThread);
^^^^^
./HelloJS.jsexe/all.js:24517:13: ERROR - [JSC_UNDEFINED_VARIABLE] variable h$stg_cloneMyStackzh is undeclared
24517| if(c) {var g=h$stg_cloneMyStackzh();
^^^^^^^^^^^^^^^^^^^^
./HelloJS.jsexe/all.js:24518:6: ERROR - [JSC_UNDEFINED_VARIABLE] variable h$stg_decodeStackzh is undeclared
24518| var i=h$stg_decodeStackzh(g);
^^^^^^^^^^^^^^^^^^^
./HelloJS.jsexe/all.js:25814:6: ERROR - [JSC_UNDEFINED_VARIABLE] variable h$libdwLookupLocation is undeclared
25814| var h=h$libdwLookupLocation(d,e,a,c,f,g);
^^^^^^^^^^^^^^^^^^^^^
./HelloJS.jsexe/all.js:26282:21: ERROR - [JSC_UNDEFINED_VARIABLE] variable h$libdwPoolRelease is undeclared
26282| h$r3=h$mkFunctionPtr(h$libdwPoolRelease);
^^^^^^^^^^^^^^^^^^
./HelloJS.jsexe/all.js:26290:2: ERROR - [JSC_UNDEFINED_VARIABLE] variable h$libdwPoolTake is undeclared
26290| a=h$libdwPoolTake();
^^^^^^^^^^^^^^^
./HelloJS.jsexe/all.js:26307:2: ERROR - [JSC_UNDEFINED_VARIABLE] variable h$libdwGetBacktrace is undeclared
26307| c=h$libdwGetBacktrace(a,b);
^^^^^^^^^^^^^^^^^^^
./HelloJS.jsexe/all.js:26335:21: ERROR - [JSC_UNDEFINED_VARIABLE] variable h$backtraceFree is undeclared
26335| h$r3=h$mkFunctionPtr(h$backtraceFree);
^^^^^^^^^^^^^^^
./HelloJS.jsexe/all.js:33154:5: ERROR - [JSC_UNDEFINED_VARIABLE] variable h$fdReady is undeclared
33154| h$r1=h$fdReady(a,1,f,(c>>>0),0);
^^^^^^^^^
./HelloJS.jsexe/all.js:37760:5: ERROR - [JSC_UNDEFINED_VARIABLE] variable h$lookupIPE is undeclared
37760| h$r1=h$lookupIPE(a,c,d,0);
^^^^^^^^^^^
./HelloJS.jsexe/all.js:47403:0: ERROR - [JSC_UNDEFINED_VARIABLE] variable h$reportStackOverflow is undeclared
47403| h$reportStackOverflow(c);
^^^^^^^^^^^^^^^^^^^^^
./HelloJS.jsexe/all.js:47407:8: ERROR - [JSC_UNDEFINED_VARIABLE] variable h$reportHeapOverflow is undeclared
47407| case(2):h$reportHeapOverflow();
^^^^^^^^^^^^^^^^^^^^
./HelloJS.jsexe/all.js:57067:4: ERROR - [JSC_VAR_MULTIPLY_DECLARED_ERROR] Variable fs declared more than once. First occurrence: ./HelloJS.jsexe/all.js:7767:8
57067| var fs, nodePath;
^^
26 error(s), 87 warning(s)
make: *** [Makefile:8: closure] Error 26
```
</details>
When all changes will be applied to master branch of GHC it will be possible to run Google Closure Compiler:
```
$ google-closure-compiler --isolation_mode IIFE --assume_function_wrapper --emit_use_strict --externs ./HelloJS.jsexe/all.js.externs --compilation_level ADVANCED_OPTIMIZATIONS ./HelloJS.jsexe/all.js ./hello.externs.js --js_output_file ./HelloJS.jsexe/all.min.js
$ ls -als ./HelloJS.jsexe
...
4160 -rw-r--r-- 1 gulinserge staff 3775580 Mar 23 16:50 all.min.js
```
<details><summary>For reference ./hello.externs.js is following:</summary>
```
/**
* @externs
*/
/** @type {*} */
Module.HEAP8;
if (typeof process !== 'undefined') {
/** @type {*} */
process.stdin.on;
}
/** @type {*} */
var __dirname = typeof __dirname != 'undefined' ? __dirname : undefined;
```
</details>
<details><summary>Why we do not test SWC?</summary>
SWC is a good thing, but it supports tree shaking only for CommonJS-enabled bundle output which is not currently available with ghc javascript-backend. When (and ever) we will support it, we could try this compiler as well and very probably it will do the job better than others.
</details>
| | Origin | UglifyJS (+ mangle) | Google Closure Compiler (Advanced) |
| ------ | ------ | ------------------- | -----------------------------------|
| Size | 5398132 | 5084786 | 3775580 |
It is not a surprise that Closure Compiler wins the challenge with UglifyJS. Google Closure Compiler does deep static code analysis (that's why it was possible CC to point us on errors) to eliminate dead code and throw it away.
#### Little summary
Using existing tools to compress generated bundles is useful. To make it happen we still need to change GHC code to make its output work with Google Closure Compiler. To prevent us from facing such issues further it would be nice to add Google Closure Compiler to the test suite and run it at least over the hello-world bundle just to make sure that we do not add mistakes to javascript code which can be noted automatically via static checks.
### Environment-related
Middle way of optimizations is to make a good deal with the environment where we are supposed to run our javascript bundles. I reviewed our code of supported environments, and, it seems, we are going to
<details><summary> support as much as possible. </summary>
```
function h$isNode() {
return h$isNode_;
}
function h$isJvm() {
return h$isJvm_;
}
function h$isJsShell() {
return h$isJsShell_;
}
function h$isJsCore() {
return h$isJsCore_;
}
function h$isBrowser() {
return h$isBrowser_;
}
function h$isGHCJSi() {
return h$isGHCJSi_;
}
```
</details>
Besides the wide list of JVM ones (Rhino, Nashorn, GraalVM) , browser support requires even more effort due its very large amount of differences between them.
So, the first step here is to define **what exactly** we are going to support. And leave details to tools which are specialized on graceful degradation in the modern web. My point of view is simple. We could rely on the edge of ECMA and leave things down to tools like `babel`. That's how the javascript world works with all its huge amount of little differences.
If we are going to take such a way the problem becomes simpler.
Okay, suppose we've limited our list of support to only edge ECMA but why do I ever tell about it? Even if we will have applied for **N1** we are still dealing with `~3.8MB`. It is still quite a large volume for an average browser app. Let's take a look deeper into our bundle.
I did the following:
1. Processed our bundle via Google Closure Compiler (with all patches enabled) but with `--debug` option. It produces output without dead code but also without names mangling.
2. Counted chars on every line. Most interesting is `out.js` content. Its structure is very simple: every line contains a translated expression from haskell. For example: `var h$ghczminternalZCGHCziInternalziUnicodezizdtrModule4_1=h$rawStringData([103,104,99,45,105,110,116,101,114,110,97,108]);`.
3. Calculated sum of all chars (without newlines), divided every line all chars over sum of all chars, selected some threshold to limit noise.
4. Draw the graph of accumulated amount for weighted lines length.
It has a very interesting structure.
![image](/uploads/3456f8c51873d72e1b9c6d8e065a56d3/image.png)
At the image above you will note that size grows at a lower speed most of the time. But there is an area where its growing speed is very large. I took a look into it and found the following:
```
h$ghczminternalZCGHCziInternalziUnicodeziCharziUnicodeDataziGeneralCategoryzilvl_1=h$rawStringData([25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25......
```
`GHC.Internal.Unicode.Char.UnicodeData.GeneralCategory.lvl_1`. It is related to [this](https://gitlab.haskell.org/ghc/ghc/-/tree/8d67f247c3e4ca3810712654e1becbf927405f6b/libraries/ghc-internal/src/GHC/Internal/Unicode/Char/UnicodeData). And one of these files take up to `3.5MB` in sources.
**Here are my assumptions.** I assume that we could avoid bundling Unicode into javascript builds due to having `Intl` in modern browsers and environments. I cut off this line from my minified bundle and its size became: `0.5MB`.
#### Little summary
The Javascript Environment is rich but very granular. But in best crossed chances we could drastically reduce our `>5.5MB` bundle to a notable little `~0.5MB`. It is TEN times better. To make it happen we should select a strategy which Javascript Environments we support, how and at which limitations. After that we could make steps into the more risky part: swap GHC internals on Environment implementations. For an average web app where size is critical the total win is **10x**.
### Translation-leaned
It is the last way which I can see currently but not the least. Our Haskell->Javascript translation process is not perfect. It leaves out very important things in modern JavaScript development such as: CommonJS module wrapping, Source Code Maps generation, origin code (at Haskell) duplication removal, types information provided to JavaScript tools. I think there are other things but these came to my mind first.
Every point of above could have a positive impact on javascript code compression. For example, having CommonJS module wrapping opens a door into modern javascript compilers: [SWC](https://swc.rs/). See the [list](https://github.com/privatenumber/minification-benchmarks) for details why. Having Source Code Maps opens a door into modern JavaScript tooling to [analyze](https://github.com/danvk/source-map-explorer) what takes space in the bundle (besides a nice-to-have [feature](https://developer.chrome.com/docs/devtools/javascript/source-maps?hl=en) to show sources right at the browser with breakpoints).
But for first attempt I would move your look into existing `-dedupe` option in GHCJS which is covered by [Compactor](https://github.com/ghcjs/ghcjs/blob/b7711fbca7c3f43a61f1dba526e6f2a2656ef44c/src/Gen2/Compactor.hs). Its results are described at [Reddit](https://www.reddit.com/r/haskell/comments/54knub/ghcjs_dedupe/). As for me it is good to have things which could help too with size reduction.
It would be nice to port it into GHC JavaScript-Backend and see how it will go. This issue is not about it (because it still requires deep investigation from me) but looks pretty promising.
#### Little summary
This way of optimizations scratched very little at the current time but I bet here we will hit 2 things in one shot: earn some amount of size reduction with improvement overall development experience of ghc javascript-backend usage.
## Summary
Suggested changes already have potential improvements in 10 times for hello-world. I am open for any questions and as you suppose most sentences in this issue could be covered by a large description further. I hope that with blessing from the GHC community we could improve the current situation with bundle size. And as you see also code size reduction is not only about size. It points us to far away things which could be a game changer for the role of GHC in modern client-side web development.https://gitlab.haskell.org/ghc/ghc/-/issues/24582Infinite simplifier iteration2024-03-26T15:13:09ZSimon Peyton JonesInfinite simplifier iterationConsider this little program:
```
module Foo(woo) where
foo :: String -> Int -> a
{-# NOINLINE foo #-}
foo s _ = error s
f :: (Int->Int) -> Int
{-# NOINLINE f #-}
f g = g 3
x :: Int -> a
x = foo "urk"
woo = f x
```
When compiling wi...Consider this little program:
```
module Foo(woo) where
foo :: String -> Int -> a
{-# NOINLINE foo #-}
foo s _ = error s
f :: (Int->Int) -> Int
{-# NOINLINE f #-}
f g = g 3
x :: Int -> a
x = foo "urk"
woo = f x
```
When compiling with HEAD we get
```
bash$ ~/code/HEAD/$s1 -c -O -fmax-simplifier-iterations=10 Foo.hs
WARNING:
Simplifier bailing out
Foo, after 10 iterations [12, 2, 2, 2, 2, 2, 2, 2, 2, 2]
Size = {terms: 85, types: 55, coercions: 4, joins: 0/0}
Call stack:
CallStack (from HasCallStack):
warnPprTrace, called at compiler/GHC/Core/Opt/Simplify.hs:191:9 in ghc:GHC.Core.Opt.Simplify
WARNING:
Simplifier bailing out
Foo, after 10 iterations [46, 3, 3, 3, 3, 3, 3, 3, 3, 3]
Size = {terms: 85, types: 45, coercions: 4, joins: 0/0}
Call stack:
CallStack (from HasCallStack):
warnPprTrace, called at compiler/GHC/Core/Opt/Simplify.hs:191:9 in ghc:GHC.Core.Opt.Simplify
WARNING:
Simplifier bailing out
Foo, after 10 iterations [3, 3, 3, 3, 3, 3, 3, 3, 3, 3]
Size = {terms: 85, types: 45, coercions: 4, joins: 0/0}
Call stack:
CallStack (from HasCallStack):
warnPprTrace, called at compiler/GHC/Core/Opt/Simplify.hs:191:9 in ghc:GHC.Core.Opt.Simplify
```
Clearly the Simplifier is not reaching a fixed point.
This is true in HEAD, and goes back to at least GHC 9.6 probably earlier.
## Diagnosis
We end up with
```
s1 = "urk#"
s2 = unpackSString# s1
x = foo s2 -- A partial application, since foo has arity 2
-- but x is bottoming so we don't inline it
```
The Simplifier is
* doing `preInlineUnconditionally` to inline `s1` into `s2`, and `s2` into `x`
* and then ANF-ising the RHS `foo (unpackCString# "urk"#)` to get back what we started with.
The (long-standing) bug is that the `certainly_inline` predicate in `GHC.Core.Opt.OccurAnal.mkNonRecRhsCtxt` is not tracking `preInlineUnconditionally` correctly; see Note [Cascading inlines] in that module. (In this case it is not accounting for the fact that `x` a top-level is bottoming binding.
## Solution
Update `certainly_inline`. It's not very satisfactory that this out-of-sync-ness can
happen but I don't see an easy solution.Simon Peyton JonesSimon Peyton Jones