Marge Bot pushed to branch wip/marge_bot_batch_merge_job at Glasgow Haskell Compiler / GHC

Commits:

20 changed files:

Changes:

  • .gitlab-ci.yml
    ... ... @@ -367,7 +367,7 @@ lint-submods-branch:
    367 367
         - .gitlab/ci.sh setup
    
    368 368
       after_script:
    
    369 369
         - .gitlab/ci.sh save_cache
    
    370
    -    - cat ci-timings
    
    370
    +    - cat ci_timings.txt
    
    371 371
       variables:
    
    372 372
         GHC_FLAGS: -Werror
    
    373 373
       cache:
    
    ... ... @@ -419,7 +419,7 @@ hadrian-ghc-in-ghci:
    419 419
         - echo ":q" | HADRIAN_ARGS=-j$CORES hadrian/ghci -j$CORES | tail -n2 | grep "Ok,"
    
    420 420
       after_script:
    
    421 421
         - .gitlab/ci.sh save_cache
    
    422
    -    - cat ci-timings
    
    422
    +    - cat ci_timings.txt
    
    423 423
       cache:
    
    424 424
         key: hadrian-ghci-$CACHE_REV
    
    425 425
         paths:
    

  • .gitlab/ci.sh
    ... ... @@ -34,7 +34,11 @@ function time_it() {
    34 34
       local delta=$(expr $end - $start)
    
    35 35
     
    
    36 36
       echo "$name took $delta seconds"
    
    37
    -  printf "%15s | $delta" > ci-timings
    
    37
    +  if [[ ! -e ci_timings.txt ]]; then
    
    38
    +    echo "=== TIMINGS ===" > ci_timings.txt
    
    39
    +  fi
    
    40
    +
    
    41
    +  printf "%15s | $delta\n" $name >> ci_timings.txt
    
    38 42
       return $res
    
    39 43
     }
    
    40 44
     
    
    ... ... @@ -239,8 +243,6 @@ function cabal_update() {
    239 243
     
    
    240 244
     # Extract GHC toolchain
    
    241 245
     function setup() {
    
    242
    -  echo "=== TIMINGS ===" > ci-timings
    
    243
    -
    
    244 246
       if [ -d "$CABAL_CACHE" ]; then
    
    245 247
           info "Extracting cabal cache from $CABAL_CACHE to $CABAL_DIR..."
    
    246 248
           mkdir -p "$CABAL_DIR"
    
    ... ... @@ -279,7 +281,7 @@ function fetch_ghc() {
    279 281
               fail "neither GHC nor GHC_VERSION are not set"
    
    280 282
           fi
    
    281 283
     
    
    282
    -      start_section "fetch GHC"
    
    284
    +      start_section fetch-ghc "Fetch GHC"
    
    283 285
           url="https://downloads.haskell.org/~ghc/${GHC_VERSION}/ghc-${GHC_VERSION}-${boot_triple}.tar.xz"
    
    284 286
           info "Fetching GHC binary distribution from $url..."
    
    285 287
           curl "$url" > ghc.tar.xz || fail "failed to fetch GHC binary distribution"
    
    ... ... @@ -296,7 +298,7 @@ function fetch_ghc() {
    296 298
               ;;
    
    297 299
           esac
    
    298 300
           rm -Rf "ghc-${GHC_VERSION}" ghc.tar.xz
    
    299
    -      end_section "fetch GHC"
    
    301
    +      end_section fetch-ghc
    
    300 302
       fi
    
    301 303
     
    
    302 304
     }
    
    ... ... @@ -308,7 +310,7 @@ function fetch_cabal() {
    308 310
               fail "neither CABAL nor CABAL_INSTALL_VERSION are not set"
    
    309 311
           fi
    
    310 312
     
    
    311
    -      start_section "fetch cabal"
    
    313
    +      start_section fetch-cabal "Fetch Cabal"
    
    312 314
           case "$(uname)" in
    
    313 315
             # N.B. Windows uses zip whereas all others use .tar.xz
    
    314 316
             MSYS_*|MINGW*)
    
    ... ... @@ -341,7 +343,7 @@ function fetch_cabal() {
    341 343
               fi
    
    342 344
               ;;
    
    343 345
           esac
    
    344
    -      end_section "fetch cabal"
    
    346
    +      end_section fetch-cabal
    
    345 347
       fi
    
    346 348
     }
    
    347 349
     
    
    ... ... @@ -349,6 +351,7 @@ function fetch_cabal() {
    349 351
     # here. For Docker platforms this is done in the Docker image
    
    350 352
     # build.
    
    351 353
     function setup_toolchain() {
    
    354
    +  start_section setup-toolchain "Setup toolchain"
    
    352 355
       fetch_ghc
    
    353 356
       fetch_cabal
    
    354 357
       cabal_update
    
    ... ... @@ -371,10 +374,11 @@ function setup_toolchain() {
    371 374
     
    
    372 375
       info "Building alex..."
    
    373 376
       $cabal_install alex --constraint="alex>=$MIN_ALEX_VERSION"
    
    377
    +  end_section setup-toolchain
    
    374 378
     }
    
    375 379
     
    
    376 380
     function cleanup_submodules() {
    
    377
    -  start_section "clean submodules"
    
    381
    +  start_section clean-submodules "Clean submodules"
    
    378 382
       if [ -d .git ]; then
    
    379 383
         info "Cleaning submodules..."
    
    380 384
         # On Windows submodules can inexplicably get into funky states where git
    
    ... ... @@ -386,7 +390,7 @@ function cleanup_submodules() {
    386 390
       else
    
    387 391
         info "Not cleaning submodules, not in a git repo"
    
    388 392
       fi;
    
    389
    -  end_section "clean submodules"
    
    393
    +  end_section clean-submodules
    
    390 394
     }
    
    391 395
     
    
    392 396
     function configure() {
    
    ... ... @@ -486,6 +490,8 @@ function check_release_build() {
    486 490
     }
    
    487 491
     
    
    488 492
     function build_hadrian() {
    
    493
    +  start_section build-hadrian "Build via Hadrian"
    
    494
    +
    
    489 495
       if [ -z "${BIN_DIST_NAME:-}" ]; then
    
    490 496
         fail "BIN_DIST_NAME not set"
    
    491 497
       fi
    
    ... ... @@ -519,7 +525,7 @@ function build_hadrian() {
    519 525
               ;;
    
    520 526
         esac
    
    521 527
       fi
    
    522
    -
    
    528
    +  end_section build-hadrian
    
    523 529
     }
    
    524 530
     
    
    525 531
     # run's `make DESTDIR=$1 install` and then
    
    ... ... @@ -545,6 +551,7 @@ function make_install_destdir() {
    545 551
     
    
    546 552
     # install the binary distribution in directory $1 to $2.
    
    547 553
     function install_bindist() {
    
    554
    +  start_section install-bindist "Install bindist"
    
    548 555
       case "${CONFIGURE_WRAPPER:-}" in
    
    549 556
         emconfigure) source "$EMSDK/emsdk_env.sh" ;;
    
    550 557
         *) ;;
    
    ... ... @@ -584,9 +591,11 @@ function install_bindist() {
    584 591
           ;;
    
    585 592
       esac
    
    586 593
       popd
    
    594
    +  end_section install-bindist
    
    587 595
     }
    
    588 596
     
    
    589 597
     function test_hadrian() {
    
    598
    +  start_section test-hadrian "Test via Hadrian"
    
    590 599
       check_msys2_deps _build/stage1/bin/ghc --version
    
    591 600
       check_release_build
    
    592 601
     
    
    ... ... @@ -708,6 +717,7 @@ function test_hadrian() {
    708 717
         info "STAGE2_TEST=$?"
    
    709 718
     
    
    710 719
       fi
    
    720
    +  end_section test-hadrian
    
    711 721
     }
    
    712 722
     
    
    713 723
     function summarise_hi_files() {
    
    ... ... @@ -742,7 +752,7 @@ function cabal_abi_test() {
    742 752
       pushd $DIR
    
    743 753
       echo $PWD
    
    744 754
     
    
    745
    -  start_section "Cabal test: $OUT"
    
    755
    +  start_section cabal-abi-test "Cabal ABI test: $OUT"
    
    746 756
       mkdir -p "$OUT"
    
    747 757
       "$HC" \
    
    748 758
         -hidir tmp -odir tmp -fforce-recomp -haddock \
    
    ... ... @@ -752,7 +762,7 @@ function cabal_abi_test() {
    752 762
       summarise_hi_files
    
    753 763
       summarise_o_files
    
    754 764
       popd
    
    755
    -  end_section "Cabal test: $OUT"
    
    765
    +  end_section cabal-abi-test
    
    756 766
     }
    
    757 767
     
    
    758 768
     function cabal_test() {
    
    ... ... @@ -760,7 +770,7 @@ function cabal_test() {
    760 770
         fail "OUT not set"
    
    761 771
       fi
    
    762 772
     
    
    763
    -  start_section "Cabal test: $OUT"
    
    773
    +  start_section cabal-test "Cabal test: $OUT"
    
    764 774
       mkdir -p "$OUT"
    
    765 775
       run "$HC" \
    
    766 776
         -hidir tmp -odir tmp -fforce-recomp \
    
    ... ... @@ -769,7 +779,7 @@ function cabal_test() {
    769 779
         -ilibraries/Cabal/Cabal/src -XNoPolyKinds Distribution.Simple \
    
    770 780
         "$@" 2>&1 | tee $OUT/log
    
    771 781
       rm -Rf tmp
    
    772
    -  end_section "Cabal test: $OUT"
    
    782
    +  end_section cabal-test
    
    773 783
     }
    
    774 784
     
    
    775 785
     function run_perf_test() {
    

  • .gitlab/common.sh
    ... ... @@ -20,15 +20,18 @@ WHITE="1;37"
    20 20
     LT_GRAY="0;37"
    
    21 21
     
    
    22 22
     # GitLab Pipelines log section delimiters
    
    23
    -# https://gitlab.com/gitlab-org/gitlab-foss/issues/14664
    
    24
    -start_section() {
    
    25
    -  name="$1"
    
    26
    -  echo -e "section_start:$(date +%s):$name\015\033[0K"
    
    23
    +# https://docs.gitlab.com/ci/jobs/job_logs/#custom-collapsible-sections
    
    24
    +function start_section () {
    
    25
    +  local section_title="${1}"
    
    26
    +  local section_description="${2:-$section_title}"
    
    27
    +
    
    28
    +  echo -e "section_start:$(date +%s):${section_title}[collapsed=true]\r\e[0K${section_description}"
    
    27 29
     }
    
    28 30
     
    
    29
    -end_section() {
    
    30
    -  name="$1"
    
    31
    -  echo -e "section_end:$(date +%s):$name\015\033[0K"
    
    31
    +function end_section () {
    
    32
    +  local section_title="${1}"
    
    33
    +
    
    34
    +  echo -e "section_end:$(date +%s):${section_title}\r\e[0K"
    
    32 35
     }
    
    33 36
     
    
    34 37
     echo_color() {
    

  • .gitlab/generate-ci/gen_ci.hs
    ... ... @@ -870,7 +870,7 @@ job arch opsys buildConfig = NamedJob { name = jobName, jobInfo = Job {..} }
    870 870
           [ ".gitlab/ci.sh save_cache"
    
    871 871
           , ".gitlab/ci.sh save_test_output"
    
    872 872
           , ".gitlab/ci.sh clean"
    
    873
    -      , "cat ci_timings"
    
    873
    +      , "cat ci_timings.txt"
    
    874 874
           ]
    
    875 875
     
    
    876 876
         jobFlavour = mkJobFlavour buildConfig
    

  • .gitlab/jobs.yaml
    ... ... @@ -5,7 +5,7 @@
    5 5
           ".gitlab/ci.sh save_cache",
    
    6 6
           ".gitlab/ci.sh save_test_output",
    
    7 7
           ".gitlab/ci.sh clean",
    
    8
    -      "cat ci_timings"
    
    8
    +      "cat ci_timings.txt"
    
    9 9
         ],
    
    10 10
         "allow_failure": false,
    
    11 11
         "artifacts": {
    
    ... ... @@ -71,7 +71,7 @@
    71 71
           ".gitlab/ci.sh save_cache",
    
    72 72
           ".gitlab/ci.sh save_test_output",
    
    73 73
           ".gitlab/ci.sh clean",
    
    74
    -      "cat ci_timings"
    
    74
    +      "cat ci_timings.txt"
    
    75 75
         ],
    
    76 76
         "allow_failure": false,
    
    77 77
         "artifacts": {
    
    ... ... @@ -134,7 +134,7 @@
    134 134
           ".gitlab/ci.sh save_cache",
    
    135 135
           ".gitlab/ci.sh save_test_output",
    
    136 136
           ".gitlab/ci.sh clean",
    
    137
    -      "cat ci_timings"
    
    137
    +      "cat ci_timings.txt"
    
    138 138
         ],
    
    139 139
         "allow_failure": false,
    
    140 140
         "artifacts": {
    
    ... ... @@ -196,7 +196,7 @@
    196 196
           ".gitlab/ci.sh save_cache",
    
    197 197
           ".gitlab/ci.sh save_test_output",
    
    198 198
           ".gitlab/ci.sh clean",
    
    199
    -      "cat ci_timings"
    
    199
    +      "cat ci_timings.txt"
    
    200 200
         ],
    
    201 201
         "allow_failure": false,
    
    202 202
         "artifacts": {
    
    ... ... @@ -258,7 +258,7 @@
    258 258
           ".gitlab/ci.sh save_cache",
    
    259 259
           ".gitlab/ci.sh save_test_output",
    
    260 260
           ".gitlab/ci.sh clean",
    
    261
    -      "cat ci_timings"
    
    261
    +      "cat ci_timings.txt"
    
    262 262
         ],
    
    263 263
         "allow_failure": false,
    
    264 264
         "artifacts": {
    
    ... ... @@ -482,7 +482,7 @@
    482 482
           ".gitlab/ci.sh save_cache",
    
    483 483
           ".gitlab/ci.sh save_test_output",
    
    484 484
           ".gitlab/ci.sh clean",
    
    485
    -      "cat ci_timings"
    
    485
    +      "cat ci_timings.txt"
    
    486 486
         ],
    
    487 487
         "allow_failure": true,
    
    488 488
         "artifacts": {
    
    ... ... @@ -545,7 +545,7 @@
    545 545
           ".gitlab/ci.sh save_cache",
    
    546 546
           ".gitlab/ci.sh save_test_output",
    
    547 547
           ".gitlab/ci.sh clean",
    
    548
    -      "cat ci_timings"
    
    548
    +      "cat ci_timings.txt"
    
    549 549
         ],
    
    550 550
         "allow_failure": false,
    
    551 551
         "artifacts": {
    
    ... ... @@ -607,7 +607,7 @@
    607 607
           ".gitlab/ci.sh save_cache",
    
    608 608
           ".gitlab/ci.sh save_test_output",
    
    609 609
           ".gitlab/ci.sh clean",
    
    610
    -      "cat ci_timings"
    
    610
    +      "cat ci_timings.txt"
    
    611 611
         ],
    
    612 612
         "allow_failure": false,
    
    613 613
         "artifacts": {
    
    ... ... @@ -669,7 +669,7 @@
    669 669
           ".gitlab/ci.sh save_cache",
    
    670 670
           ".gitlab/ci.sh save_test_output",
    
    671 671
           ".gitlab/ci.sh clean",
    
    672
    -      "cat ci_timings"
    
    672
    +      "cat ci_timings.txt"
    
    673 673
         ],
    
    674 674
         "allow_failure": false,
    
    675 675
         "artifacts": {
    
    ... ... @@ -736,7 +736,7 @@
    736 736
           ".gitlab/ci.sh save_cache",
    
    737 737
           ".gitlab/ci.sh save_test_output",
    
    738 738
           ".gitlab/ci.sh clean",
    
    739
    -      "cat ci_timings"
    
    739
    +      "cat ci_timings.txt"
    
    740 740
         ],
    
    741 741
         "allow_failure": false,
    
    742 742
         "artifacts": {
    
    ... ... @@ -800,7 +800,7 @@
    800 800
           ".gitlab/ci.sh save_cache",
    
    801 801
           ".gitlab/ci.sh save_test_output",
    
    802 802
           ".gitlab/ci.sh clean",
    
    803
    -      "cat ci_timings"
    
    803
    +      "cat ci_timings.txt"
    
    804 804
         ],
    
    805 805
         "allow_failure": false,
    
    806 806
         "artifacts": {
    
    ... ... @@ -863,7 +863,7 @@
    863 863
           ".gitlab/ci.sh save_cache",
    
    864 864
           ".gitlab/ci.sh save_test_output",
    
    865 865
           ".gitlab/ci.sh clean",
    
    866
    -      "cat ci_timings"
    
    866
    +      "cat ci_timings.txt"
    
    867 867
         ],
    
    868 868
         "allow_failure": false,
    
    869 869
         "artifacts": {
    
    ... ... @@ -926,7 +926,7 @@
    926 926
           ".gitlab/ci.sh save_cache",
    
    927 927
           ".gitlab/ci.sh save_test_output",
    
    928 928
           ".gitlab/ci.sh clean",
    
    929
    -      "cat ci_timings"
    
    929
    +      "cat ci_timings.txt"
    
    930 930
         ],
    
    931 931
         "allow_failure": false,
    
    932 932
         "artifacts": {
    
    ... ... @@ -1153,7 +1153,7 @@
    1153 1153
           ".gitlab/ci.sh save_cache",
    
    1154 1154
           ".gitlab/ci.sh save_test_output",
    
    1155 1155
           ".gitlab/ci.sh clean",
    
    1156
    -      "cat ci_timings"
    
    1156
    +      "cat ci_timings.txt"
    
    1157 1157
         ],
    
    1158 1158
         "allow_failure": true,
    
    1159 1159
         "artifacts": {
    
    ... ... @@ -1217,7 +1217,7 @@
    1217 1217
           ".gitlab/ci.sh save_cache",
    
    1218 1218
           ".gitlab/ci.sh save_test_output",
    
    1219 1219
           ".gitlab/ci.sh clean",
    
    1220
    -      "cat ci_timings"
    
    1220
    +      "cat ci_timings.txt"
    
    1221 1221
         ],
    
    1222 1222
         "allow_failure": false,
    
    1223 1223
         "artifacts": {
    
    ... ... @@ -1280,7 +1280,7 @@
    1280 1280
           ".gitlab/ci.sh save_cache",
    
    1281 1281
           ".gitlab/ci.sh save_test_output",
    
    1282 1282
           ".gitlab/ci.sh clean",
    
    1283
    -      "cat ci_timings"
    
    1283
    +      "cat ci_timings.txt"
    
    1284 1284
         ],
    
    1285 1285
         "allow_failure": false,
    
    1286 1286
         "artifacts": {
    
    ... ... @@ -1343,7 +1343,7 @@
    1343 1343
           ".gitlab/ci.sh save_cache",
    
    1344 1344
           ".gitlab/ci.sh save_test_output",
    
    1345 1345
           ".gitlab/ci.sh clean",
    
    1346
    -      "cat ci_timings"
    
    1346
    +      "cat ci_timings.txt"
    
    1347 1347
         ],
    
    1348 1348
         "allow_failure": false,
    
    1349 1349
         "artifacts": {
    
    ... ... @@ -1413,7 +1413,7 @@
    1413 1413
           ".gitlab/ci.sh save_cache",
    
    1414 1414
           ".gitlab/ci.sh save_test_output",
    
    1415 1415
           ".gitlab/ci.sh clean",
    
    1416
    -      "cat ci_timings"
    
    1416
    +      "cat ci_timings.txt"
    
    1417 1417
         ],
    
    1418 1418
         "allow_failure": false,
    
    1419 1419
         "artifacts": {
    
    ... ... @@ -1479,7 +1479,7 @@
    1479 1479
           ".gitlab/ci.sh save_cache",
    
    1480 1480
           ".gitlab/ci.sh save_test_output",
    
    1481 1481
           ".gitlab/ci.sh clean",
    
    1482
    -      "cat ci_timings"
    
    1482
    +      "cat ci_timings.txt"
    
    1483 1483
         ],
    
    1484 1484
         "allow_failure": true,
    
    1485 1485
         "artifacts": {
    
    ... ... @@ -1543,7 +1543,7 @@
    1543 1543
           ".gitlab/ci.sh save_cache",
    
    1544 1544
           ".gitlab/ci.sh save_test_output",
    
    1545 1545
           ".gitlab/ci.sh clean",
    
    1546
    -      "cat ci_timings"
    
    1546
    +      "cat ci_timings.txt"
    
    1547 1547
         ],
    
    1548 1548
         "allow_failure": false,
    
    1549 1549
         "artifacts": {
    
    ... ... @@ -1607,7 +1607,7 @@
    1607 1607
           ".gitlab/ci.sh save_cache",
    
    1608 1608
           ".gitlab/ci.sh save_test_output",
    
    1609 1609
           ".gitlab/ci.sh clean",
    
    1610
    -      "cat ci_timings"
    
    1610
    +      "cat ci_timings.txt"
    
    1611 1611
         ],
    
    1612 1612
         "allow_failure": false,
    
    1613 1613
         "artifacts": {
    
    ... ... @@ -1671,7 +1671,7 @@
    1671 1671
           ".gitlab/ci.sh save_cache",
    
    1672 1672
           ".gitlab/ci.sh save_test_output",
    
    1673 1673
           ".gitlab/ci.sh clean",
    
    1674
    -      "cat ci_timings"
    
    1674
    +      "cat ci_timings.txt"
    
    1675 1675
         ],
    
    1676 1676
         "allow_failure": false,
    
    1677 1677
         "artifacts": {
    
    ... ... @@ -1735,7 +1735,7 @@
    1735 1735
           ".gitlab/ci.sh save_cache",
    
    1736 1736
           ".gitlab/ci.sh save_test_output",
    
    1737 1737
           ".gitlab/ci.sh clean",
    
    1738
    -      "cat ci_timings"
    
    1738
    +      "cat ci_timings.txt"
    
    1739 1739
         ],
    
    1740 1740
         "allow_failure": false,
    
    1741 1741
         "artifacts": {
    
    ... ... @@ -1800,7 +1800,7 @@
    1800 1800
           ".gitlab/ci.sh save_cache",
    
    1801 1801
           ".gitlab/ci.sh save_test_output",
    
    1802 1802
           ".gitlab/ci.sh clean",
    
    1803
    -      "cat ci_timings"
    
    1803
    +      "cat ci_timings.txt"
    
    1804 1804
         ],
    
    1805 1805
         "allow_failure": false,
    
    1806 1806
         "artifacts": {
    
    ... ... @@ -1865,7 +1865,7 @@
    1865 1865
           ".gitlab/ci.sh save_cache",
    
    1866 1866
           ".gitlab/ci.sh save_test_output",
    
    1867 1867
           ".gitlab/ci.sh clean",
    
    1868
    -      "cat ci_timings"
    
    1868
    +      "cat ci_timings.txt"
    
    1869 1869
         ],
    
    1870 1870
         "allow_failure": false,
    
    1871 1871
         "artifacts": {
    
    ... ... @@ -1930,7 +1930,7 @@
    1930 1930
           ".gitlab/ci.sh save_cache",
    
    1931 1931
           ".gitlab/ci.sh save_test_output",
    
    1932 1932
           ".gitlab/ci.sh clean",
    
    1933
    -      "cat ci_timings"
    
    1933
    +      "cat ci_timings.txt"
    
    1934 1934
         ],
    
    1935 1935
         "allow_failure": false,
    
    1936 1936
         "artifacts": {
    
    ... ... @@ -1993,7 +1993,7 @@
    1993 1993
           ".gitlab/ci.sh save_cache",
    
    1994 1994
           ".gitlab/ci.sh save_test_output",
    
    1995 1995
           ".gitlab/ci.sh clean",
    
    1996
    -      "cat ci_timings"
    
    1996
    +      "cat ci_timings.txt"
    
    1997 1997
         ],
    
    1998 1998
         "allow_failure": false,
    
    1999 1999
         "artifacts": {
    
    ... ... @@ -2056,7 +2056,7 @@
    2056 2056
           ".gitlab/ci.sh save_cache",
    
    2057 2057
           ".gitlab/ci.sh save_test_output",
    
    2058 2058
           ".gitlab/ci.sh clean",
    
    2059
    -      "cat ci_timings"
    
    2059
    +      "cat ci_timings.txt"
    
    2060 2060
         ],
    
    2061 2061
         "allow_failure": false,
    
    2062 2062
         "artifacts": {
    
    ... ... @@ -2121,7 +2121,7 @@
    2121 2121
           ".gitlab/ci.sh save_cache",
    
    2122 2122
           ".gitlab/ci.sh save_test_output",
    
    2123 2123
           ".gitlab/ci.sh clean",
    
    2124
    -      "cat ci_timings"
    
    2124
    +      "cat ci_timings.txt"
    
    2125 2125
         ],
    
    2126 2126
         "allow_failure": false,
    
    2127 2127
         "artifacts": {
    
    ... ... @@ -2187,7 +2187,7 @@
    2187 2187
           ".gitlab/ci.sh save_cache",
    
    2188 2188
           ".gitlab/ci.sh save_test_output",
    
    2189 2189
           ".gitlab/ci.sh clean",
    
    2190
    -      "cat ci_timings"
    
    2190
    +      "cat ci_timings.txt"
    
    2191 2191
         ],
    
    2192 2192
         "allow_failure": false,
    
    2193 2193
         "artifacts": {
    
    ... ... @@ -2250,7 +2250,7 @@
    2250 2250
           ".gitlab/ci.sh save_cache",
    
    2251 2251
           ".gitlab/ci.sh save_test_output",
    
    2252 2252
           ".gitlab/ci.sh clean",
    
    2253
    -      "cat ci_timings"
    
    2253
    +      "cat ci_timings.txt"
    
    2254 2254
         ],
    
    2255 2255
         "allow_failure": false,
    
    2256 2256
         "artifacts": {
    
    ... ... @@ -2313,7 +2313,7 @@
    2313 2313
           ".gitlab/ci.sh save_cache",
    
    2314 2314
           ".gitlab/ci.sh save_test_output",
    
    2315 2315
           ".gitlab/ci.sh clean",
    
    2316
    -      "cat ci_timings"
    
    2316
    +      "cat ci_timings.txt"
    
    2317 2317
         ],
    
    2318 2318
         "allow_failure": true,
    
    2319 2319
         "artifacts": {
    
    ... ... @@ -2376,7 +2376,7 @@
    2376 2376
           ".gitlab/ci.sh save_cache",
    
    2377 2377
           ".gitlab/ci.sh save_test_output",
    
    2378 2378
           ".gitlab/ci.sh clean",
    
    2379
    -      "cat ci_timings"
    
    2379
    +      "cat ci_timings.txt"
    
    2380 2380
         ],
    
    2381 2381
         "allow_failure": false,
    
    2382 2382
         "artifacts": {
    
    ... ... @@ -2440,7 +2440,7 @@
    2440 2440
           ".gitlab/ci.sh save_cache",
    
    2441 2441
           ".gitlab/ci.sh save_test_output",
    
    2442 2442
           ".gitlab/ci.sh clean",
    
    2443
    -      "cat ci_timings"
    
    2443
    +      "cat ci_timings.txt"
    
    2444 2444
         ],
    
    2445 2445
         "allow_failure": false,
    
    2446 2446
         "artifacts": {
    
    ... ... @@ -2503,7 +2503,7 @@
    2503 2503
           ".gitlab/ci.sh save_cache",
    
    2504 2504
           ".gitlab/ci.sh save_test_output",
    
    2505 2505
           ".gitlab/ci.sh clean",
    
    2506
    -      "cat ci_timings"
    
    2506
    +      "cat ci_timings.txt"
    
    2507 2507
         ],
    
    2508 2508
         "allow_failure": false,
    
    2509 2509
         "artifacts": {
    
    ... ... @@ -2568,7 +2568,7 @@
    2568 2568
           ".gitlab/ci.sh save_cache",
    
    2569 2569
           ".gitlab/ci.sh save_test_output",
    
    2570 2570
           ".gitlab/ci.sh clean",
    
    2571
    -      "cat ci_timings"
    
    2571
    +      "cat ci_timings.txt"
    
    2572 2572
         ],
    
    2573 2573
         "allow_failure": false,
    
    2574 2574
         "artifacts": {
    
    ... ... @@ -2631,7 +2631,7 @@
    2631 2631
           ".gitlab/ci.sh save_cache",
    
    2632 2632
           ".gitlab/ci.sh save_test_output",
    
    2633 2633
           ".gitlab/ci.sh clean",
    
    2634
    -      "cat ci_timings"
    
    2634
    +      "cat ci_timings.txt"
    
    2635 2635
         ],
    
    2636 2636
         "allow_failure": false,
    
    2637 2637
         "artifacts": {
    
    ... ... @@ -2694,7 +2694,7 @@
    2694 2694
           ".gitlab/ci.sh save_cache",
    
    2695 2695
           ".gitlab/ci.sh save_test_output",
    
    2696 2696
           ".gitlab/ci.sh clean",
    
    2697
    -      "cat ci_timings"
    
    2697
    +      "cat ci_timings.txt"
    
    2698 2698
         ],
    
    2699 2699
         "allow_failure": false,
    
    2700 2700
         "artifacts": {
    
    ... ... @@ -2757,7 +2757,7 @@
    2757 2757
           ".gitlab/ci.sh save_cache",
    
    2758 2758
           ".gitlab/ci.sh save_test_output",
    
    2759 2759
           ".gitlab/ci.sh clean",
    
    2760
    -      "cat ci_timings"
    
    2760
    +      "cat ci_timings.txt"
    
    2761 2761
         ],
    
    2762 2762
         "allow_failure": false,
    
    2763 2763
         "artifacts": {
    
    ... ... @@ -2820,7 +2820,7 @@
    2820 2820
           ".gitlab/ci.sh save_cache",
    
    2821 2821
           ".gitlab/ci.sh save_test_output",
    
    2822 2822
           ".gitlab/ci.sh clean",
    
    2823
    -      "cat ci_timings"
    
    2823
    +      "cat ci_timings.txt"
    
    2824 2824
         ],
    
    2825 2825
         "allow_failure": true,
    
    2826 2826
         "artifacts": {
    
    ... ... @@ -2885,7 +2885,7 @@
    2885 2885
           ".gitlab/ci.sh save_cache",
    
    2886 2886
           ".gitlab/ci.sh save_test_output",
    
    2887 2887
           ".gitlab/ci.sh clean",
    
    2888
    -      "cat ci_timings"
    
    2888
    +      "cat ci_timings.txt"
    
    2889 2889
         ],
    
    2890 2890
         "allow_failure": false,
    
    2891 2891
         "artifacts": {
    
    ... ... @@ -2948,7 +2948,7 @@
    2948 2948
           ".gitlab/ci.sh save_cache",
    
    2949 2949
           ".gitlab/ci.sh save_test_output",
    
    2950 2950
           ".gitlab/ci.sh clean",
    
    2951
    -      "cat ci_timings"
    
    2951
    +      "cat ci_timings.txt"
    
    2952 2952
         ],
    
    2953 2953
         "allow_failure": false,
    
    2954 2954
         "artifacts": {
    
    ... ... @@ -3011,7 +3011,7 @@
    3011 3011
           ".gitlab/ci.sh save_cache",
    
    3012 3012
           ".gitlab/ci.sh save_test_output",
    
    3013 3013
           ".gitlab/ci.sh clean",
    
    3014
    -      "cat ci_timings"
    
    3014
    +      "cat ci_timings.txt"
    
    3015 3015
         ],
    
    3016 3016
         "allow_failure": false,
    
    3017 3017
         "artifacts": {
    
    ... ... @@ -3076,7 +3076,7 @@
    3076 3076
           ".gitlab/ci.sh save_cache",
    
    3077 3077
           ".gitlab/ci.sh save_test_output",
    
    3078 3078
           ".gitlab/ci.sh clean",
    
    3079
    -      "cat ci_timings"
    
    3079
    +      "cat ci_timings.txt"
    
    3080 3080
         ],
    
    3081 3081
         "allow_failure": false,
    
    3082 3082
         "artifacts": {
    
    ... ... @@ -3142,7 +3142,7 @@
    3142 3142
           ".gitlab/ci.sh save_cache",
    
    3143 3143
           ".gitlab/ci.sh save_test_output",
    
    3144 3144
           ".gitlab/ci.sh clean",
    
    3145
    -      "cat ci_timings"
    
    3145
    +      "cat ci_timings.txt"
    
    3146 3146
         ],
    
    3147 3147
         "allow_failure": false,
    
    3148 3148
         "artifacts": {
    
    ... ... @@ -3207,7 +3207,7 @@
    3207 3207
           ".gitlab/ci.sh save_cache",
    
    3208 3208
           ".gitlab/ci.sh save_test_output",
    
    3209 3209
           ".gitlab/ci.sh clean",
    
    3210
    -      "cat ci_timings"
    
    3210
    +      "cat ci_timings.txt"
    
    3211 3211
         ],
    
    3212 3212
         "allow_failure": false,
    
    3213 3213
         "artifacts": {
    
    ... ... @@ -3270,7 +3270,7 @@
    3270 3270
           ".gitlab/ci.sh save_cache",
    
    3271 3271
           ".gitlab/ci.sh save_test_output",
    
    3272 3272
           ".gitlab/ci.sh clean",
    
    3273
    -      "cat ci_timings"
    
    3273
    +      "cat ci_timings.txt"
    
    3274 3274
         ],
    
    3275 3275
         "allow_failure": false,
    
    3276 3276
         "artifacts": {
    
    ... ... @@ -3333,7 +3333,7 @@
    3333 3333
           ".gitlab/ci.sh save_cache",
    
    3334 3334
           ".gitlab/ci.sh save_test_output",
    
    3335 3335
           ".gitlab/ci.sh clean",
    
    3336
    -      "cat ci_timings"
    
    3336
    +      "cat ci_timings.txt"
    
    3337 3337
         ],
    
    3338 3338
         "allow_failure": false,
    
    3339 3339
         "artifacts": {
    
    ... ... @@ -3396,7 +3396,7 @@
    3396 3396
           ".gitlab/ci.sh save_cache",
    
    3397 3397
           ".gitlab/ci.sh save_test_output",
    
    3398 3398
           ".gitlab/ci.sh clean",
    
    3399
    -      "cat ci_timings"
    
    3399
    +      "cat ci_timings.txt"
    
    3400 3400
         ],
    
    3401 3401
         "allow_failure": false,
    
    3402 3402
         "artifacts": {
    
    ... ... @@ -3459,7 +3459,7 @@
    3459 3459
           ".gitlab/ci.sh save_cache",
    
    3460 3460
           ".gitlab/ci.sh save_test_output",
    
    3461 3461
           ".gitlab/ci.sh clean",
    
    3462
    -      "cat ci_timings"
    
    3462
    +      "cat ci_timings.txt"
    
    3463 3463
         ],
    
    3464 3464
         "allow_failure": false,
    
    3465 3465
         "artifacts": {
    
    ... ... @@ -3587,7 +3587,7 @@
    3587 3587
           ".gitlab/ci.sh save_cache",
    
    3588 3588
           ".gitlab/ci.sh save_test_output",
    
    3589 3589
           ".gitlab/ci.sh clean",
    
    3590
    -      "cat ci_timings"
    
    3590
    +      "cat ci_timings.txt"
    
    3591 3591
         ],
    
    3592 3592
         "allow_failure": false,
    
    3593 3593
         "artifacts": {
    
    ... ... @@ -3776,7 +3776,7 @@
    3776 3776
           ".gitlab/ci.sh save_cache",
    
    3777 3777
           ".gitlab/ci.sh save_test_output",
    
    3778 3778
           ".gitlab/ci.sh clean",
    
    3779
    -      "cat ci_timings"
    
    3779
    +      "cat ci_timings.txt"
    
    3780 3780
         ],
    
    3781 3781
         "allow_failure": false,
    
    3782 3782
         "artifacts": {
    
    ... ... @@ -3844,7 +3844,7 @@
    3844 3844
           ".gitlab/ci.sh save_cache",
    
    3845 3845
           ".gitlab/ci.sh save_test_output",
    
    3846 3846
           ".gitlab/ci.sh clean",
    
    3847
    -      "cat ci_timings"
    
    3847
    +      "cat ci_timings.txt"
    
    3848 3848
         ],
    
    3849 3849
         "allow_failure": false,
    
    3850 3850
         "artifacts": {
    
    ... ... @@ -3909,7 +3909,7 @@
    3909 3909
           ".gitlab/ci.sh save_cache",
    
    3910 3910
           ".gitlab/ci.sh save_test_output",
    
    3911 3911
           ".gitlab/ci.sh clean",
    
    3912
    -      "cat ci_timings"
    
    3912
    +      "cat ci_timings.txt"
    
    3913 3913
         ],
    
    3914 3914
         "allow_failure": false,
    
    3915 3915
         "artifacts": {
    
    ... ... @@ -3973,7 +3973,7 @@
    3973 3973
           ".gitlab/ci.sh save_cache",
    
    3974 3974
           ".gitlab/ci.sh save_test_output",
    
    3975 3975
           ".gitlab/ci.sh clean",
    
    3976
    -      "cat ci_timings"
    
    3976
    +      "cat ci_timings.txt"
    
    3977 3977
         ],
    
    3978 3978
         "allow_failure": false,
    
    3979 3979
         "artifacts": {
    
    ... ... @@ -4037,7 +4037,7 @@
    4037 4037
           ".gitlab/ci.sh save_cache",
    
    4038 4038
           ".gitlab/ci.sh save_test_output",
    
    4039 4039
           ".gitlab/ci.sh clean",
    
    4040
    -      "cat ci_timings"
    
    4040
    +      "cat ci_timings.txt"
    
    4041 4041
         ],
    
    4042 4042
         "allow_failure": true,
    
    4043 4043
         "artifacts": {
    
    ... ... @@ -4102,7 +4102,7 @@
    4102 4102
           ".gitlab/ci.sh save_cache",
    
    4103 4103
           ".gitlab/ci.sh save_test_output",
    
    4104 4104
           ".gitlab/ci.sh clean",
    
    4105
    -      "cat ci_timings"
    
    4105
    +      "cat ci_timings.txt"
    
    4106 4106
         ],
    
    4107 4107
         "allow_failure": false,
    
    4108 4108
         "artifacts": {
    
    ... ... @@ -4166,7 +4166,7 @@
    4166 4166
           ".gitlab/ci.sh save_cache",
    
    4167 4167
           ".gitlab/ci.sh save_test_output",
    
    4168 4168
           ".gitlab/ci.sh clean",
    
    4169
    -      "cat ci_timings"
    
    4169
    +      "cat ci_timings.txt"
    
    4170 4170
         ],
    
    4171 4171
         "allow_failure": false,
    
    4172 4172
         "artifacts": {
    
    ... ... @@ -4230,7 +4230,7 @@
    4230 4230
           ".gitlab/ci.sh save_cache",
    
    4231 4231
           ".gitlab/ci.sh save_test_output",
    
    4232 4232
           ".gitlab/ci.sh clean",
    
    4233
    -      "cat ci_timings"
    
    4233
    +      "cat ci_timings.txt"
    
    4234 4234
         ],
    
    4235 4235
         "allow_failure": false,
    
    4236 4236
         "artifacts": {
    
    ... ... @@ -4301,7 +4301,7 @@
    4301 4301
           ".gitlab/ci.sh save_cache",
    
    4302 4302
           ".gitlab/ci.sh save_test_output",
    
    4303 4303
           ".gitlab/ci.sh clean",
    
    4304
    -      "cat ci_timings"
    
    4304
    +      "cat ci_timings.txt"
    
    4305 4305
         ],
    
    4306 4306
         "allow_failure": false,
    
    4307 4307
         "artifacts": {
    
    ... ... @@ -4368,7 +4368,7 @@
    4368 4368
           ".gitlab/ci.sh save_cache",
    
    4369 4369
           ".gitlab/ci.sh save_test_output",
    
    4370 4370
           ".gitlab/ci.sh clean",
    
    4371
    -      "cat ci_timings"
    
    4371
    +      "cat ci_timings.txt"
    
    4372 4372
         ],
    
    4373 4373
         "allow_failure": true,
    
    4374 4374
         "artifacts": {
    
    ... ... @@ -4433,7 +4433,7 @@
    4433 4433
           ".gitlab/ci.sh save_cache",
    
    4434 4434
           ".gitlab/ci.sh save_test_output",
    
    4435 4435
           ".gitlab/ci.sh clean",
    
    4436
    -      "cat ci_timings"
    
    4436
    +      "cat ci_timings.txt"
    
    4437 4437
         ],
    
    4438 4438
         "allow_failure": false,
    
    4439 4439
         "artifacts": {
    
    ... ... @@ -4498,7 +4498,7 @@
    4498 4498
           ".gitlab/ci.sh save_cache",
    
    4499 4499
           ".gitlab/ci.sh save_test_output",
    
    4500 4500
           ".gitlab/ci.sh clean",
    
    4501
    -      "cat ci_timings"
    
    4501
    +      "cat ci_timings.txt"
    
    4502 4502
         ],
    
    4503 4503
         "allow_failure": false,
    
    4504 4504
         "artifacts": {
    
    ... ... @@ -4563,7 +4563,7 @@
    4563 4563
           ".gitlab/ci.sh save_cache",
    
    4564 4564
           ".gitlab/ci.sh save_test_output",
    
    4565 4565
           ".gitlab/ci.sh clean",
    
    4566
    -      "cat ci_timings"
    
    4566
    +      "cat ci_timings.txt"
    
    4567 4567
         ],
    
    4568 4568
         "allow_failure": false,
    
    4569 4569
         "artifacts": {
    
    ... ... @@ -4628,7 +4628,7 @@
    4628 4628
           ".gitlab/ci.sh save_cache",
    
    4629 4629
           ".gitlab/ci.sh save_test_output",
    
    4630 4630
           ".gitlab/ci.sh clean",
    
    4631
    -      "cat ci_timings"
    
    4631
    +      "cat ci_timings.txt"
    
    4632 4632
         ],
    
    4633 4633
         "allow_failure": false,
    
    4634 4634
         "artifacts": {
    
    ... ... @@ -4692,7 +4692,7 @@
    4692 4692
           ".gitlab/ci.sh save_cache",
    
    4693 4693
           ".gitlab/ci.sh save_test_output",
    
    4694 4694
           ".gitlab/ci.sh clean",
    
    4695
    -      "cat ci_timings"
    
    4695
    +      "cat ci_timings.txt"
    
    4696 4696
         ],
    
    4697 4697
         "allow_failure": false,
    
    4698 4698
         "artifacts": {
    
    ... ... @@ -4756,7 +4756,7 @@
    4756 4756
           ".gitlab/ci.sh save_cache",
    
    4757 4757
           ".gitlab/ci.sh save_test_output",
    
    4758 4758
           ".gitlab/ci.sh clean",
    
    4759
    -      "cat ci_timings"
    
    4759
    +      "cat ci_timings.txt"
    
    4760 4760
         ],
    
    4761 4761
         "allow_failure": false,
    
    4762 4762
         "artifacts": {
    
    ... ... @@ -4820,7 +4820,7 @@
    4820 4820
           ".gitlab/ci.sh save_cache",
    
    4821 4821
           ".gitlab/ci.sh save_test_output",
    
    4822 4822
           ".gitlab/ci.sh clean",
    
    4823
    -      "cat ci_timings"
    
    4823
    +      "cat ci_timings.txt"
    
    4824 4824
         ],
    
    4825 4825
         "allow_failure": false,
    
    4826 4826
         "artifacts": {
    
    ... ... @@ -4884,7 +4884,7 @@
    4884 4884
           ".gitlab/ci.sh save_cache",
    
    4885 4885
           ".gitlab/ci.sh save_test_output",
    
    4886 4886
           ".gitlab/ci.sh clean",
    
    4887
    -      "cat ci_timings"
    
    4887
    +      "cat ci_timings.txt"
    
    4888 4888
         ],
    
    4889 4889
         "allow_failure": false,
    
    4890 4890
         "artifacts": {
    
    ... ... @@ -4948,7 +4948,7 @@
    4948 4948
           ".gitlab/ci.sh save_cache",
    
    4949 4949
           ".gitlab/ci.sh save_test_output",
    
    4950 4950
           ".gitlab/ci.sh clean",
    
    4951
    -      "cat ci_timings"
    
    4951
    +      "cat ci_timings.txt"
    
    4952 4952
         ],
    
    4953 4953
         "allow_failure": false,
    
    4954 4954
         "artifacts": {
    
    ... ... @@ -5014,7 +5014,7 @@
    5014 5014
           ".gitlab/ci.sh save_cache",
    
    5015 5015
           ".gitlab/ci.sh save_test_output",
    
    5016 5016
           ".gitlab/ci.sh clean",
    
    5017
    -      "cat ci_timings"
    
    5017
    +      "cat ci_timings.txt"
    
    5018 5018
         ],
    
    5019 5019
         "allow_failure": false,
    
    5020 5020
         "artifacts": {
    
    ... ... @@ -5080,7 +5080,7 @@
    5080 5080
           ".gitlab/ci.sh save_cache",
    
    5081 5081
           ".gitlab/ci.sh save_test_output",
    
    5082 5082
           ".gitlab/ci.sh clean",
    
    5083
    -      "cat ci_timings"
    
    5083
    +      "cat ci_timings.txt"
    
    5084 5084
         ],
    
    5085 5085
         "allow_failure": false,
    
    5086 5086
         "artifacts": {
    
    ... ... @@ -5147,7 +5147,7 @@
    5147 5147
           ".gitlab/ci.sh save_cache",
    
    5148 5148
           ".gitlab/ci.sh save_test_output",
    
    5149 5149
           ".gitlab/ci.sh clean",
    
    5150
    -      "cat ci_timings"
    
    5150
    +      "cat ci_timings.txt"
    
    5151 5151
         ],
    
    5152 5152
         "allow_failure": false,
    
    5153 5153
         "artifacts": {
    
    ... ... @@ -5211,7 +5211,7 @@
    5211 5211
           ".gitlab/ci.sh save_cache",
    
    5212 5212
           ".gitlab/ci.sh save_test_output",
    
    5213 5213
           ".gitlab/ci.sh clean",
    
    5214
    -      "cat ci_timings"
    
    5214
    +      "cat ci_timings.txt"
    
    5215 5215
         ],
    
    5216 5216
         "allow_failure": false,
    
    5217 5217
         "artifacts": {
    
    ... ... @@ -5275,7 +5275,7 @@
    5275 5275
           ".gitlab/ci.sh save_cache",
    
    5276 5276
           ".gitlab/ci.sh save_test_output",
    
    5277 5277
           ".gitlab/ci.sh clean",
    
    5278
    -      "cat ci_timings"
    
    5278
    +      "cat ci_timings.txt"
    
    5279 5279
         ],
    
    5280 5280
         "allow_failure": false,
    
    5281 5281
         "artifacts": {
    
    ... ... @@ -5339,7 +5339,7 @@
    5339 5339
           ".gitlab/ci.sh save_cache",
    
    5340 5340
           ".gitlab/ci.sh save_test_output",
    
    5341 5341
           ".gitlab/ci.sh clean",
    
    5342
    -      "cat ci_timings"
    
    5342
    +      "cat ci_timings.txt"
    
    5343 5343
         ],
    
    5344 5344
         "allow_failure": false,
    
    5345 5345
         "artifacts": {
    
    ... ... @@ -5403,7 +5403,7 @@
    5403 5403
           ".gitlab/ci.sh save_cache",
    
    5404 5404
           ".gitlab/ci.sh save_test_output",
    
    5405 5405
           ".gitlab/ci.sh clean",
    
    5406
    -      "cat ci_timings"
    
    5406
    +      "cat ci_timings.txt"
    
    5407 5407
         ],
    
    5408 5408
         "allow_failure": false,
    
    5409 5409
         "artifacts": {
    
    ... ... @@ -5467,7 +5467,7 @@
    5467 5467
           ".gitlab/ci.sh save_cache",
    
    5468 5468
           ".gitlab/ci.sh save_test_output",
    
    5469 5469
           ".gitlab/ci.sh clean",
    
    5470
    -      "cat ci_timings"
    
    5470
    +      "cat ci_timings.txt"
    
    5471 5471
         ],
    
    5472 5472
         "allow_failure": false,
    
    5473 5473
         "artifacts": {
    
    ... ... @@ -5659,7 +5659,7 @@
    5659 5659
           ".gitlab/ci.sh save_cache",
    
    5660 5660
           ".gitlab/ci.sh save_test_output",
    
    5661 5661
           ".gitlab/ci.sh clean",
    
    5662
    -      "cat ci_timings"
    
    5662
    +      "cat ci_timings.txt"
    
    5663 5663
         ],
    
    5664 5664
         "allow_failure": false,
    
    5665 5665
         "artifacts": {
    
    ... ... @@ -5728,7 +5728,7 @@
    5728 5728
           ".gitlab/ci.sh save_cache",
    
    5729 5729
           ".gitlab/ci.sh save_test_output",
    
    5730 5730
           ".gitlab/ci.sh clean",
    
    5731
    -      "cat ci_timings"
    
    5731
    +      "cat ci_timings.txt"
    
    5732 5732
         ],
    
    5733 5733
         "allow_failure": false,
    
    5734 5734
         "artifacts": {
    
    ... ... @@ -5793,7 +5793,7 @@
    5793 5793
           ".gitlab/ci.sh save_cache",
    
    5794 5794
           ".gitlab/ci.sh save_test_output",
    
    5795 5795
           ".gitlab/ci.sh clean",
    
    5796
    -      "cat ci_timings"
    
    5796
    +      "cat ci_timings.txt"
    
    5797 5797
         ],
    
    5798 5798
         "allow_failure": true,
    
    5799 5799
         "artifacts": {
    
    ... ... @@ -5856,7 +5856,7 @@
    5856 5856
           ".gitlab/ci.sh save_cache",
    
    5857 5857
           ".gitlab/ci.sh save_test_output",
    
    5858 5858
           ".gitlab/ci.sh clean",
    
    5859
    -      "cat ci_timings"
    
    5859
    +      "cat ci_timings.txt"
    
    5860 5860
         ],
    
    5861 5861
         "allow_failure": false,
    
    5862 5862
         "artifacts": {
    
    ... ... @@ -5919,7 +5919,7 @@
    5919 5919
           ".gitlab/ci.sh save_cache",
    
    5920 5920
           ".gitlab/ci.sh save_test_output",
    
    5921 5921
           ".gitlab/ci.sh clean",
    
    5922
    -      "cat ci_timings"
    
    5922
    +      "cat ci_timings.txt"
    
    5923 5923
         ],
    
    5924 5924
         "allow_failure": false,
    
    5925 5925
         "artifacts": {
    
    ... ... @@ -5982,7 +5982,7 @@
    5982 5982
           ".gitlab/ci.sh save_cache",
    
    5983 5983
           ".gitlab/ci.sh save_test_output",
    
    5984 5984
           ".gitlab/ci.sh clean",
    
    5985
    -      "cat ci_timings"
    
    5985
    +      "cat ci_timings.txt"
    
    5986 5986
         ],
    
    5987 5987
         "allow_failure": false,
    
    5988 5988
         "artifacts": {
    
    ... ... @@ -6045,7 +6045,7 @@
    6045 6045
           ".gitlab/ci.sh save_cache",
    
    6046 6046
           ".gitlab/ci.sh save_test_output",
    
    6047 6047
           ".gitlab/ci.sh clean",
    
    6048
    -      "cat ci_timings"
    
    6048
    +      "cat ci_timings.txt"
    
    6049 6049
         ],
    
    6050 6050
         "allow_failure": false,
    
    6051 6051
         "artifacts": {
    
    ... ... @@ -6109,7 +6109,7 @@
    6109 6109
           ".gitlab/ci.sh save_cache",
    
    6110 6110
           ".gitlab/ci.sh save_test_output",
    
    6111 6111
           ".gitlab/ci.sh clean",
    
    6112
    -      "cat ci_timings"
    
    6112
    +      "cat ci_timings.txt"
    
    6113 6113
         ],
    
    6114 6114
         "allow_failure": false,
    
    6115 6115
         "artifacts": {
    
    ... ... @@ -6174,7 +6174,7 @@
    6174 6174
           ".gitlab/ci.sh save_cache",
    
    6175 6175
           ".gitlab/ci.sh save_test_output",
    
    6176 6176
           ".gitlab/ci.sh clean",
    
    6177
    -      "cat ci_timings"
    
    6177
    +      "cat ci_timings.txt"
    
    6178 6178
         ],
    
    6179 6179
         "allow_failure": false,
    
    6180 6180
         "artifacts": {
    
    ... ... @@ -6239,7 +6239,7 @@
    6239 6239
           ".gitlab/ci.sh save_cache",
    
    6240 6240
           ".gitlab/ci.sh save_test_output",
    
    6241 6241
           ".gitlab/ci.sh clean",
    
    6242
    -      "cat ci_timings"
    
    6242
    +      "cat ci_timings.txt"
    
    6243 6243
         ],
    
    6244 6244
         "allow_failure": false,
    
    6245 6245
         "artifacts": {
    
    ... ... @@ -6301,7 +6301,7 @@
    6301 6301
           ".gitlab/ci.sh save_cache",
    
    6302 6302
           ".gitlab/ci.sh save_test_output",
    
    6303 6303
           ".gitlab/ci.sh clean",
    
    6304
    -      "cat ci_timings"
    
    6304
    +      "cat ci_timings.txt"
    
    6305 6305
         ],
    
    6306 6306
         "allow_failure": false,
    
    6307 6307
         "artifacts": {
    
    ... ... @@ -6363,7 +6363,7 @@
    6363 6363
           ".gitlab/ci.sh save_cache",
    
    6364 6364
           ".gitlab/ci.sh save_test_output",
    
    6365 6365
           ".gitlab/ci.sh clean",
    
    6366
    -      "cat ci_timings"
    
    6366
    +      "cat ci_timings.txt"
    
    6367 6367
         ],
    
    6368 6368
         "allow_failure": false,
    
    6369 6369
         "artifacts": {
    
    ... ... @@ -6427,7 +6427,7 @@
    6427 6427
           ".gitlab/ci.sh save_cache",
    
    6428 6428
           ".gitlab/ci.sh save_test_output",
    
    6429 6429
           ".gitlab/ci.sh clean",
    
    6430
    -      "cat ci_timings"
    
    6430
    +      "cat ci_timings.txt"
    
    6431 6431
         ],
    
    6432 6432
         "allow_failure": false,
    
    6433 6433
         "artifacts": {
    
    ... ... @@ -6492,7 +6492,7 @@
    6492 6492
           ".gitlab/ci.sh save_cache",
    
    6493 6493
           ".gitlab/ci.sh save_test_output",
    
    6494 6494
           ".gitlab/ci.sh clean",
    
    6495
    -      "cat ci_timings"
    
    6495
    +      "cat ci_timings.txt"
    
    6496 6496
         ],
    
    6497 6497
         "allow_failure": false,
    
    6498 6498
         "artifacts": {
    
    ... ... @@ -6554,7 +6554,7 @@
    6554 6554
           ".gitlab/ci.sh save_cache",
    
    6555 6555
           ".gitlab/ci.sh save_test_output",
    
    6556 6556
           ".gitlab/ci.sh clean",
    
    6557
    -      "cat ci_timings"
    
    6557
    +      "cat ci_timings.txt"
    
    6558 6558
         ],
    
    6559 6559
         "allow_failure": false,
    
    6560 6560
         "artifacts": {
    
    ... ... @@ -6616,7 +6616,7 @@
    6616 6616
           ".gitlab/ci.sh save_cache",
    
    6617 6617
           ".gitlab/ci.sh save_test_output",
    
    6618 6618
           ".gitlab/ci.sh clean",
    
    6619
    -      "cat ci_timings"
    
    6619
    +      "cat ci_timings.txt"
    
    6620 6620
         ],
    
    6621 6621
         "allow_failure": false,
    
    6622 6622
         "artifacts": {
    
    ... ... @@ -6679,7 +6679,7 @@
    6679 6679
           ".gitlab/ci.sh save_cache",
    
    6680 6680
           ".gitlab/ci.sh save_test_output",
    
    6681 6681
           ".gitlab/ci.sh clean",
    
    6682
    -      "cat ci_timings"
    
    6682
    +      "cat ci_timings.txt"
    
    6683 6683
         ],
    
    6684 6684
         "allow_failure": false,
    
    6685 6685
         "artifacts": {
    
    ... ... @@ -6742,7 +6742,7 @@
    6742 6742
           ".gitlab/ci.sh save_cache",
    
    6743 6743
           ".gitlab/ci.sh save_test_output",
    
    6744 6744
           ".gitlab/ci.sh clean",
    
    6745
    -      "cat ci_timings"
    
    6745
    +      "cat ci_timings.txt"
    
    6746 6746
         ],
    
    6747 6747
         "allow_failure": false,
    
    6748 6748
         "artifacts": {
    
    ... ... @@ -6804,7 +6804,7 @@
    6804 6804
           ".gitlab/ci.sh save_cache",
    
    6805 6805
           ".gitlab/ci.sh save_test_output",
    
    6806 6806
           ".gitlab/ci.sh clean",
    
    6807
    -      "cat ci_timings"
    
    6807
    +      "cat ci_timings.txt"
    
    6808 6808
         ],
    
    6809 6809
         "allow_failure": false,
    
    6810 6810
         "artifacts": {
    
    ... ... @@ -6868,7 +6868,7 @@
    6868 6868
           ".gitlab/ci.sh save_cache",
    
    6869 6869
           ".gitlab/ci.sh save_test_output",
    
    6870 6870
           ".gitlab/ci.sh clean",
    
    6871
    -      "cat ci_timings"
    
    6871
    +      "cat ci_timings.txt"
    
    6872 6872
         ],
    
    6873 6873
         "allow_failure": false,
    
    6874 6874
         "artifacts": {
    
    ... ... @@ -6930,7 +6930,7 @@
    6930 6930
           ".gitlab/ci.sh save_cache",
    
    6931 6931
           ".gitlab/ci.sh save_test_output",
    
    6932 6932
           ".gitlab/ci.sh clean",
    
    6933
    -      "cat ci_timings"
    
    6933
    +      "cat ci_timings.txt"
    
    6934 6934
         ],
    
    6935 6935
         "allow_failure": false,
    
    6936 6936
         "artifacts": {
    
    ... ... @@ -6992,7 +6992,7 @@
    6992 6992
           ".gitlab/ci.sh save_cache",
    
    6993 6993
           ".gitlab/ci.sh save_test_output",
    
    6994 6994
           ".gitlab/ci.sh clean",
    
    6995
    -      "cat ci_timings"
    
    6995
    +      "cat ci_timings.txt"
    
    6996 6996
         ],
    
    6997 6997
         "allow_failure": false,
    
    6998 6998
         "artifacts": {
    
    ... ... @@ -7054,7 +7054,7 @@
    7054 7054
           ".gitlab/ci.sh save_cache",
    
    7055 7055
           ".gitlab/ci.sh save_test_output",
    
    7056 7056
           ".gitlab/ci.sh clean",
    
    7057
    -      "cat ci_timings"
    
    7057
    +      "cat ci_timings.txt"
    
    7058 7058
         ],
    
    7059 7059
         "allow_failure": false,
    
    7060 7060
         "artifacts": {
    
    ... ... @@ -7116,7 +7116,7 @@
    7116 7116
           ".gitlab/ci.sh save_cache",
    
    7117 7117
           ".gitlab/ci.sh save_test_output",
    
    7118 7118
           ".gitlab/ci.sh clean",
    
    7119
    -      "cat ci_timings"
    
    7119
    +      "cat ci_timings.txt"
    
    7120 7120
         ],
    
    7121 7121
         "allow_failure": true,
    
    7122 7122
         "artifacts": {
    
    ... ... @@ -7181,7 +7181,7 @@
    7181 7181
           ".gitlab/ci.sh save_cache",
    
    7182 7182
           ".gitlab/ci.sh save_test_output",
    
    7183 7183
           ".gitlab/ci.sh clean",
    
    7184
    -      "cat ci_timings"
    
    7184
    +      "cat ci_timings.txt"
    
    7185 7185
         ],
    
    7186 7186
         "allow_failure": false,
    
    7187 7187
         "artifacts": {
    
    ... ... @@ -7243,7 +7243,7 @@
    7243 7243
           ".gitlab/ci.sh save_cache",
    
    7244 7244
           ".gitlab/ci.sh save_test_output",
    
    7245 7245
           ".gitlab/ci.sh clean",
    
    7246
    -      "cat ci_timings"
    
    7246
    +      "cat ci_timings.txt"
    
    7247 7247
         ],
    
    7248 7248
         "allow_failure": false,
    
    7249 7249
         "artifacts": {
    
    ... ... @@ -7305,7 +7305,7 @@
    7305 7305
           ".gitlab/ci.sh save_cache",
    
    7306 7306
           ".gitlab/ci.sh save_test_output",
    
    7307 7307
           ".gitlab/ci.sh clean",
    
    7308
    -      "cat ci_timings"
    
    7308
    +      "cat ci_timings.txt"
    
    7309 7309
         ],
    
    7310 7310
         "allow_failure": false,
    
    7311 7311
         "artifacts": {
    
    ... ... @@ -7369,7 +7369,7 @@
    7369 7369
           ".gitlab/ci.sh save_cache",
    
    7370 7370
           ".gitlab/ci.sh save_test_output",
    
    7371 7371
           ".gitlab/ci.sh clean",
    
    7372
    -      "cat ci_timings"
    
    7372
    +      "cat ci_timings.txt"
    
    7373 7373
         ],
    
    7374 7374
         "allow_failure": false,
    
    7375 7375
         "artifacts": {
    
    ... ... @@ -7434,7 +7434,7 @@
    7434 7434
           ".gitlab/ci.sh save_cache",
    
    7435 7435
           ".gitlab/ci.sh save_test_output",
    
    7436 7436
           ".gitlab/ci.sh clean",
    
    7437
    -      "cat ci_timings"
    
    7437
    +      "cat ci_timings.txt"
    
    7438 7438
         ],
    
    7439 7439
         "allow_failure": false,
    
    7440 7440
         "artifacts": {
    
    ... ... @@ -7498,7 +7498,7 @@
    7498 7498
           ".gitlab/ci.sh save_cache",
    
    7499 7499
           ".gitlab/ci.sh save_test_output",
    
    7500 7500
           ".gitlab/ci.sh clean",
    
    7501
    -      "cat ci_timings"
    
    7501
    +      "cat ci_timings.txt"
    
    7502 7502
         ],
    
    7503 7503
         "allow_failure": false,
    
    7504 7504
         "artifacts": {
    
    ... ... @@ -7560,7 +7560,7 @@
    7560 7560
           ".gitlab/ci.sh save_cache",
    
    7561 7561
           ".gitlab/ci.sh save_test_output",
    
    7562 7562
           ".gitlab/ci.sh clean",
    
    7563
    -      "cat ci_timings"
    
    7563
    +      "cat ci_timings.txt"
    
    7564 7564
         ],
    
    7565 7565
         "allow_failure": false,
    
    7566 7566
         "artifacts": {
    
    ... ... @@ -7622,7 +7622,7 @@
    7622 7622
           ".gitlab/ci.sh save_cache",
    
    7623 7623
           ".gitlab/ci.sh save_test_output",
    
    7624 7624
           ".gitlab/ci.sh clean",
    
    7625
    -      "cat ci_timings"
    
    7625
    +      "cat ci_timings.txt"
    
    7626 7626
         ],
    
    7627 7627
         "allow_failure": false,
    
    7628 7628
         "artifacts": {
    
    ... ... @@ -7684,7 +7684,7 @@
    7684 7684
           ".gitlab/ci.sh save_cache",
    
    7685 7685
           ".gitlab/ci.sh save_test_output",
    
    7686 7686
           ".gitlab/ci.sh clean",
    
    7687
    -      "cat ci_timings"
    
    7687
    +      "cat ci_timings.txt"
    
    7688 7688
         ],
    
    7689 7689
         "allow_failure": false,
    
    7690 7690
         "artifacts": {
    
    ... ... @@ -7746,7 +7746,7 @@
    7746 7746
           ".gitlab/ci.sh save_cache",
    
    7747 7747
           ".gitlab/ci.sh save_test_output",
    
    7748 7748
           ".gitlab/ci.sh clean",
    
    7749
    -      "cat ci_timings"
    
    7749
    +      "cat ci_timings.txt"
    
    7750 7750
         ],
    
    7751 7751
         "allow_failure": false,
    
    7752 7752
         "artifacts": {
    
    ... ... @@ -7872,7 +7872,7 @@
    7872 7872
           ".gitlab/ci.sh save_cache",
    
    7873 7873
           ".gitlab/ci.sh save_test_output",
    
    7874 7874
           ".gitlab/ci.sh clean",
    
    7875
    -      "cat ci_timings"
    
    7875
    +      "cat ci_timings.txt"
    
    7876 7876
         ],
    
    7877 7877
         "allow_failure": false,
    
    7878 7878
         "artifacts": {
    

  • compiler/GHC/CmmToAsm/AArch64/CodeGen.hs
    ... ... @@ -928,21 +928,25 @@ getRegister' config plat expr
    928 928
     
    
    929 929
         CmmMachOp (MO_S_Shr w) [x, (CmmLit (CmmInt n _))] | w == W8, 0 <= n, n < 8 -> do
    
    930 930
           (reg_x, _format_x, code_x) <- getSomeReg x
    
    931
    -      return $ Any (intFormat w) (\dst -> code_x `snocOL` annExpr expr (SBFX (OpReg w dst) (OpReg w reg_x) (OpImm (ImmInteger n)) (OpImm (ImmInteger (8-n)))))
    
    931
    +      return $ Any (intFormat w) (\dst -> code_x `snocOL` annExpr expr (SBFX (OpReg w dst) (OpReg w reg_x) (OpImm (ImmInteger n)) (OpImm (ImmInteger (8-n))))
    
    932
    +                                                 `snocOL` (UXTB (OpReg w dst) (OpReg w dst))) -- See Note [Signed arithmetic on AArch64]
    
    932 933
         CmmMachOp (MO_S_Shr w) [x, y] | w == W8 -> do
    
    933 934
           (reg_x, _format_x, code_x) <- getSomeReg x
    
    934 935
           (reg_y, _format_y, code_y) <- getSomeReg y
    
    935 936
           return $ Any (intFormat w) (\dst -> code_x `appOL` code_y `snocOL` annExpr expr (SXTB (OpReg w reg_x) (OpReg w reg_x)) `snocOL`
    
    936
    -                                                                         (ASR (OpReg w dst) (OpReg w reg_x) (OpReg w reg_y)))
    
    937
    +                                                                         (ASR (OpReg w dst) (OpReg w reg_x) (OpReg w reg_y)) `snocOL`
    
    938
    +                                                                         (UXTB (OpReg w dst) (OpReg w dst))) -- See Note [Signed arithmetic on AArch64]
    
    937 939
     
    
    938 940
         CmmMachOp (MO_S_Shr w) [x, (CmmLit (CmmInt n _))] | w == W16, 0 <= n, n < 16 -> do
    
    939 941
           (reg_x, _format_x, code_x) <- getSomeReg x
    
    940
    -      return $ Any (intFormat w) (\dst -> code_x `snocOL` annExpr expr (SBFX (OpReg w dst) (OpReg w reg_x) (OpImm (ImmInteger n)) (OpImm (ImmInteger (16-n)))))
    
    942
    +      return $ Any (intFormat w) (\dst -> code_x `snocOL` annExpr expr (SBFX (OpReg w dst) (OpReg w reg_x) (OpImm (ImmInteger n)) (OpImm (ImmInteger (16-n))))
    
    943
    +                                                 `snocOL` (UXTH (OpReg w dst) (OpReg w dst))) -- See Note [Signed arithmetic on AArch64]
    
    941 944
         CmmMachOp (MO_S_Shr w) [x, y] | w == W16 -> do
    
    942 945
           (reg_x, _format_x, code_x) <- getSomeReg x
    
    943 946
           (reg_y, _format_y, code_y) <- getSomeReg y
    
    944 947
           return $ Any (intFormat w) (\dst -> code_x `appOL` code_y `snocOL` annExpr expr (SXTH (OpReg w reg_x) (OpReg w reg_x)) `snocOL`
    
    945
    -                                                                         (ASR (OpReg w dst) (OpReg w reg_x) (OpReg w reg_y)))
    
    948
    +                                                                         (ASR (OpReg w dst) (OpReg w reg_x) (OpReg w reg_y)) `snocOL`
    
    949
    +                                                                         (UXTH (OpReg w dst) (OpReg w dst))) -- See Note [Signed arithmetic on AArch64]
    
    946 950
     
    
    947 951
         CmmMachOp (MO_S_Shr w) [x, (CmmLit (CmmInt n _))]
    
    948 952
           | w == W32 || w == W64
    

  • compiler/GHC/CmmToAsm/X86/CodeGen.hs
    ... ... @@ -6067,10 +6067,23 @@ genByteSwap width dst src = do
    6067 6067
           W64 | is32Bit -> do
    
    6068 6068
             let Reg64 dst_hi dst_lo = localReg64 dst
    
    6069 6069
             RegCode64 vcode rhi rlo <- iselExpr64 src
    
    6070
    -        return $ vcode `appOL`
    
    6071
    -                 toOL [ MOV II32 (OpReg rlo) (OpReg dst_hi),
    
    6072
    -                        MOV II32 (OpReg rhi) (OpReg dst_lo),
    
    6073
    -                        BSWAP II32 dst_hi,
    
    6070
    +        tmp <- getNewRegNat II32
    
    6071
    +        -- Swap the low and high halves of the register.
    
    6072
    +        --
    
    6073
    +        -- NB: if dst_hi == rhi, we must make sure to preserve the contents
    
    6074
    +        -- of rhi before writing to dst_hi (#25601).
    
    6075
    +        let shuffle = if dst_hi == rhi && dst_lo == rlo then
    
    6076
    +                        toOL [ MOV II32 (OpReg rhi) (OpReg tmp),
    
    6077
    +                               MOV II32 (OpReg rlo) (OpReg dst_hi),
    
    6078
    +                               MOV II32 (OpReg tmp) (OpReg dst_lo) ]
    
    6079
    +                      else if dst_hi == rhi then
    
    6080
    +                        toOL [ MOV II32 (OpReg rhi) (OpReg dst_lo),
    
    6081
    +                               MOV II32 (OpReg rlo) (OpReg dst_hi) ]
    
    6082
    +                      else
    
    6083
    +                        toOL [ MOV II32 (OpReg rlo) (OpReg dst_hi),
    
    6084
    +                               MOV II32 (OpReg rhi) (OpReg dst_lo) ]
    
    6085
    +        return $ vcode `appOL` shuffle `appOL`
    
    6086
    +                 toOL [ BSWAP II32 dst_hi,
    
    6074 6087
                             BSWAP II32 dst_lo ]
    
    6075 6088
           W16 -> do
    
    6076 6089
             let dst_r = getLocalRegReg dst
    

  • compiler/GHC/Types/Error.hs
    ... ... @@ -602,8 +602,14 @@ instance Diagnostic e => ToJson (MsgEnvelope e) where
    602 602
         where
    
    603 603
           diag = errMsgDiagnostic m
    
    604 604
           opts = defaultDiagnosticOpts @e
    
    605
    -      style = mkErrStyle (errMsgContext m)
    
    606
    -      ctx = defaultSDocContext {sdocStyle = style }
    
    605
    +      ctx = defaultSDocContext {
    
    606
    +          sdocStyle = mkErrStyle (errMsgContext m)
    
    607
    +        , sdocCanUseUnicode = True
    
    608
    +             -- Using Unicode makes it easier to consume the JSON output,
    
    609
    +             -- e.g. a suggestion to use foldl' will be displayed as
    
    610
    +             -- \u2018foldl'\u2019, which is not easily confused with
    
    611
    +             -- the quoted ‘foldl’ (note: no tick).
    
    612
    +        }
    
    607 613
           diagMsg = filter (not . isEmpty ctx) (unDecorated (diagnosticMessage (opts) diag))
    
    608 614
           renderToJSString :: SDoc -> JsonDoc
    
    609 615
           renderToJSString = JSString . (renderWithContext ctx)
    

  • hadrian/src/Settings.hs
    ... ... @@ -35,7 +35,7 @@ getExtraArgs :: Args
    35 35
     getExtraArgs = expr flavour >>= extraArgs
    
    36 36
     
    
    37 37
     getArgs :: Args
    
    38
    -getArgs = mconcat [ defaultBuilderArgs, getExtraArgs, defaultPackageArgs ]
    
    38
    +getArgs = mconcat [ defaultBuilderArgs, defaultPackageArgs, getExtraArgs ]
    
    39 39
     
    
    40 40
     getLibraryWays :: Ways
    
    41 41
     getLibraryWays = expr flavour >>= libraryWays
    

  • testsuite/tests/cmm/should_run/T25601.hs
    1
    +{-# LANGUAGE UnboxedTuples #-}
    
    2
    +{-# LANGUAGE MagicHash #-}
    
    3
    +{-# LANGUAGE ForeignFunctionInterface #-}
    
    4
    +{-# LANGUAGE GHCForeignImportPrim #-}
    
    5
    +{-# LANGUAGE UnliftedFFITypes #-}
    
    6
    +
    
    7
    +import Numeric
    
    8
    +import GHC.Prim
    
    9
    +import GHC.Word
    
    10
    +import GHC.IO
    
    11
    +import GHC.Ptr
    
    12
    +import Data.List
    
    13
    +import qualified Data.ByteString as BS
    
    14
    +
    
    15
    +foreign import prim "test" c_test :: Addr# -> State# RealWorld -> (# State# RealWorld, Word64# #)
    
    16
    +
    
    17
    +main :: IO ()
    
    18
    +main = do
    
    19
    +    let bs = BS.pack $ take 100000 [ fromIntegral i | i <- [(1 :: Int) ..] ]
    
    20
    +    n <- BS.useAsCString bs $ \(Ptr addr) -> IO $ \s ->
    
    21
    +      case c_test addr s of (# s', n #) -> (# s', W64# n #)
    
    22
    +    print $ showHex n ""

  • testsuite/tests/cmm/should_run/T25601.stdout
    1
    +"f3f1ffffffffffff"

  • testsuite/tests/cmm/should_run/T25601a.cmm
    1
    +#include "Cmm.h"
    
    2
    +
    
    3
    +test ( W_ buffer ) {
    
    4
    +  bits64 ret;
    
    5
    +  (ret) = prim %bswap64(%neg(%zx64(bits16[buffer + (12 :: W_)])));
    
    6
    +  return (ret);
    
    7
    +}

  • testsuite/tests/cmm/should_run/all.T
    ... ... @@ -47,3 +47,8 @@ test('AtomicFetch',
    47 47
          ],
    
    48 48
          multi_compile_and_run,
    
    49 49
          ['AtomicFetch', [('AtomicFetch_cmm.cmm', '')], ''])
    
    50
    +
    
    51
    +test('T25601',
    
    52
    +     [req_cmm],
    
    53
    +     multi_compile_and_run,
    
    54
    +     ['T25601', [('T25601a.cmm', '')], ''])

  • testsuite/tests/codeGen/should_run/T26061.hs
    1
    +{-# LANGUAGE MagicHash #-}
    
    2
    +{-# LANGUAGE ExtendedLiterals #-}
    
    3
    +import GHC.Word
    
    4
    +import GHC.Exts
    
    5
    +
    
    6
    +f :: Int16# -> Word16#
    
    7
    +f x = let !w = int16ToWord16# (x `uncheckedShiftRAInt16#` 1#)
    
    8
    +      in w `remWord16#` 13#Word16
    
    9
    +{-# NOINLINE f #-}
    
    10
    +
    
    11
    +g :: Int8# -> Word8#
    
    12
    +g x = let !w = int8ToWord8# (x `uncheckedShiftRAInt8#` 1#)
    
    13
    +      in w `remWord8#` 19#Word8
    
    14
    +{-# NOINLINE g #-}
    
    15
    +
    
    16
    +h :: Int16# -> Int# -> Word16#
    
    17
    +h x y = let !w = int16ToWord16# (x `uncheckedShiftRAInt16#` y)
    
    18
    +      in w `remWord16#` 13#Word16
    
    19
    +{-# NOINLINE h #-}
    
    20
    +
    
    21
    +i :: Int8# -> Int# -> Word8#
    
    22
    +i x y = let !w = int8ToWord8# (x `uncheckedShiftRAInt8#` y)
    
    23
    +        in w `remWord8#` 19#Word8
    
    24
    +{-# NOINLINE i #-}
    
    25
    +
    
    26
    +main :: IO ()
    
    27
    +main = do
    
    28
    +  print (W16# (f (-100#Int16)))
    
    29
    +  print (W8# (g (-100#Int8)))
    
    30
    +  print (W16# (h (-100#Int16) 1#))
    
    31
    +  print (W8# (i (-100#Int8) 1#))
    
    32
    +
    
    33
    +-- int16ToWord16 (-100 `shiftR` 1) `rem` 13
    
    34
    +--   = int16ToWord16 (-50) `rem` 13
    
    35
    +--   = 65486 `rem` 13
    
    36
    +--   = 5
    
    37
    +
    
    38
    +-- int8ToWord8 (-100 `shiftR` 1) `rem` 19
    
    39
    +--   = int8ToWord8 (-50) `rem` 19
    
    40
    +--   = 206 `rem` 19
    
    41
    +--   = 16

  • testsuite/tests/codeGen/should_run/T26061.stdout
    1
    +5
    
    2
    +16
    
    3
    +5
    
    4
    +16

  • testsuite/tests/codeGen/should_run/all.T
    ... ... @@ -255,3 +255,4 @@ test('T24893', normal, compile_and_run, ['-O'])
    255 255
     
    
    256 256
     test('CCallConv', [req_c], compile_and_run, ['CCallConv_c.c'])
    
    257 257
     test('T25364', normal, compile_and_run, [''])
    
    258
    +test('T26061', normal, compile_and_run, [''])

  • testsuite/tests/driver/json.stderr
    1
    -{"version":"1.1","ghcVersion":"ghc-9.13.20241113","span":{"file":"json.hs","start":{"line":9,"column":11},"end":{"line":9,"column":21}},"severity":"Error","code":48010,"message":["Empty list of alternatives in case expression"],"hints":["Perhaps you intended to use the `EmptyCase' extension"]}
    1
    +{"version":"1.1","ghcVersion":"ghc-9.13.20250529","span":{"file":"json.hs","start":{"line":9,"column":11},"end":{"line":9,"column":21}},"severity":"Error","code":48010,"message":["Empty list of alternatives in case expression"],"hints":["Perhaps you intended to use the \u2018EmptyCase\u2019 extension"]}

  • testsuite/tests/driver/json_warn.stderr
    1
    -{"version":"1.1","ghcVersion":"ghc-9.13.20241113","span":{"file":"json_warn.hs","start":{"line":4,"column":3},"end":{"line":4,"column":4}},"severity":"Warning","code":40910,"message":["Defined but not used: `x'"],"hints":[],"reason":{"flags":["unused-matches"]}}
    
    2
    -{"version":"1.1","ghcVersion":"ghc-9.13.20241113","span":{"file":"json_warn.hs","start":{"line":7,"column":5},"end":{"line":7,"column":9}},"severity":"Warning","code":63394,"message":["In the use of `head'\n(imported from Prelude, but defined in GHC.Internal.List):\n\"This is a partial function, it throws an error on empty lists. Use pattern matching, 'Data.List.uncons' or 'Data.Maybe.listToMaybe' instead. Consider refactoring to use \"Data.List.NonEmpty\".\""],"hints":[],"reason":{"category":"x-partial"}}
    1
    +{"version":"1.1","ghcVersion":"ghc-9.13.20250529","span":{"file":"json_warn.hs","start":{"line":4,"column":3},"end":{"line":4,"column":4}},"severity":"Warning","code":40910,"message":["Defined but not used: \u2018x\u2019"],"hints":[],"reason":{"flags":["unused-matches"]}}
    
    2
    +{"version":"1.1","ghcVersion":"ghc-9.13.20250529","span":{"file":"json_warn.hs","start":{"line":7,"column":5},"end":{"line":7,"column":9}},"severity":"Warning","code":63394,"message":["In the use of \u2018head\u2019\n(imported from Prelude, but defined in GHC.Internal.List):\n\"This is a partial function, it throws an error on empty lists. Use pattern matching, 'Data.List.uncons' or 'Data.Maybe.listToMaybe' instead. Consider refactoring to use \"Data.List.NonEmpty\".\""],"hints":[],"reason":{"category":"x-partial"}}

  • utils/haddock/haddock-library/src/Documentation/Haddock/Parser.hs
    1
    +{-# LANGUAGE LambdaCase #-}
    
    1 2
     {-# LANGUAGE OverloadedStrings #-}
    
    2 3
     {-# LANGUAGE ViewPatterns #-}
    
    3 4
     
    
    ... ... @@ -28,6 +29,7 @@ import Control.Applicative
    28 29
     import Control.Arrow (first)
    
    29 30
     import Control.Monad
    
    30 31
     import Data.Char (chr, isAlpha, isSpace, isUpper)
    
    32
    +import Data.Functor (($>))
    
    31 33
     import Data.List (elemIndex, intercalate, intersperse, unfoldr)
    
    32 34
     import Data.Maybe (fromMaybe, mapMaybe)
    
    33 35
     import Data.Monoid
    
    ... ... @@ -186,11 +188,29 @@ specialChar = "_/<@\"&'`#[ "
    186 188
     -- to ensure that we have already given a chance to more meaningful parsers
    
    187 189
     -- before capturing their characters.
    
    188 190
     string' :: Parser (DocH mod a)
    
    189
    -string' = DocString . unescape . T.unpack <$> takeWhile1_ (`notElem` specialChar)
    
    191
    +string' =
    
    192
    +  DocString
    
    193
    +    <$> ((:) <$> rawOrEscChar "" <*> many (rawOrEscChar "(["))
    
    194
    +    -- After the first character, stop for @\(@ or @\[@ math starters. (The
    
    195
    +    -- first character won't start a valid math string because this parser
    
    196
    +    -- should follow math parsers. But this parser is expected to accept at
    
    197
    +    -- least one character from all inputs that don't start with special
    
    198
    +    -- characters, so the first character parser can't have the @"(["@
    
    199
    +    -- restriction.)
    
    190 200
       where
    
    191
    -    unescape "" = ""
    
    192
    -    unescape ('\\' : x : xs) = x : unescape xs
    
    193
    -    unescape (x : xs) = x : unescape xs
    
    201
    +    -- | Parse a single logical character, either raw or escaped. Don't accept
    
    202
    +    -- escaped characters from the argument string.
    
    203
    +    rawOrEscChar :: [Char] -> Parser Char
    
    204
    +    rawOrEscChar restrictedEscapes = try $ Parsec.noneOf specialChar >>= \case
    
    205
    +      -- Handle backslashes:
    
    206
    +      --   - Fail on forbidden escape characters.
    
    207
    +      --   - Non-forbidden characters: simply unescape, e.g. parse "\b" as 'b',
    
    208
    +      --   - Trailing backslash: treat it as a raw backslash, not an escape
    
    209
    +      --     sequence. (This is the logic that this parser followed when this
    
    210
    +      --     comment was written; it is not necessarily intentional but now I
    
    211
    +      --     don't want to break anything relying on it.)
    
    212
    +      '\\' -> Parsec.noneOf restrictedEscapes <|> Parsec.eof $> '\\'
    
    213
    +      c -> pure c
    
    194 214
     
    
    195 215
     -- | Skips a single special character and treats it as a plain string.
    
    196 216
     -- This is done to skip over any special characters belonging to other
    

  • utils/haddock/haddock-library/test/Documentation/Haddock/ParserSpec.hs
    ... ... @@ -284,6 +284,13 @@ spec = do
    284 284
           it "supports title for deprecated picture syntax" $ do
    
    285 285
             "<<b a z>>" `shouldParseTo` image "b" "a z"
    
    286 286
     
    
    287
    +    context "when parsing inline math" $ do
    
    288
    +      it "accepts inline math immediately after punctuation" $ do
    
    289
    +        "(\\(1 + 2 = 3\\) is an example of addition)"
    
    290
    +          `shouldParseTo` "("
    
    291
    +          <> DocMathInline "1 + 2 = 3"
    
    292
    +          <> " is an example of addition)"
    
    293
    +
    
    287 294
         context "when parsing display math" $ do
    
    288 295
           it "accepts markdown syntax for display math containing newlines" $ do
    
    289 296
             "\\[\\pi\n\\pi\\]" `shouldParseTo` DocMathDisplay "\\pi\n\\pi"