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