And this is the patch.  Sorry, if you want to extract the code itself, you'll 
need to follow the reference back.

R.

On 28/10/2025 14:10, Richard Earnshaw via Gcc wrote:
> These two files are intended to be a demonstration of how we could 
> auto-classify
> patches submitted to the forge and appropriate labels.
> 
> This is work-in-progress; in particular the classify.py code cannot currently
> read patch files or look up bugzilla tickets.  However, it is possible to run
> the script on the output of find (run from the top-level of the gcc source 
> tree)
> to see which labels would be added for each file in the repository.  Use
> something like:
>   (cd ${gcc_src}; find . \( -name .git -prune \) -o -type f) | ./classify.py
> 
> contrib/ChangeLog:
> 
>       * forge/classify.py: New file.
>       * forge/labels: New file.
> ---
>  contrib/forge/classify.py | 158 +++++++++++++++++
>  contrib/forge/labels      | 347 ++++++++++++++++++++++++++++++++++++++
>  2 files changed, 505 insertions(+)
>  create mode 100755 contrib/forge/classify.py
>  create mode 100644 contrib/forge/labels
> 
> diff --git a/contrib/forge/classify.py b/contrib/forge/classify.py
> new file mode 100755
> index 00000000000..622b565dd61
> --- /dev/null
> +++ b/contrib/forge/classify.py
> @@ -0,0 +1,158 @@
> +#!/usr/bin/env python3
> +
> +# Map files in the GCC source tree to forge labels.
> +
> +# Copyright (C) 2025 Free Software Foundation, Inc.
> +#
> +# This file is part of GCC.
> +#
> +# GCC is free software; you can redistribute it and/or modify it under
> +# the terms of the GNU General Public License as published by the Free
> +# Software Foundation; either version 3, or (at your option) any later
> +# version.
> +#
> +# GCC is distributed in the hope that it will be useful, but WITHOUT ANY
> +# WARRANTY; without even the implied warranty of MERCHANTABILITY or
> +# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
> +# for more details.
> +#
> +# You should have received a copy of the GNU General Public License
> +# along with GCC; see the file COPYING3.  If not see
> +# <http://www.gnu.org/licenses/>.
> +
> +# Note, this file requires python 3.10 or later.
> +
> +import re
> +import sys
> +
> +# from unidiff import PatchSet
> +
> +labels_file = 'labels'
> +
> +label_and_rule = 
> re.compile(r'^([a-zA-Z][-+a-zA-Z0-9]*(?:/[a-zA-Z][-+a-zA-Z0-9]*)*)\s+\{([^\}]+)?\}\s+')
> +ignore_line = re.compile(r'^([#:]|\s*\n)')
> +
> +class classifier:
> +    def __init__(self, labs):
> +        self.file_class = []
> +        self.bz_class = []
> +        self.default_class = None
> +        f = open(labs)
> +        for l in f.readlines():
> +            m = label_and_rule.match(l)
> +            if m:
> +                rule = m.group(2)
> +                if rule:
> +                    if rule[:5] == 'file:':
> +                        self.file_class += self._file_entry(rule[5:], 
> m.group(1))
> +                    elif rule == 'default:':
> +                        if self.default_class:
> +                            raise Exception ('There can only be one default 
> class')
> +                        else:
> +                            self.default_class = m.group(1)
> +                    elif rule[:3] == 'BZ:':
> +                        True
> +                    else:
> +                        raise Exception('Unrecognized line: ' + l)
> +
> +            elif not ignore_line.match(l):
> +                print('Unrecognized line:', l)
> +        f.close()
> +
> +    def map_to_labels(self, name):
> +        labels = []
> +        priority = 10 # Lowest supported priority is 9
> +        for fc in self.file_class:
> +            if fc['pattern'].match(name):
> +                if fc['priority'] < priority:
> +                    priority = fc['priority']
> +                    labels = [fc['label']]
> +                elif fc['priority'] == priority:
> +                    labels += [fc['label']]
> +
> +        if len(labels) != 0:
> +            return labels
> +        return [self.default_class]
> +
> +    def _file_entry(self, template, label):
> +        pattern = r''
> +        last_char = None
> +        # Diff file names are of the form a/xxx or b/xxx
> +        # and the output of 'find .' is of the form './xxx'
> +        # so if we need to match the start of the filename, look for
> +        # '^.' to skip the leading character.
> +        pos = 0
> +        depth = 0
> +        priority = 1
> +        length = len(template)
> +        # An initial &<digit> gives a priority for the match.  lower values 
> have
> +        # higher priority (min 1).  A label will only be applied if it has 
> the
> +        # same priority as any existing labels or if it has a lower priority
> +        # value than any existing labels applied (in which case the existing
> +        # labels will be discarded).
> +        if length - pos > 2 and template[pos] == '&':
> +            priority = int(template[1])
> +            pos += 2
> +        if template[pos] == '^':
> +            pattern += r'^.'
> +            pos += 1
> +            # Don't update last_char
> +        else:
> +            pattern += r'.*/'
> +        while pos < length:
> +            # '*' is mapped to '[^/]*' unless the following characters are
> +            # also '*/', in which case we match '(.*/)*'
> +            if template[pos] == '*':
> +                if pos + 2 < length and template[:3] == '**/':
> +                    pattern += r'(:?.*/)*'
> +                    pos += 1
> +                else:
> +                    pattern += r'[^/]*'
> +            elif template[pos] == '+':
> +                pattern += r'\+'
> +            elif template[pos] == '(':
> +                # We don't need any groups from the regex.
> +                pattern += r'(?:'
> +                depth += 1
> +            elif template[pos] == ')':
> +                pattern += r')'
> +                depth -= 1
> +                if depth < 0:
> +                    raise Exception ('Invalid template: ' + template)
> +            elif template[pos] == '.':
> +                pattern += r'\.'
> +            elif template[pos] == '/':
> +                pattern += r'/'
> +                if (depth > 0
> +                    and pos + 1 < length 
> +                    and (template[pos + 1] == '|'
> +                         or template[pos + 1] == ')')):
> +                    # We expect '/|' (or '/)' to appear at the end of an 
> alternative
> +                    # and to mean anything in any subdirectory matched.  But 
> we may
> +                    # need to match files in the alternative, so add an 
> explicit '.*'.
> +                    pattern += r'.*'
> +            else:
> +                pattern += template[pos]
> +            last_char = template[pos]
> +            pos += 1
> +
> +        if depth != 0:
> +            raise Exception ('Invalid template: ' + template)
> +        if last_char != '/':
> +            pattern += '$'
> +
> +        d = dict()
> +        d['pattern'] = re.compile(pattern)
> +        d['priority'] = priority
> +        d['label'] = label
> +        return [d]
> +
> +
> +
> +def main():
> +    my_classifier = classifier(labels_file)
> +    for f in sys.stdin.readlines():
> +        print (f.strip('\n'), ': ', my_classifier.map_to_labels 
> (f.strip('\n')), sep='')
> +
> +if __name__ == "__main__":
> +    main()
> diff --git a/contrib/forge/labels b/contrib/forge/labels
> new file mode 100644
> index 00000000000..c3733c2ecf8
> --- /dev/null
> +++ b/contrib/forge/labels
> @@ -0,0 +1,347 @@
> +# Provisional list of labels for the gcc forge:
> +#
> +# Copyright (C) 2025 Free Software Foundation, Inc.
> +#
> +# This file is part of GCC.
> +#
> +# GCC is free software; you can redistribute it and/or modify it under
> +# the terms of the GNU General Public License as published by the Free
> +# Software Foundation; either version 3, or (at your option) any later
> +# version.
> +#
> +# GCC is distributed in the hope that it will be useful, but WITHOUT ANY
> +# WARRANTY; without even the implied warranty of MERCHANTABILITY or
> +# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
> +# for more details.
> +#
> +# You should have received a copy of the GNU General Public License
> +# along with GCC; see the file COPYING3.  If not see
> +# <http://www.gnu.org/licenses/>.
> +
> +# Tags are not exclusive unless otherwise stated.
> +#
> +
> +# Note, *** indicates that this matches a strict category, but perhaps
> +# we shouldn't permit these in labels.
> +
> +# Format of this file:
> +# - Comments start with '#' in the first column and continue to the
> +#   end of a line.
> +# - Color markers start with ':color' and indicate the background
> +#   color of label.  The value is RGB in hex.  Color directives
> +#   continue until the next color marker.
> +# - Multi-select/exclusive labels are marked ':multi' or ':exclusive'
> +#   and indicate if the tag forms part of an exclusive set (you can
> +#   set at most one such label on a patch or issue.  These continue
> +#   until the next multi/exclusive marker.  Note the label name's in
> +#   an exclusive set must follow Forgejo's rules for such labels.
> +# - Other lines are in the format:
> +#     <label-name>   {auto-assignment-query}  [<optional description>]
> +#   The description text will be used to populate the description
> +#   field for the label.
> +#
> +#   The auto-assignment-query is a search term or rule for applying
> +#   the label to the ticket.  No search is performed if the query
> +#   field is empty ({}).
> +#
> +#   Three forms of query are currently supported:
> +#   - BZ:<ticket-num>.<field>
> +#     Extracts 'field' from a bugzilla ticket and uses it to substitute
> +#     as the last component of the label (all such labels must use the
> +#     same query and all the valid values for the label must exist.
> +#   - BZ:imatch(<regex>).<ticket-num>.<field>
> +#     Extracts 'field' from a bugzilla ticket 'ticket-num'
> +
> +
> +
> +## Bug reports
> +# All of these labels are expected to be automatically scraped from
> +# the primary (first-referenced) bugzilla entry that is identified
> +# from the cover text of a patch.  Note that they will not be
> +# automatically updated if the bugzilla entry is changed after the
> +# pull request has been created.
> +
> +# Labels relating to bugs with a 'regression' marker in the bug summary.
> +:color #bd0000
> +:multi
> +Bug/Regression                       
> {BZ:imatch(\[[^\]]*regression\]).<pr>.summary}
> +
> +# Bug importance (exclusive)
> +:color #f06d00
> +:exclusive
> +Bug/Importance/P1            {BZ:<pr>.importance}                    The 
> bugzilla ticket has priority P1
> +Bug/Importance/P2            {BZ:<pr>.importance}                    The 
> bugzilla ticket has priority P2
> +Bug/Importance/P3            {BZ:<pr>.importance}                    The 
> bugzilla ticket has priority P3
> +Bug/Importance/P4            {BZ:<pr>.importance}                    The 
> bugzilla ticket has priority P4
> +Bug/Importance/P5            {BZ:<pr>.importance}                    The 
> bugzilla ticket has priority P5
> +
> +# Labels relating to bugs with a specific component.  The final
> +# part of the label should be a string match for the component
> +# field of the BZ entry.
> +# (exclusive)
> +:color #fbca04
> +:exclusive
> +Bug/Component/ada            {BZ:<pr>.component}                     The 
> bugzilla component is 'ada'
> +Bug/Component/algol68                {BZ:<pr>.component}                     
> The bugzilla component is 'algol68'
> +Bug/Component/analyzer               {BZ:<pr>.component}                     
> The bugzilla component is 'analyzer'
> +Bug/Component/boehm-gc               {BZ:<pr>.component}                     
> The bugzilla component is 'boehm-gc'
> +Bug/Component/bootstrap              {BZ:<pr>.component}                     
> The bugzilla component is 'bootstrap'
> +Bug/Component/c                      {BZ:<pr>.component}                     
> The bugzilla component is 'c'
> +Bug/Component/c++            {BZ:<pr>.component}                     The 
> bugzilla component is 'c++'
> +Bug/Component/cobol          {BZ:<pr>.component}                     The 
> bugzilla component is 'cobol'
> +Bug/Component/d                      {BZ:<pr>.component}                     
> The bugzilla component is 'd'
> +Bug/Component/debug          {BZ:<pr>.component}                     The 
> bugzilla component is 'debug'
> +Bug/Component/demangler              {BZ:<pr>.component}                     
> The bugzilla component is 'demangler'
> +Bug/Component/diagnostics    {BZ:<pr>.component}                     The 
> bugzilla component is 'diagnostics'
> +Bug/Component/driver         {BZ:<pr>.component}                     The 
> bugzilla component is 'driver'
> +Bug/Component/fortran                {BZ:<pr>.component}                     
> The bugzilla component is 'fortran'
> +Bug/Component/gcov-profile   {BZ:<pr>.component}                     The 
> bugzilla component is 'gcov-profile'
> +Bug/Component/go             {BZ:<pr>.component}                     The 
> bugzilla component is 'go'
> +Bug/Component/ipa            {BZ:<pr>.component}                     The 
> bugzilla component is 'ipa'
> +Bug/Component/jit            {BZ:<pr>.component}                     The 
> bugzilla component is 'jit'
> +Bug/Component/libbacktrace   {BZ:<pr>.component}                     The 
> bugzilla component is 'libbacktrace'
> +Bug/Component/libcc1         {BZ:<pr>.component}                     The 
> bugzilla component is 'libcc1'
> +Bug/Component/libffi         {BZ:<pr>.component}                     The 
> bugzilla component is 'libffi'
> +Bug/Component/libfortran     {BZ:<pr>.component}                     The 
> bugzilla component is 'libfortran'
> +Bug/Component/libgcc         {BZ:<pr>.component}                     The 
> bugzilla component is 'libgcc'
> +Bug/Component/libgdiagnostics        {BZ:<pr>.component}                     
> The bugzilla component is 'libdiagnostics'
> +Bug/Component/libgomp                {BZ:<pr>.component}                     
> The bugzilla component is 'libgomp'
> +Bug/Component/libitm         {BZ:<pr>.component}                     The 
> bugzilla component is 'libitm'
> +Bug/Component/libobjc                {BZ:<pr>.component}                     
> The bugzilla component is 'libobjc'
> +Bug/Component/libquadmath    {BZ:<pr>.component}                     The 
> bugzilla component is 'libquadmath'
> +Bug/Component/libstdc++              {BZ:<pr>.component}                     
> The bugzilla component is 'libstdc++'
> +Bug/Component/lto            {BZ:<pr>.component}                     The 
> bugzilla component is 'lto'
> +Bug/Component/middle-end     {BZ:<pr>.component}                     The 
> bugzilla component is 'middle-end'
> +Bug/Component/modula2                {BZ:<pr>.component}                     
> The bugzilla component is 'modula2'
> +Bug/Component/objc           {BZ:<pr>.component}                     The 
> bugzilla component is 'objc'
> +Bug/Component/other          {BZ:<pr>.component}                     The 
> bugzilla component is 'other'
> +Bug/Component/pch            {BZ:<pr>.component}                     The 
> bugzilla component is 'pch'
> +Bug/Component/pending                {BZ:<pr>.component}                     
> The bugzilla component is 'pending'
> +Bug/Component/plugins                {BZ:<pr>.component}                     
> The bugzilla component is 'plugins'
> +Bug/Component/preprocessor   {BZ:<pr>.component}                     The 
> bugzilla component is 'preprocessor'
> +Bug/Component/regression     {BZ:<pr>.component}                     The 
> bugzilla component is 'regression'
> +Bug/Component/rtl-optimization       {BZ:<pr>.component}                     
> The bugzilla component is 'rtl-optimization'
> +Bug/Component/rust           {BZ:<pr>.component}                     The 
> bugzilla component is 'rust'
> +Bug/Component/sanitizer              {BZ:<pr>.component}                     
> The bugzilla component is 'sanitizer'
> +Bug/Component/sarif-replay   {BZ:<pr>.component}                     The 
> bugzilla component is 'sarif-replay'
> +# Bug/Component/spam         *** This shouldn't be needed.
> +Bug/Component/target         {BZ:<pr>.component}                     The 
> bugzilla component is 'target'
> +Bug/Component/testsuite              {BZ:<pr>.component}                     
> The bugzilla component is 'testsuite'
> +Bug/Component/translation    {BZ:<pr>.component}                     The 
> bugzilla component is 'translation'
> +Bug/Component/tree-optimization      {BZ:<pr>.component}                     
> The bugzilla component is 'tree-optimization'
> +Bug/Component/web            {BZ:<pr>.component}                     The 
> bugzilla component is 'web'
> +
> +## Labels relating to releases (for backporting)
> +:color #5319e7
> +:multi
> +# eg: Release/GCC-<major>
> +Release/GCC-13                       {}                                      
> Consider backporting to GCC-13
> +Release/GCC-14                       {}                                      
> Consider backporting to GCC-14
> +Release/GCC-15                       {}                                      
> Consider backporting to GCC-15
> +
> +## Labels related to components
> +# Note that multiple labels in this section can be applied, based on the 
> files
> +# modified.
> +
> +# Miscellany
> +:color #006b75
> +:multi
> +General/config                       
> {file:&2^/(config/|**/*.(in|ac|m4)|**/configure*)}      Affects configure or 
> autoconf scripts
> +General/contrib                      {file:^/contrib/}                       
> Miscellaneous support scripts
> +General/make                 {file:&2(Makefile(.*)?|*.am)}           Affects 
> Makefiles or automake
> +General/driver                       {file:^/gcc/gcc(-main|-ar)?.(cc|h)}     
> GCC main driver program
> +General/forge                        {file:^/.(forgejo|github)/}             
> Forge and CI infrastructure
> +General/unknown                      {default:}                              
> Catch-all, does not match any other category
> +General/gdbhooks             {file:^/gcc/gdb(hooks.py|init.in)}      Support 
> for debugging GCC with GDB (gdbhooks.py)
> +General/docs                 {file:docs?/}                           Changes 
> to the documentation
> +General/web                  {}                                      Changes 
> to the web pages
> +
> +# Library components
> +:color #009800
> +:multi
> +Library/libada                       {file:^/libada/}                        
> Affects libada
> +Library/libatomic            {file:^/libatomic/}                     Affects 
> libatomic
> +Library/libbacktrace         {file:^/libbacktrace/}                  Affects 
> libbacktrace
> +Library/libcc1                       {file:^/libcc1/}                        
> Affects libcc1
> +Library/libcody                      {file:^/libcody/}                       
> Affects libcody
> +Library/libcpp                       {file:^/libcpp/}                        
> Affects libcpp
> +Library/libdecnumber         {file:^/libdecnumber/}                  Affects 
> libdecnumber
> +Library/libffi                       {file:^/libffi/}                        
> Affects libffi
> +Library/libgcc                       {file:^/libgcc/}                        
> Affects libgcc
> +Library/libgcobol            {file:^/libgcobol/}                     Affects 
> libgcobol
> +Library/libgfortran          {file:^/libgfortran/}                   Affects 
> libgfortran
> +Library/libgm2                       {file:^/libgm2/}                        
> Affects libgm2
> +Library/libgo                        {file:^/libgo/}                         
> Affects libgo
> +Library/libgomp                      {file:^/libgomp/}                       
> Affects libgomp
> +Library/libgrust             {file:^/libgrust/}                      Affects 
> libgrust
> +Library/libiberty            {file:^/(include|libiberty)/}           Affects 
> libiberty
> +Library/libitm                       {file:^/libitm/}                        
> Affects libitm
> +Library/libobjc                      {file:^/libobjc/}                       
> Affects libobjc
> +Library/libphobos            {file:^/libphobos/}                     Affects 
> libphobos
> +Library/libquadmath          {file:^/libquadmath/}                   Affects 
> libquadmath
> +Library/libsanitizer         {file:^/libsanitizer/}                  Affects 
> libsanitizer
> +Library/libssp                       {file:^/libssp/}                        
> Affects libssp
> +Library/libstdc++            {file:^/libstdc++-v3/}                  Affects 
> libstdc++
> +Library/libvtv                       {file:^/libvtv/}                        
> Affects libvtv
> +Library/zlib                 {file:^/zlib/}                          Affects 
> zlib
> +
> +# CPU targets (in compiler or in libraries)
> +
> +:color #70c24a
> +:multi
> +Target/aarch64                       {file:config/aarch64/}                  
> Affects the aarch64 target
> +Target/alpha                 {file:config/alpha/}                    Affects 
> the alpha target
> +Target/arc                   {file:config/arc/}                      Affects 
> the arc target
> +Target/arm                   {file:config/arm/}                      Affects 
> the arm target
> +Target/avr                   {file:config/avr/}                      Affects 
> the avr target
> +Target/bfin                  {file:config/bfin/}                     Affects 
> the bfin target
> +Target/bpf                   {file:config/bpf/}                      Affects 
> the bpf target
> +Target/c6x                   {file:config/c6x/}                      Affects 
> the c6x target
> +Target/cris                  {file:config/cris/}                     Affects 
> the cris target
> +Target/csky                  {file:config/csky/}                     Affects 
> the csky target
> +Target/epiphany                      {file:config/epiphany/}                 
> Affects the epiphany target
> +Target/fr30                  {file:config/fr30/}                     Affects 
> the fr30 target
> +Target/frv                   {file:config/frv/}                      Affects 
> the frv target
> +Target/ft32                  {file:config/ft32/}                     Affects 
> the ft32 target
> +Target/gcn                   {file:config/gcn/}                      Affects 
> the gcn target
> +Target/h8300                 {file:config/h8300/}                    Affects 
> the h8300 target
> +Target/i386                  {file:config/i386/}                     Affects 
> the i386 target
> +Target/ia64                  {file:config/ia64/}                     Affects 
> the ia64 target
> +Target/iq2000                        {file:config/iq2000/}                   
> Affects the iq2000 target
> +Target/lm32                  {file:config/lm32/}                     Affects 
> the lm32 target
> +Target/loongarch             {file:config/loongarch/}                Affects 
> the loongarch target
> +Target/m32c                  {file:config/m32c/}                     Affects 
> the m32c target
> +Target/m32r                  {file:config/m32r/}                     Affects 
> the m32r target
> +Target/m68k                  {file:config/m68k/}                     Affects 
> the m68k target
> +Target/mcore                 {file:config/mcore/}                    Affects 
> the mcore target
> +Target/microblaze            {file:config/microblaze/}               Affects 
> the microblaze target
> +Target/mips                  {file:config/mips/}                     Affects 
> the mips target
> +Target/mmix                  {file:config/mmix/}                     Affects 
> the mmix target
> +Target/mn10300                       {file:config/mn10300/}                  
> Affects the mn1030 target
> +Target/moxie                 {file:config/moxie/}                    Affects 
> the moxie target
> +Target/msp430                        {file:config/msp430/}                   
> Affects the msp430 target
> +Target/nds32                 {file:config/nds32/}                    Affects 
> the nds32 target
> +Target/nvptx                 {file:config/nvptx/}                    Affects 
> the nvptx target
> +Target/or1k                  {file:config/or1k/}                     Affects 
> the or1k target
> +Target/pa                    {file:config/pa/}                       Affects 
> the pa target
> +Target/pdp11                 {file:config/pdp11/}                    Affects 
> the pdp1 target
> +Target/pru                   {file:config/pru/}                      Affects 
> the pru target
> +Target/riscv                 {file:config/riscv/}                    Affects 
> the riscv target
> +Target/rl78                  {file:config/rl78/}                     Affects 
> the rl78 target
> +Target/rs6000                        {file:config/rs6000/}                   
> Affects the rs6000 target
> +Target/rx                    {file:config/rx/}                       Affects 
> the rx target
> +Target/s390                  {file:config/s390/}                     Affects 
> the s390 target
> +Target/sh                    {file:config/sh/}                       Affects 
> the sh target
> +Target/sparc                 {file:config/sparc/}                    Affects 
> the sparc target
> +Target/stormy16                      {file:config/x?stormy16/}               
> Affects the stormy16 target
> +Target/v850                  {file:config/v850/}                     Affects 
> the v850 target
> +Target/vax                   {file:config/vax/}                      Affects 
> the vax target
> +Target/visium                        {file:config/visium/}                   
> Affects the visium target
> +Target/xtensa                        {file:config/xtensa/}                   
> Affects the xtensa target
> +
> +# These are OS ports that have their own subdirectory in GCC's config subdir
> +#Target/mingw                        {file:config/mingw/}                    
> Affects the mingw target
> +#Target/vms                  {file:config/vms/}                      Affects 
> the vms target
> +#Target/vxworks                      {file:config/vxworks/}                  
> Affects the vxworks target
> +
> +# labels specific to an object file format
> +:color #b0ffb0
> +:multi
> +Obj/coff                     {file:&2*coff*}                         Target 
> independent code related to COFF object format
> +Obj/elf                              {file:&2*elf*}                          
> Target independent code related to COFF object format
> +Obj/pe                               {}                                      
> Target independent code related to PE-COFF object format
> +
> +# labels relating to a specific OS
> +:color #b0fff9
> +:multi
> +OS/aix                               {file:rs6000/*aix*}                     
> Affects AIX OS
> +OS/android                   {file:*android*}                        Affects 
> Android OS
> +OS/cygwin                    {file:(config/mingw/|*(cyqwin|mingw)*)} Affects 
> cywin or mingw OSes
> +OS/darwin                    {file:*darwin*}                         Affects 
> Darwin OS
> +OS/dragonfly                 {file:*dragonfly*}                      Affects 
> Dragonfly OS
> +OS/freebsd                   {file:*freebsd*}                        Affects 
> FreeBSD OS
> +OS/hpux                              {file:*hpux*}                           
> Affects HP-UX OS
> +OS/hurd                              {file:*hurd*}                           
> Affects GNU Hurd OS
> +OS/linux                     {file:&2*linux*}                        Affects 
> generic Linux OS
> +OS/netbsd                    {file:*netbsd*}                         Affects 
> NetBSD OS
> +OS/openbsd                   {file:*openbsd*}                        Affects 
> OpenBSD OS
> +OS/rtems                     {file:*rtems*}                          Affects 
> RTEMS OS
> +OS/solaris                   {file:(sol2*|*solaris*)}                Affects 
> Solaris OS
> +OS/vms                               {file:(*[^a-z])?vms*}                   
> Affects VMS OS
> +OS/vxworks                   {file:(config/vxworks/|*vxworks*)}      Affects 
> VxWorks
> +OS/windows                   {file:*windows*}                        Affects 
> Windows OS
> +
> +# Labels relating to compiler mid-end
> +:color #207de5
> +:multi
> +Midend/diagnostics           
> {file:^/gcc/(diagnostics/|text-art/|*diagnostic*|*sarif*)}      Diagnostics 
> framework
> +Midend/rtl                   {file:&3^/gcc/*.(cc|c|h)}               General 
> RTL code
> +Midend/reg-alloc             {file:^/gcc/*(ira|lra)*}                
> Register allocation code
> +Midend/tree                  {file:&2^/gcc/*tree*}                   General 
> tree/gimple code
> +Midend/vect                  {file:^/gcc/*vect*}                     
> Vectorization
> +Midend/cfg                   {file:^/gcc/*cfg*}                      Control 
> Flow Graph framework
> +Midend/ggc                   {file:^/gcc/*ggc*}                      Garbage 
> collection
> +Midend/gen                   {file:^/gcc/gen*.(cc|h)}                
> Generator programs, eg genattr
> +Midend/ipa                   {file:^/gcc/ipa*}                       Inter 
> Procedural Analysis framework
> +Midend/misc                  {file:&4^/gcc/*}                        
> Miscellaneous files that doesn't fit anything else
> +Midend/lto                   {file:^/gcc/(lto/|*lto*)}               Link 
> Time Optimizer code
> +Midend/jit                   {file:^/gcc/jit/}                       JIT 
> (Just-In-Time) code
> +Midend/include                       {file:^/(fixincludes|gcc/ginclude)/}    
> Include headers and fixincludes
> +Midend/dwarf                 {file:^/gcc/**/*dwarf*}                 Dwarf 
> debug information
> +Midend/debug                 {file:^/gcc/*ctf*}                      
> Non-dwarf debug support
> +Midend/gimple                        {file:^/gcc/*gimple*}                   
> General GIMPLE support
> +Midend/gcse                  {file:^/gcc/*gcse*}                     RTL GCSE
> +Midend/jump                  {file:^/gcc/*jump*}                     Jump 
> and branch optimizations
> +Midend/i18n                  {file:^/gcc/(po/|intl.*)}               
> Internationalization and Localization
> +Midend/gcov                  {file:^/gcc/gcov*}                      GCOV 
> code coverage support
> +Midend/opts                  {file:^/gcc/(opt*.awk|*.opt|opt[-s]*)}  Option 
> framework
> +Midend/ranger                        {file:^/gcc/*range*}                    
> Value range framework
> +Midend/rtl-ssa                       {file:^/gcc/rtl-ssa/}                   
> RTL SSA framework
> +Midend/tree-ssa                      {file:^/gcc/(tree|gimple)-ssa*}         
> Tree SSA framework
> +Midend/autofdo                       {file:^/gcc/auto-profile*}              
> AutoFDO framework
> +Midend/combine                       {file:^/gcc/combine*}                   
> Instruction Combiner
> +Midend/reload                        {file:^/gcc/reload*}                    
> Legacy reload pass (obsolete)
> +Midend/pair-fusion           {file:^/gcc/pair-fusion*}               Pair 
> Fusion framework
> +Midend/ivopts                        {file:^/gcc/*loop-iv*}                  
> Loop IVopt framework
> +Midend/loop                  {file:^/gcc/*loop*}                     Loop 
> optimizations
> +Midend/openacc                       {}                                      
> OpenACC framework
> +Midend/openmp                        {file:^/gcc/omp*}                       
> OpenMP framework
> +Midend/analyzer                      {file:^/gcc/analyzer/}                  
> Static analyzer
> +
> +# Labels relating to language frontends
> +:color #0052cc
> +:multi
> +Frontend/ada                 {file:^/gcc/ada/}                       The Ada 
> frontend
> +Frontend/algol68             {file:^/gcc/algol68/}                   The 
> Algol68 frontend
> +Frontend/c                   {file:^/gcc/c(|-family)/}               The C 
> frontend
> +Frontend/c++                 {file:^/gcc/c(p|-family)/}              The C++ 
> frontend
> +Frontend/cobol                       {file:^/gcc/cobol/}                     
> The COBOL frontend
> +Frontend/d                   {file:^/gcc/d/}                         The D 
> frontend
> +Frontend/fortran             {file:^/gcc/fortran/}                   The 
> Fortran frontend
> +Frontend/go                  {file:^/gcc/(go/|godump*)}              The Go 
> frontend
> +Frontend/m2                  {file:^/gcc/m2/}                        The 
> Modula-2 frontend
> +Frontend/objc                        {file:^/gcc/objcp?/}                    
> The Objective-C/-C++ frontends
> +Frontend/rust                        {file:^/gcc/rust/}                      
> The Rust frontend
> +
> +# Labels relating to testsuites (probably incomplete)
> +:color #c544ff
> +:multi
> +Tests/framework                      {file:testsuite/lib/}                   
> Changes to the test framework (testsuite/lib)
> +Tests/torture                        {file:^/gcc/testsuite/*-torture/}       
> Changes to legacy torture tests
> +Tests/target                 {file:^/gcc/testsuite/*.target/}        Changes 
> to target-specific tests (use target/* as well)
> +Tests/lang                   
> {file:^/gcc/testsuite/(gcc|gdc|gfortran|g++|obj|go|cobol|gnat|ada|c-c++|gm2|rust)*/}
>     Changes to language-specific tests
> +Tests/lib                    {file:^/lib*/**/testsuite/}             Changes 
> to top-level library tests (use Library/* as well)
> +Tests/jit                    {file:^/gcc/testsuite/jit.dg/}          Changes 
> to GCC's jit tests
> +Tests/selftest                       {file:^/gcc/testsuite/selftests/}       
> Changes to GCC's self-tests
> +Tests/diagnostics            {file:^/gcc/testsuite/libgdiagnostics.dg/}      
> Changes to GCC's diagnostic framework tests
> +Tests/sarif                  {file:^/gcc/testsuite/sarif-replay.dg/} Changes 
> to GCC's sarif tests
> +
> +## Forge status labels
> +# Labels for runners (exclusive)
> +:color #f6c6c7
> +:exclusive
> +Runner/pending                       {}                                      
> Runner has started, but results not yet available
> +Runner/unresolved            {}                                      Runner 
> failed for an unknown reason)
> +Runner/red                   {}                                      Check 
> failed with errors, code not fit for committing
> +Runner/amber                 {}                                      Check 
> failed with warnings, manually inspect results
> +Runner/green                 {}                                      Checks 
> passed

Reply via email to