Marge Bot pushed to branch wip/marge_bot_batch_merge_job at Glasgow Haskell Compiler / GHC
Commits:
-
3bfe7aa2
by Matthew Pickering at 2025-12-07T12:18:57-05:00
-
2ef1601a
by Rodrigo Mesquita at 2025-12-07T12:19:38-05:00
-
747153d2
by Rodrigo Mesquita at 2025-12-07T12:19:38-05:00
-
493cd900
by Simon Hengel at 2025-12-09T11:19:16-05:00
-
82f7fa00
by Cheng Shao at 2025-12-09T11:19:16-05:00
9 changed files:
- .gitlab-ci.yml
- .gitlab/ci.sh
- .gitlab/generate-ci/gen_ci.hs
- docs/users_guide/exts/gadt_syntax.rst
- libraries/ghc-internal/src/GHC/Internal/Stack/Decode.hs
- + testsuite/tests/bytecode/T26640.hs
- + testsuite/tests/bytecode/T26640.script
- + testsuite/tests/bytecode/T26640.stdout
- testsuite/tests/bytecode/all.T
Changes:
| ... | ... | @@ -416,7 +416,7 @@ hadrian-ghc-in-ghci: |
| 416 | 416 | # workaround for docker permissions
|
| 417 | 417 | - sudo chown ghc:ghc -R .
|
| 418 | 418 | variables:
|
| 419 | - GHC_FLAGS: -Werror
|
|
| 419 | + GHC_FLAGS: -Werror -Wwarn=unused-imports
|
|
| 420 | 420 | tags:
|
| 421 | 421 | - x86_64-linux
|
| 422 | 422 | script:
|
| ... | ... | @@ -428,7 +428,7 @@ hadrian-ghc-in-ghci: |
| 428 | 428 | - "echo ' ghc-options: -Werror' >> hadrian/cabal.project.local"
|
| 429 | 429 | # Load ghc-in-ghci then immediately exit and check the modules loaded
|
| 430 | 430 | - export CORES="$(mk/detect-cpu-count.sh)"
|
| 431 | - - echo ":q" | HADRIAN_ARGS=-j$CORES hadrian/ghci -j$CORES | tail -n2 | grep "Ok,"
|
|
| 431 | + - echo ":q" | HADRIAN_ARGS=-j$CORES hadrian/ghci-multi -j$CORES | tail -n2 | grep "Ok,"
|
|
| 432 | 432 | after_script:
|
| 433 | 433 | - .gitlab/ci.sh save_cache
|
| 434 | 434 | - cat ci_timings.txt
|
| ... | ... | @@ -275,7 +275,7 @@ function setup() { |
| 275 | 275 | |
| 276 | 276 | function fetch_ghc() {
|
| 277 | 277 | local should_fetch=false
|
| 278 | -
|
|
| 278 | + |
|
| 279 | 279 | if [ ! -e "$GHC" ]; then
|
| 280 | 280 | if [ -z "${FETCH_GHC_VERSION:-}" ]; then
|
| 281 | 281 | fail "GHC not found at '$GHC' and FETCH_GHC_VERSION is not set"
|
| ... | ... | @@ -292,7 +292,7 @@ function fetch_ghc() { |
| 292 | 292 | fi
|
| 293 | 293 | fi
|
| 294 | 294 | fi
|
| 295 | -
|
|
| 295 | + |
|
| 296 | 296 | if [ "$should_fetch" = true ]; then
|
| 297 | 297 | local v="$FETCH_GHC_VERSION"
|
| 298 | 298 | |
| ... | ... | @@ -887,8 +887,28 @@ function save_cache () { |
| 887 | 887 | }
|
| 888 | 888 | |
| 889 | 889 | function clean() {
|
| 890 | - rm -R tmp
|
|
| 891 | - run rm -Rf _build
|
|
| 890 | + # When CI_DISPOSABLE_ENVIRONMENT is not true (e.g. using shell
|
|
| 891 | + # executor on windows/macos), the project directory is not removed
|
|
| 892 | + # by gitlab runner automatically after each job. To mitigate the
|
|
| 893 | + # space leak, other than periodic cleaning on the runner host, we
|
|
| 894 | + # also must aggressively cleanup build products, otherwise we run
|
|
| 895 | + # into out of space errors too frequently.
|
|
| 896 | + #
|
|
| 897 | + # When CI_DISPOSABLE_ENVIRONMENT is true (using docker executor on
|
|
| 898 | + # linux), the runner will do proper cleanup, so no need to do
|
|
| 899 | + # anything here.
|
|
| 900 | + #
|
|
| 901 | + # The exclude list are the artifacts that we do expect to be
|
|
| 902 | + # uploaded. Keep in sync with `jobArtifacts` in
|
|
| 903 | + # `.gitlab/generate-ci/gen_ci.hs`!
|
|
| 904 | + if [[ "${CI_DISPOSABLE_ENVIRONMENT:-}" != true ]]; then
|
|
| 905 | + git submodule foreach --recursive git clean -xdf
|
|
| 906 | + git clean -xdf \
|
|
| 907 | + --exclude=ci_timings.txt \
|
|
| 908 | + --exclude=ghc-*.tar.xz \
|
|
| 909 | + --exclude=junit.xml \
|
|
| 910 | + --exclude=unexpected-test-output.tar.gz
|
|
| 911 | + fi
|
|
| 892 | 912 | }
|
| 893 | 913 | |
| 894 | 914 | function run_hadrian() {
|
| ... | ... | @@ -889,6 +889,8 @@ job arch opsys buildConfig = NamedJob { name = jobName, jobInfo = Job {..} } |
| 889 | 889 | , if testsuiteUsePerf buildConfig then "RUNTEST_ARGS" =: "--config perf_path=perf" else mempty
|
| 890 | 890 | ]
|
| 891 | 891 | |
| 892 | + -- Keep in sync with the exclude list in `function clean()` in
|
|
| 893 | + -- `.gitlab/ci.sh`!
|
|
| 892 | 894 | jobArtifacts = Artifacts
|
| 893 | 895 | { junitReport = "junit.xml"
|
| 894 | 896 | , expireIn = "2 weeks"
|
| ... | ... | @@ -387,6 +387,6 @@ type declarations. |
| 387 | 387 | |
| 388 | 388 | ::
|
| 389 | 389 | |
| 390 | - infix 6 (:--:)
|
|
| 390 | + infix 6 :--:
|
|
| 391 | 391 | data T a where
|
| 392 | 392 | (:--:) :: Int -> Bool -> T Int |
| ... | ... | @@ -269,7 +269,7 @@ decodeLargeBitmap getterFun# stackSnapshot# index relativePayloadOffset = do |
| 269 | 269 | cWordArrayToList ptr size = mapM (peekElemOff ptr) [0 .. (size - 1)]
|
| 270 | 270 | |
| 271 | 271 | usedBitmapWords :: Int -> Int
|
| 272 | - usedBitmapWords 0 = error "Invalid large bitmap size 0."
|
|
| 272 | + usedBitmapWords 0 = 0
|
|
| 273 | 273 | usedBitmapWords size = (size `div` fromIntegral wORD_SIZE_IN_BITS) + 1
|
| 274 | 274 | |
| 275 | 275 | bitmapWordsPointerness :: Word -> [Word] -> [Pointerness]
|
| 1 | +-- Main.hs
|
|
| 2 | +module Main where
|
|
| 3 | +main = pure ()
|
|
| 4 | + |
| 1 | +:l T26640
|
|
| 2 | +:break 3
|
|
| 3 | +main
|
|
| 4 | +import GHC.Conc
|
|
| 5 | +import GHC.Stack.CloneStack
|
|
| 6 | +() <- mapM_ (\ix -> do !_ <- decode =<< cloneThreadStack ix; return ()) =<< listThreads |
| 1 | +Breakpoint 0 activated at T26640.hs:3:8-14
|
|
| 2 | +Stopped in Main.main, T26640.hs:3:8-14
|
|
| 3 | +_result :: IO () = _ |
| ... | ... | @@ -8,6 +8,7 @@ test('T25975', extra_ways(ghci_ways), compile_and_run, |
| 8 | 8 | |
| 9 | 9 | test('T26565', extra_files(["T26565.hs"]), ghci_script, ['T26565.script'])
|
| 10 | 10 | test('T23973', extra_files(["T23973.hs"]), ghci_script, ['T23973.script'])
|
| 11 | +test('T26640', extra_files(["T26640.hs"]), ghci_script, ['T26640.script'])
|
|
| 11 | 12 | |
| 12 | 13 | # Nullary data constructors
|
| 13 | 14 | test('T26216', extra_files(["T26216_aux.hs"]), ghci_script, ['T26216.script']) |