RFD: labels for GCC in the forge
Richard Earnshaw (lists)
Richard.Earnshaw@arm.com
Wed Oct 8 16:41:06 GMT 2025
The gcc-TEST repository in the forge (https://forge.sourceware.org/gcc/gcc-TEST) already has a few labels that were manually created in order to support those participating in the experiment. At present these have to be added manually to each pull request.
But there's an opportunity to do much better than that and to automatically assign a number of labels based on the components that a patch touches.
The attached file is my initial stab (technically it's my second, but I posted that only to the forge mailing list and in reply to another message, so it has probably been lost by now) at such a taxonomy of labels. Once I have a largely finalized list, I expect to use the REST API in the forge to bulk create the labels.
My ultimate goal is that we would be able to map patches to components (most likely determined via a script that mapped affected files to components) and then components to mailing lists and reviewers, so that they would be notified of new pull requests being submitted. This initial mapping should be automated with a runner in the forge, but labels can then be manually changed by reviewers.
I'm looking for feedback on this list since it's much easier to add labels in bulk than it is to change labels once they start being applied to pulls.
Thoughts?
-------------- next part --------------
# Provisional list of labels for the gcc forge:
#
# 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 '#' 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> [<optional description>]
# The description text will be used to populate the description
# field for the label.
## 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
# Bug importance (exclusive)
:color #f06d00
:exclusive
Bug/Importance/P1 The bugzilla ticket has priority P1
Bug/Importance/P2 The bugzilla ticket has priority P2
Bug/Importance/P3 The bugzilla ticket has priority P3
Bug/Importance/P4 The bugzilla ticket has priority P4
Bug/Importance/P5 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 The bugzilla component is 'ada'
Bug/Component/algol68 The bugzilla component is 'algol68'
Bug/Component/analyzer The bugzilla component is 'analyzer'
Bug/Component/boehm-gc The bugzilla component is 'boehm-gc'
Bug/Component/bootstrap The bugzilla component is 'bootstrap'
Bug/Component/c The bugzilla component is 'c'
Bug/Component/c++ The bugzilla component is 'c++'
Bug/Component/cobol The bugzilla component is 'cobol'
Bug/Component/d The bugzilla component is 'd'
Bug/Component/debug The bugzilla component is 'debug'
Bug/Component/demangler The bugzilla component is 'demangler'
Bug/Component/diagnostics The bugzilla component is 'diagnostics'
Bug/Component/driver The bugzilla component is 'driver'
Bug/Component/fortran The bugzilla component is 'fortran'
Bug/Component/gcov-profile The bugzilla component is 'gcov-profile'
Bug/Component/go The bugzilla component is 'go'
Bug/Component/ipa The bugzilla component is 'ipa'
Bug/Component/jit The bugzilla component is 'jit'
Bug/Component/libbacktrace The bugzilla component is 'libbacktrace'
Bug/Component/libcc1 The bugzilla component is 'libcc1'
Bug/Component/libffi The bugzilla component is 'libffi'
Bug/Component/libfortran The bugzilla component is 'libfortran'
Bug/Component/libgcc The bugzilla component is 'libgcc'
Bug/Component/libgdiagnostics The bugzilla component is 'libdiagnostics'
Bug/Component/libgomp The bugzilla component is 'libgomp'
Bug/Component/libitm The bugzilla component is 'libitm'
Bug/Component/libobjc The bugzilla component is 'libobjc'
Bug/Component/libquadmath The bugzilla component is 'libquadmath'
Bug/Component/libstdc++ The bugzilla component is 'libstdc++'
Bug/Component/lto The bugzilla component is 'lto'
Bug/Component/middle-end The bugzilla component is 'middle-end'
Bug/Component/modula2 The bugzilla component is 'modula2'
Bug/Component/objc The bugzilla component is 'objc'
Bug/Component/other The bugzilla component is 'other'
Bug/Component/pch The bugzilla component is 'pch'
Bug/Component/pending The bugzilla component is 'pending'
Bug/Component/plugins The bugzilla component is 'plugins'
Bug/Component/preprocessor The bugzilla component is 'preprocessor'
Bug/Component/regression The bugzilla component is 'regression'
Bug/Component/rtl-optimization The bugzilla component is 'rtl-optimization'
Bug/Component/rust The bugzilla component is 'rust'
Bug/Component/sanitizer The bugzilla component is 'sanitizer'
Bug/Component/sarif-replay The bugzilla component is 'sarif-replay'
# Bug/Component/spam *** This shouldn't be needed.
Bug/Component/target The bugzilla component is 'target'
Bug/Component/testsuite The bugzilla component is 'testsuite'
Bug/Component/translation The bugzilla component is 'translation'
Bug/Component/tree-optimization The bugzilla component is 'tree-optimization'
Bug/Component/web 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 Affects configure or autoconf scripts
General/make Affects Makefiles or automake
General/unknown Catch-all, does not match any other category
General/gdbhooks Support for debugging GCC with GDB (gdbhooks.py)
# Library components
:color #009800
:multi
Library/libada Affects libada
Library/libatomic Affects libatomic
Library/libcc1 Affects libcc1
Library/libcody Affects libcody
Library/libcpp Affects libcpp
Library/libdecnumber Affects libdecnumber
Library/libgcc Affects libgcc
Library/libgcobol Affects libgcobol
Library/libgfortran Affects libgfortran
Library/libgm2 Affects libgm2
Library/libgo Affects libgo
Library/libgomp Affects libgomp
Library/libgrust Affects libgrust
Library/libiberty Affects libiberty
Library/libitm Affects libitm
Library/libobjc Affects libobjc
Library/libphobos Affects libphobos
Library/libquadmath Affects libquadmath
Library/libsanitizer Affects libsanitizer
Library/libssp Affects libssp
Library/libstdc++ Affects libstdc++
Library/libvtv Affects libvtv
# CPU targets (in compiler or in libraries)
:color #70c24a
:multi
Target/aarch64 Affects the aarch64 target
Target/alpha Affects the alpha target
Target/arc Affects the arc target
Target/arm Affects the arm target
Target/avr Affects the avr target
Target/bfin Affects the bfin target
Target/bpf Affects the bpf target
Target/c6x Affects the c6x target
Target/cris Affects the cris target
Target/csky Affects the csky target
Target/epiphany Affects the epiphany target
Target/fr30 Affects the fr30 target
Target/frv Affects the frv target
Target/ft32 Affects the ft32 target
Target/gcn Affects the gcn target
Target/h8300 Affects the h8300 target
Target/i386 Affects the i386 target
Target/ia64 Affects the ia64 target
Target/iq2000 Affects the iq2000 target
Target/lm32 Affects the lm32 target
Target/loongarch Affects the loongarch target
Target/m32c Affects the m32c target
Target/m32r Affects the m32r target
Target/m68k Affects the m68k target
Target/mcore Affects the mcore target
Target/microblaze Affects the microblaze target
Target/mingw Affects the mingw target
Target/mips Affects the mips target
Target/mmix Affects the mmix target
Target/mn10300 Affects the mn1030 target
Target/moxie Affects the moxie target
Target/msp430 Affects the msp430 target
Target/nds32 Affects the nds32 target
Target/nvptx Affects the nvptx target
Target/or1k Affects the or1k target
Target/pa Affects the pa target
Target/pdp11 Affects the pdp1 target
Target/pru Affects the pru target
Target/riscv Affects the riscv target
Target/rl78 Affects the rl78 target
Target/rs6000 Affects the rs6000 target
Target/rx Affects the rx target
Target/s390 Affects the s390 target
Target/sh Affects the sh target
Target/sparc Affects the sparc target
Target/stormy16 Affects the stormy16 target
Target/v850 Affects the v850 target
Target/vax Affects the vax target
Target/visium Affects the visium target
Target/vms Affects the vms target
Target/vxworks Affects the vxworks target
Target/xtensa Affects the xtensa target
# labels specific to an object file format
:color #b0ffb0
:multi
Obj/coff Target independent code related to COFF object format
Obj/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/darwin Affects Darwin OS
OS/dragonfly Affects Dragonfly OS
OS/freebsd Affects FreeBSD OS
OS/hpux Affects HP-UX OS
OS/linux Affects generic Linux OS
OS/netbsd Affects NetBSD OS
OS/openbsd Affects OpenBSD OS
OS/solaris Affects Solaris OS
OS/windows Affects Windows OS
# Labels relating to compiler mid-end
:color #207de5
:multi
midend/diagnostics Diagnostics framework
midend/rtl General RTL code
midend/reg-alloc Register allocation code
midend/tree General tree/gimple code
midend/vect Vectorization
midend/gc Garbage collection
midend/gen Generator programs, eg genattr
midend/misc Miscellaneous midend code that doesn't fit anything else
midend/lto Link Time Optimizer code
midend/jit JIT (Just-In-Time) code
midend/include Include headers and fixincludes
midend/dwarf Dwarf debug information
midend/debug Non-dwarf debug support
midend/gimple General GIMPLE support
midend/gcse RTL GCSE
midend/jump Jump and branch optimizations
midend/i18n Internationalization and Localization
midend/gcov GCOV code coverage support
midend/opts Option framework
midend/ranger Value range framework
midend/tree-ssa Tree SSA framework
midend/autofdo AutoFDO framework
midend/combine Instruction Combiner
midend/reload Legacy reload pass (obsolete)
midend/pair-fusion Pair Fusion framework
midend/ivopts Loop IVopt framework
midend/loop Loop optimizations
midend/openacc OpenACC framework
midend/openmp OpenMP framework
midend/analyzer Static analyzer
# Labels relating to language frontends
:color #0052cc
:multi
frontend/ada The Ada frontend
frontend/algol68 The Algol68 frontend
frontend/c The C frontend
frontend/c++ The C++ frontend
frontend/cobol The COBOL frontend
frontend/d The D frontend
frontend/fortran The Fortran frontend
frontend/go The Go frontend
frontend/m2 The Modula-2 frontend
frontend/objc The Objective-C frontend
frontend/rust The Rust frontend
# Labels relating to testsuites (probably incomplete)
:color #c544ff
:multi
Tests/framework Changes to the test framework (testsuite/lib)
Tests/torture Changes to legacy torture tests
Tests/target Changes to target-specific tests (use target/* as well)
Tests/lang Changes to language-specific tests (use lang/* as well)
Tests/lib Changes to top-level library tests (use Library/* as well)
## 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
More information about the Gcc
mailing list