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

Commits:

10 changed files:

Changes:

  • configure.ac
    ... ... @@ -13,7 +13,7 @@ dnl
    13 13
     # see what flags are available. (Better yet, read the documentation!)
    
    14 14
     #
    
    15 15
     
    
    16
    -AC_INIT([The Glorious Glasgow Haskell Compilation System], [9.14.0], [glasgow-haskell-bugs@haskell.org], [ghc-AC_PACKAGE_VERSION])
    
    16
    +AC_INIT([The Glorious Glasgow Haskell Compilation System], [9.15], [glasgow-haskell-bugs@haskell.org], [ghc-AC_PACKAGE_VERSION])
    
    17 17
         # Version on master must be X.Y (not X.Y.Z) for ProjectVersionMunged variable
    
    18 18
         # to be useful (cf #19058). However, the version must have three components
    
    19 19
         # (X.Y.Z) on stable branches (e.g. ghc-9.2) to ensure that pre-releases are
    

  • docs/users_guide/eventlog-formats.rst
    ... ... @@ -693,6 +693,8 @@ A single fixed-width event emitted during program start-up describing the sample
    693 693
        :field String: retainer filter
    
    694 694
        :field String: biography filter
    
    695 695
     
    
    696
    +The profile ID field is reserved for future use.
    
    697
    +
    
    696 698
     Cost centre definitions
    
    697 699
     ^^^^^^^^^^^^^^^^^^^^^^^
    
    698 700
     
    
    ... ... @@ -792,6 +794,7 @@ Otherwise, a :event-type:`HEAP_PROF_SAMPLE_STRING` event is emitted instead.
    792 794
        :field Word8: stack depth
    
    793 795
        :field Word32[]: cost centre stack starting with inner-most (cost centre numbers)
    
    794 796
     
    
    797
    +The profile ID field is reserved for future use.
    
    795 798
     
    
    796 799
     String break-down
    
    797 800
     ^^^^^^^^^^^^^^^^^
    
    ... ... @@ -818,6 +821,8 @@ If the heap profile type is set to :rts-flag:`-hc` or :rts-flag:`-hb`, a :event-
    818 821
        :field Word64: heap residency in bytes
    
    819 822
        :field String: sample label
    
    820 823
     
    
    824
    +The profile ID field is reserved for future use.
    
    825
    +
    
    821 826
     .. _time-profiler-events:
    
    822 827
     
    
    823 828
     Time profiler event log output
    

  • m4/find_ld.m4
    ... ... @@ -21,14 +21,7 @@ AC_DEFUN([FIND_LD],[
    21 21
                 return
    
    22 22
             fi
    
    23 23
     
    
    24
    -        case $CPU in
    
    25
    -        i386)
    
    26
    -            # We refuse to use ld.gold on i386 due to #23579, which we don't
    
    27
    -            # have a good autoconf check for.
    
    28
    -            linkers="ld.lld ld" ;;
    
    29
    -        *)
    
    30
    -            linkers="ld.lld ld.gold ld" ;;
    
    31
    -        esac
    
    24
    +        linkers="ld.lld ld"
    
    32 25
     
    
    33 26
             # Manually iterate over possible names since we want to ensure that, e.g.,
    
    34 27
             # if ld.lld is installed but gcc doesn't support -fuse-ld=lld, that we
    

  • rts/sm/NonMoving.c
    ... ... @@ -603,7 +603,6 @@ void nonmovingPushFreeSegment(struct NonmovingSegment *seg)
    603 603
             if (cas((StgVolatilePtr) &nonmovingHeap.free, (StgWord) old, (StgWord) seg) == (StgWord) old)
    
    604 604
                 break;
    
    605 605
         }
    
    606
    -    __sync_add_and_fetch(&nonmovingHeap.n_free, 1);
    
    607 606
     }
    
    608 607
     
    
    609 608
     static int
    
    ... ... @@ -621,20 +620,26 @@ cmp_segment_ptr (const void *x, const void *y)
    621 620
     void nonmovingPruneFreeSegmentList(void)
    
    622 621
     {
    
    623 622
       trace(TRACE_nonmoving_gc, "Pruning free segment list.");
    
    623
    +
    
    624 624
       // Atomically grab the entire free list.
    
    625 625
       struct NonmovingSegment *free;
    
    626
    -  size_t length;
    
    627 626
       while (true) {
    
    628 627
         free = ACQUIRE_LOAD(&nonmovingHeap.free);
    
    629
    -    length = ACQUIRE_LOAD(&nonmovingHeap.n_free);
    
    630 628
         if (cas((StgVolatilePtr) &nonmovingHeap.free,
    
    631 629
                 (StgWord) free,
    
    632 630
                 (StgWord) NULL) == (StgWord) free) {
    
    633
    -        atomic_dec((StgVolatilePtr) &nonmovingHeap.n_free, length);
    
    634 631
             break;
    
    635 632
         }
    
    636
    -    // Save the current free list so the sanity checker can see these segments.
    
    637
    -    nonmovingHeap.saved_free = free;
    
    633
    +  }
    
    634
    +  // Save the current free list so the sanity checker can see these segments.
    
    635
    +  nonmovingHeap.saved_free = free;
    
    636
    +
    
    637
    +  // Calculate the length of the list we've taken
    
    638
    +  size_t length = 0;
    
    639
    +  struct NonmovingSegment *free1 = free;
    
    640
    +  while (free1) {
    
    641
    +    length++;
    
    642
    +    free1 = free1->link;
    
    638 643
       }
    
    639 644
     
    
    640 645
       // Sort the free list by address.
    
    ... ... @@ -692,7 +697,6 @@ void nonmovingPruneFreeSegmentList(void)
    692 697
           if (cas((StgVolatilePtr) &nonmovingHeap.free,
    
    693 698
                   (StgWord) rest,
    
    694 699
                   (StgWord) free) == (StgWord) rest) {
    
    695
    -          __sync_add_and_fetch(&nonmovingHeap.n_free, new_length);
    
    696 700
               break;
    
    697 701
           }
    
    698 702
         }
    

  • rts/sm/NonMoving.h
    ... ... @@ -134,8 +134,6 @@ struct NonmovingHeap {
    134 134
         // saved free segment list, so the sanity checker can
    
    135 135
         // see the segments while the free list is being pruned.
    
    136 136
         struct NonmovingSegment *saved_free;
    
    137
    -    // how many segments in free segment list? accessed atomically.
    
    138
    -    unsigned int n_free;
    
    139 137
     
    
    140 138
         // records the current length of the nonmovingAllocator.current arrays
    
    141 139
         unsigned int n_caps;
    

  • rts/sm/NonMovingAllocate.c
    ... ... @@ -183,7 +183,6 @@ static struct NonmovingSegment *nonmovingPopFreeSegment(void)
    183 183
             if (cas((StgVolatilePtr) &nonmovingHeap.free,
    
    184 184
                     (StgWord) seg,
    
    185 185
                     (StgWord) seg->link) == (StgWord) seg) {
    
    186
    -            __sync_sub_and_fetch(&nonmovingHeap.n_free, 1);
    
    187 186
                 return seg;
    
    188 187
             }
    
    189 188
         }
    

  • rts/sm/Sanity.c
    ... ... @@ -990,7 +990,6 @@ static void checkGeneration (generation *gen,
    990 990
     #endif
    
    991 991
     
    
    992 992
         if (isNonmovingGen(gen)) {
    
    993
    -        ASSERT(countNonMovingSegments(nonmovingHeap.free) == (W_) nonmovingHeap.n_free * NONMOVING_SEGMENT_BLOCKS);
    
    994 993
             ASSERT(countBlocks(nonmoving_large_objects) == n_nonmoving_large_blocks);
    
    995 994
             ASSERT(countBlocks(nonmoving_marked_large_objects) == n_nonmoving_marked_large_blocks);
    
    996 995
     
    

  • testsuite/tests/driver/recomp015/all.T
    ... ... @@ -5,7 +5,11 @@ test('recomp015',
    5 5
            # See ticket:11022#comment:7
    
    6 6
            unless(opsys('linux') or opsys('solaris2') or opsys('openbsd'), skip),
    
    7 7
            when(arch('arm'), skip),
    
    8
    -       js_skip # JS backend doesn't support .s assembly files
    
    8
    +       js_skip, # JS backend doesn't support .s assembly files
    
    9
    +
    
    10
    +       # the linker sometimes throws warnings since we don't
    
    11
    +       # generate a .note.GNU-stack section
    
    12
    +       ignore_stderr,
    
    9 13
          ],
    
    10 14
          makefile_test, [])
    
    11 15
     

  • utils/ghc-toolchain/src/GHC/Toolchain/Tools/Link.hs
    ... ... @@ -91,7 +91,7 @@ findLinkFlags enableOverride cc ccLink
    91 91
               -- executable exists before trying cc.
    
    92 92
               do _ <- findProgram (linker ++ " linker") emptyProgOpt ["ld."++linker]
    
    93 93
                  prog <$ checkLinkWorks cc prog
    
    94
    -        | linker <- ["lld", "gold", "bfd"]
    
    94
    +        | linker <- ["lld", "bfd"]
    
    95 95
             , let prog = over _prgFlags (++["-fuse-ld="++linker]) ccLink
    
    96 96
             ]
    
    97 97
             <|> (ccLink <$ checkLinkWorks cc ccLink)
    

  • utils/haddock/haddock-api/haddock-api.cabal
    ... ... @@ -79,7 +79,7 @@ library
    79 79
     
    
    80 80
       -- this package typically supports only single major versions
    
    81 81
       build-depends: base             >= 4.16 && < 4.23
    
    82
    -               , ghc             ^>= 9.14
    
    82
    +               , ghc             ^>= 9.15
    
    83 83
                    , haddock-library ^>= 1.11
    
    84 84
                    , xhtml           ^>= 3000.2.2
    
    85 85
                    , parsec          ^>= 3.1.13.0