Input Needed: Teams for Pull Request Subscriptions

Hi,

We are planning to create GitHub teams for subscribing to pull requests. If you want to subscribe to pull requests, please respond to this thread with a team name and a list of directories that team should ‘watch’. This will help us to get started setting up the subscriptions. If you have a list of directories that don’t logically fit into a specific team, that’s OK, just post the directories any way and we’ll figure out how to handle it.

Here is an example team for reference: Sign in to GitHub · GitHub

1 Like

Please create a pr-subscribers-lldb that covers the lldb subproject.

1 Like

pr-subscribers-llvm-binary-utilities
llvm/{,test/}tools/llvm-{ar,cxxfilt,nm,strings,objdump,objcopy,readobj,size,strings,symbolizer}

/llvm/docs/CommandGuide/llvm-*
/llvm/include/llvm/BinaryFormat/
/llvm/include/llvm/DebugInfo/Symbolize/
/llvm/include/llvm/ObjCopy/
/llvm/include/llvm/Object/
/llvm/lib/BinaryFormat/
/llvm/lib/DebugInfo/Symbolize/
/llvm/lib/ObjCopy/
/llvm/lib/Object/
/llvm/test/Object/
/llvm/test/tools/llvm-ar/
/llvm/test/tools/llvm-cxxfilt/
/llvm/test/tools/llvm-nm/
/llvm/test/tools/llvm-objcopy/
/llvm/test/tools/llvm-objdump/
/llvm/test/tools/llvm-readobj/
/llvm/test/tools/llvm-size/
/llvm/test/tools/llvm-strings/
/llvm/test/tools/llvm-symbolizer/
/llvm/tools/llvm-ar/
/llvm/tools/llvm-cxxfilt/
/llvm/tools/llvm-nm/
/llvm/tools/llvm-objcopy/
/llvm/tools/llvm-objdump/
/llvm/tools/llvm-readobj/
/llvm/tools/llvm-size/
/llvm/tools/llvm-strings/
/llvm/tools/llvm-symbolizer/

(llvm-cov and llvm-dwp and not in the list)

@jh7370

1 Like

pr-subscribers-openmp

openmp/**
clang/lib/Headers/openmp_wrappers/**
clang/test/OpenMP/**
llvm/test/Transforms/OpenMP/**
llvm/include/llvm/Frontend/OpenMP/**
llvm/lib/Frontend/OpenMP/**

Only directories, no files, correct? A simple regex:*openmp*|*OpenMP* would have been better.

2 Likes

pr-subscribers-amdgpu llvm/lib/Target/AMDGPU

Plus some scattered individual files in other places (e.g. llvm/include/llvm/IR/IntrinsicsAMDGPU.td)

1 Like

pr-subscribers-lld-coff
pr-subscribers-lld-elf
pr-subscribers-lld-macho
pr-subscribers-lld-wasm

/lld/**/COFF/ @llvm/pr-subscribers-lld-coff
/lld/**/ELF/ @llvm/pr-subscribers-lld-elf
/lld/**/MachO/ @llvm/pr-subscribers-lld-macho
/lld/**/wasm/ @llvm/pr-subscribers-lld-wasm
/lld/Common/ @llvm/pr-subscribers-lld-coff @llvm/pr-subscribers-lld-elf @llvm/pr-subscribers-lld-macho @llvm/pr-subscribers-lld-wasm
#!/usr/bin/python3
m = {
    "coff": "COFF",
    "elf": "ELF",
    "macho": "MachO",
    "wasm": "wasm",
}
for p in m.keys():
    print(
        f"[pr-subscribers-lld-{p}](https://github.com/orgs/llvm/teams/pr-subscribers-lld-{p})"
    )

print("\n```")
for k, v in m.items():
    print(f"/lld/**/{v}/ @llvm/pr-subscribers-lld-{k}")
print("/lld/Common/", end="")
for k in m.keys():
    print(f" @llvm/pr-subscribers-lld-{k}", end="")
print("\n```")

with open(__file__) as f:
    print("```\n"+f.read()+"```")
2 Likes

pr-subscribers-llvm-lto
pr-subscribers-llvm-mc

/llvm/*/LTO/ @llvm/pr-subscribers-llvm-lto
/llvm/*/Linker/ @llvm/pr-subscribers-llvm-lto
/llvm/tools/gold/ @llvm/pr-subscribers-llvm-lto
/llvm/*/ThinLTO/ @llvm/pr-subscribers-llvm-lto
llvm/lib/Transforms/*/FunctionImport* @llvm/pr-subscribers-llvm-lto
/llvm/*/MC/ @llvm/pr-subscribers-llvm-mc
1 Like

pr-subscribers-clang-driver

/clang/*/Driver/ @llvm/pr-subscribers-clang-driver
1 Like

pr-subscribers-sanitizer

/llvm/lib/Transforms/Instrumentation/*Sanitizer*
/compiler-rt/lib/interception/
/compiler-rt/lib/*san*
/compiler-rt/test/*san*
1 Like

pr-subscribers-xray

/clang/include/clang/Basic/XRay*
/clang/lib/Basic/XRay*
/compiler-rt/*/xray/
/llvm/include/llvm/XRay/
/llvm/lib/XRay/
/llvm/tools/llvm-xray/
/llvm/unittests/XRay/
/compiler-rt/*/xray/
1 Like

clang codegen:

clang/lib/CodeGen
clang/include/clang/CodeGen

There should be a team for each LLVM backend (llvm/lib/Target/TargetName).

Can individual files be added to a team? I’d like, for example, an “clang AArch64” team that covers various bits of clang, but none of those bits are in a distinct directory. Similarly, a “SCEV” team that covers the core bits of ScalarEvolution/ScalarEvolutionExpander.

1 Like

Here is a first-order approximation for a list of “teams” for MLIR, I’ll need to be able to adjust the paths over time: we’ll be able to manage this in a CODEOWNERS file right?

pr-subscribers-mlir mlir/**
pr-subscribers-mlir-core mlir/**/IR/** mlir/**/IR/** mlir/**/Support/**  mlir/**/Parser/**  mlir/**/IR/**  mlir/**/Bytecode/**  mlir/**/AsmParser/** mlir/**/Pass/** mlir/**/tools/**  mlir/**/Reducer/**  mlir/**/Transforms/**  mlir/**/Debug/** mlir/tools/**
pr-subscribers-mlir-ods mlir/**TableGen** mlir/**tblgen**
pr-subscribers-mlir-bindings mlir/**Bindings**
pr-subscribers-mlir-gpu mlir/**GPU**

Dialects:

pr-subscribers-mlir-amdgpu mlir/**/AMDGPU/**
pr-subscribers-mlir-amx mlir/**/AMX/**
pr-subscribers-mlir-affine mlir/**/Affine/**
pr-subscribers-mlir-arith mlir/**/Arith/**
pr-subscribers-mlir-neon mlir/**/ArmNeon/**
pr-subscribers-mlir-sme mlir/**/ArmSME/**
pr-subscribers-mlir-sve mlir/**/ArmSVE/**
pr-subscribers-mlir-async mlir/**/Async/**
pr-subscribers-mlir-bufferization mlir/**/Bufferization/**
pr-subscribers-mlir-complex mlir/**/Complex/**
pr-subscribers-mlir-cf mlir/**/ControlFlow/**
pr-subscribers-mlir-dlti mlir/**/DLTI/**
pr-subscribers-mlir-emitc mlir/**/EmitC/**
pr-subscribers-mlir-func mlir/**/Func/**
pr-subscribers-mlir-async mlir/**GPU**
pr-subscribers-mlir-irdl mlir/**/IRDL/**
pr-subscribers-mlir-index mlir/**/Index/**
pr-subscribers-mlir-llvm mlir/**/**LLVM**
pr-subscribers-mlir-linalg mlir/**linalg**
pr-subscribers-mlir-mlprogram mlir/**/MLProgram/**
pr-subscribers-mlir-math mlir/**/Math/**
pr-subscribers-mlir-memref mlir/**/MemRef/**
pr-subscribers-mlir-nvgpu mlir/**/NVGPU/**
pr-subscribers-mlir-openacc mlir/**/OpenACC/**
pr-subscribers-mlir-openmp mlir/**/OpenMP/**
pr-subscribers-mlir-pdl mlir/**/PDL**
pr-subscribers-mlir-quant mlir/**/Quant/**
pr-subscribers-mlir-scf mlir/**/SCF/**
pr-subscribers-mlir-spirv mlir/**/SPIRV/**
pr-subscribers-mlir-shape mlir/**/Shape/**
pr-subscribers-mlir-sparse mlir/**/SparseTensor/**
pr-subscribers-mlir-tensor mlir/**/Tensor/**
pr-subscribers-mlir-tosa mlir/**/Tosa/**
pr-subscribers-mlir-ub mlir/**/UB/**
pr-subscribers-mlir-vector mlir/**Vector**
pr-subscribers-mlir-execution-engine mlir/**ExecutionEngine**
1 Like

If finer grained subscription is possible:

@pr-subscribers-coroutines

clang/docs/DebuggingCoroutines.rst
clang/lib/Sema/SemaCoroutine.cpp
clang/lib/CodeGen/CGCoroutine.cpp
clang/test/CodeGenCoroutines/*
llvm/docs/Coroutines.rst
llvm/include/llvm/Transforms/Coroutines/*
llvm/lib/Transforms/Coroutines/*
llvm/test/Transforms/Coroutines/*

@pr-subscribers-modules

clang/docs/Modules.rst
clang/docs/PCHInternals.rst
clang/docs/StandardCPlusPlusModules.rst
clang/include/clang/AST/AbstractBasicReader.h
clang/include/clang/AST/AbstractBasicWriter.h
clang/include/clang/AST/AbstractTypeReader.h
clang/include/clang/AST/AbstractTypeWriter.h
clang/include/clang/AST/PropertiesBase.td
clang/include/clang/AST/ODRHash.h
clang/include/clang/AST/TypeProperties.td
clang/include/clang/Basic/Module.h
clang/include/clang/Frontend/PrecompiledPreamble.h
clang/include/clang/Lex/ModuleLoader.h
clang/include/clang/Lex/ModuleMap.h
clang/include/clang/Serialization/*
clang/lib/AST/ODRHash.cpp
clang/lib/AST/StmtProfile.cpp
clang/lib/Basic/Module.cpp
clang/lib/Frontend/ModuleDependencyCollector.cpp
clang/lib/Frontend/PrecompiledPreamble.cpp
clang/lib/Lex/ModuleMap.cpp
clang/lib/Sema/SemaModule.cpp
clang/lib/Serialization/*
clang/test/CXX/module/*
clang/test/Modules/*
clang/unittests/Serialization/*

This is indeed fragmented and trivial.

1 Like

Is it also possible to add blocking reviewers for patches which touch a specific subdirectory? libc++, libc++abi and libunwind currently have blocking reviewer groups, since they are ABI sensitive projects.

Well, @pr-subscribers-clang-tidy obviously…

clang-tools-extra/clang-tidy/
clang-tools-extra/docs/clang-tidy/
clang-tools-extra/test/clang-tidy/

1 Like

The pr-subscribers-llvm-binary-utilities also needs to include the Objcopy library, and probably the Symbolizer library too, since the bulk of llvm-symbolizer and llvm-objcopy are implemented there. Concretely, please add the following to that team:

llvm/DebugInfo/Symbolize/**
llvm/lib/DebugInfo/Symbolize/**
llvm/include/llvm/ObjCopy/**
llvm/lib/ObjCopy/**

Done! llvm/test/Object/ and llvm/include/llvm/Object/ should probably be added as well? Though they also include non-binary-utilities code.

I considered that but was unsure. I’m good with it if you want to do so. If we’re adding Object, we should consider adding BinaryFormat too.

I’m tempted to suggest a yaml2obj/obj2yaml team too, but that should probably be independent. WDYT?

+1

Please create a pr-subscribers-llvm-mca.

It should cover the following directories:

llvm/tools/llvm-mca/**
llvm/include/llvm/MCA/**
llvm/lib/MCA/**

Target specific llvm/test/tools/llvm-mca/ directories should probably be covered by backend owners groups.

1 Like