[llvm] Revise commit access policy (PR #207272)

Reid Kleckner via llvm-commits llvm-commits at lists.llvm.org
Tue Sep 1 09:47:21 PDT 2026


https://github.com/rnk updated https://github.com/llvm/llvm-project/pull/207272

>From 918412b93aebb439756efec98fd30a968de83226 Mon Sep 17 00:00:00 2001
From: Reid Kleckner <rkleckner at nvidia.com>
Date: Wed, 1 Jul 2026 22:18:07 +0000
Subject: [PATCH 1/2] [docs][github] Split commit access into committer and
 reviewer tiers

Revise the contributor access model following the "Revisiting commit access
criteria 2026" RFC. Today's single committer role is split into two tiers,
implemented entirely with GitHub's native branch ruleset and CODEOWNERS
primitives:

- Committer: entry-level Write access, granted liberally through an issue form
  that records agreement to the project policies. Committers can push user
  branches and press merge, but the ruleset on main requires code-owner
  approval, so they land changes only after a reviewer approves. They are not
  code owners and their own approval does not satisfy the requirement.
- Reviewer: the same Write role, plus code ownership of all paths in CODEOWNERS
  (so a reviewer's approval satisfies the required review) and sole membership
  on the ruleset bypass list, in "for pull requests only" mode, so they can
  self-merge and land urgent cross-cutting fixes. No one can push to main
  directly.

Changes:
- llvm/docs/DeveloperPolicy.md: rewrite Obtaining Commit Access, add Becoming a
  Reviewer and Merging Pull Requests, grounded in the Write role, rulesets, and
  the bypass list.
- .github/CODEOWNERS: add a "* @llvm/llvm-reviewers" default rule and append the
  reviewers team to every area line (last-match-wins requires it on every rule
  for the approval requirement to hold everywhere); rewrite the header to
  explain the dual ownership / auto-assignment purpose.
- Add .github/ISSUE_TEMPLATE/commit-access-request.yml and
  reviewer-access-request.yml; drop the old triager template. Wire up the
  infra:reviewer-access-request label in new-issues-labeler.yml and config.yml.

Current committers are grandfathered into the reviewers team so approval
capacity does not drop. Team creation, the ruleset, and label creation are
org-admin actions performed out of band.
---
 .github/CODEOWNERS                            | 298 +++++++++---------
 .../ISSUE_TEMPLATE/commit-access-request.yml  |  72 +++++
 .github/ISSUE_TEMPLATE/config.yml             |   3 +
 .../reviewer-access-request.yml               |  69 ++++
 .github/new-issues-labeler.yml                |   3 +
 llvm/docs/DeveloperPolicy.md                  | 242 +++++++++-----
 6 files changed, 467 insertions(+), 220 deletions(-)
 create mode 100644 .github/ISSUE_TEMPLATE/commit-access-request.yml
 create mode 100644 .github/ISSUE_TEMPLATE/config.yml
 create mode 100644 .github/ISSUE_TEMPLATE/reviewer-access-request.yml

diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index 90c7905672abd..d23693026052a 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -1,220 +1,236 @@
-# This file lists reviewers that are auto-assigned when a pull request modifies
-# certain files or directories. If you add yourself to this file, you commit to
-# reviewing a large fraction of pull requests in the relevant area.
+# This file serves two purposes:
 #
-# The GitHub "code owners" mechanism is used exclusively to auto-assign
-# reviewers and does not carry significance beyond that. It is not necessary
-# to receive an approval from a "code owner" in particular -- any LLVM project
-# member can approve pull requests.
+# 1. It assigns ownership of all paths to the LLVM reviewers team
+#    (@llvm/llvm-reviewers). Together with the "require review from code
+#    owners" branch rule, this means a pull request must be approved by a
+#    member of the reviewers team before it can be merged. Reviewers may
+#    bypass this requirement for their own pull requests as described in the
+#    developer policy:
+#    https://llvm.org/docs/DeveloperPolicy.html#merging-pull-requests
+#
+#    For any given file, only the *last* matching rule in this file determines
+#    its owners, so @llvm/llvm-reviewers must be listed on every rule for the
+#    approval requirement to apply everywhere.
+#
+# 2. It lists reviewers that are auto-assigned when a pull request modifies
+#    certain files or directories. If you add yourself to this file, you
+#    commit to reviewing a large fraction of pull requests in the relevant
+#    area. An approval from an auto-assigned reviewer who is not a member of
+#    the reviewers team does not satisfy the code owner review requirement.
 #
 # This is independent of LLVM's own "maintainer" concept.
 # See https://llvm.org/docs/DeveloperPolicy.html#maintainers as well as the
 # Maintainers.md files in the the respective subproject directories.
 
-/libc/ @llvm/reviewers-libc
-/libcxx/ @llvm/reviewers-libcxx
-/libcxxabi/ @llvm/reviewers-libcxxabi
-/libunwind/ @llvm/reviewers-libunwind
-
-/llvm/lib/Analysis/BasicAliasAnalysis.cpp @nikic
-/llvm/lib/Analysis/HashRecognize.cpp @artagnon @pfusik
-/llvm/lib/Analysis/InstructionSimplify.cpp @nikic
-/llvm/lib/Analysis/LazyValueInfo.cpp @nikic
-/llvm/lib/Analysis/ScalarEvolution.cpp @nikic
-/llvm/lib/Analysis/ValueTracking.cpp @nikic
-/llvm/lib/IR/ConstantRange.cpp @nikic
-/llvm/lib/IR/Core.cpp @nikic
-/llvm/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp @nikic
-/llvm/lib/Transforms/Scalar/MemCpyOptimizer.cpp @nikic
-/llvm/lib/Transforms/InstCombine/ @nikic
+# Default rule: the reviewers team owns all paths. The rules below override
+# this one for reviewer auto-assignment, so each of them must also list
+# @llvm/llvm-reviewers.
+* @llvm/llvm-reviewers
+
+/libc/ @llvm/reviewers-libc @llvm/llvm-reviewers
+/libcxx/ @llvm/reviewers-libcxx @llvm/llvm-reviewers
+/libcxxabi/ @llvm/reviewers-libcxxabi @llvm/llvm-reviewers
+/libunwind/ @llvm/reviewers-libunwind @llvm/llvm-reviewers
+
+/llvm/lib/Analysis/BasicAliasAnalysis.cpp @nikic @llvm/llvm-reviewers
+/llvm/lib/Analysis/HashRecognize.cpp @artagnon @pfusik @llvm/llvm-reviewers
+/llvm/lib/Analysis/InstructionSimplify.cpp @nikic @llvm/llvm-reviewers
+/llvm/lib/Analysis/LazyValueInfo.cpp @nikic @llvm/llvm-reviewers
+/llvm/lib/Analysis/ScalarEvolution.cpp @nikic @llvm/llvm-reviewers
+/llvm/lib/Analysis/ValueTracking.cpp @nikic @llvm/llvm-reviewers
+/llvm/lib/IR/ConstantRange.cpp @nikic @llvm/llvm-reviewers
+/llvm/lib/IR/Core.cpp @nikic @llvm/llvm-reviewers
+/llvm/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp @nikic @llvm/llvm-reviewers
+/llvm/lib/Transforms/Scalar/MemCpyOptimizer.cpp @nikic @llvm/llvm-reviewers
+/llvm/lib/Transforms/InstCombine/ @nikic @llvm/llvm-reviewers
 
 # AMDGPU buffer pointer lowerings
-/llvm/lib/Target/AMDGPU/AMDGPULowerBufferFatPointers.cpp @krzysz00
+/llvm/lib/Target/AMDGPU/AMDGPULowerBufferFatPointers.cpp @krzysz00 @llvm/llvm-reviewers
 
-/clang/test/CXX/drs/ @Endilll
-/clang/www/cxx_dr_status.html @Endilll
-/clang/www/make_cxx_dr_status @Endilll
+/clang/test/CXX/drs/ @Endilll @llvm/llvm-reviewers
+/clang/www/cxx_dr_status.html @Endilll @llvm/llvm-reviewers
+/clang/www/make_cxx_dr_status @Endilll @llvm/llvm-reviewers
 
-/clang/include/clang/CIR @lanza @bcardosolopes @xlauko @andykaylor
-/clang/lib/CIR @lanza @bcardosolopes @xlauko @andykaylor
-/clang/lib/CIR/CodeGen/CIRGenBuiltinAArch64.cpp @lanza @bcardosolopes @xlauko @andykaylor @banach-space
-/clang/tools/cir-* @lanza @bcardosolopes @xlauko @andykaylor
+/clang/include/clang/CIR @lanza @bcardosolopes @xlauko @andykaylor @llvm/llvm-reviewers
+/clang/lib/CIR @lanza @bcardosolopes @xlauko @andykaylor @llvm/llvm-reviewers
+/clang/lib/CIR/CodeGen/CIRGenBuiltinAArch64.cpp @lanza @bcardosolopes @xlauko @andykaylor @banach-space @llvm/llvm-reviewers
+/clang/tools/cir-* @lanza @bcardosolopes @xlauko @andykaylor @llvm/llvm-reviewers
 
-/lldb/ @JDevlieghere
-/lldb/**/*FreeBSD* @mchoo7
+/lldb/ @JDevlieghere @llvm/llvm-reviewers
+/lldb/**/*FreeBSD* @mchoo7 @llvm/llvm-reviewers
 
 # MLIR Interfaces.
-/mlir/include/mlir/Interfaces/TilingInterface.* @MaheshRavishankar @nicolasvasilache
-/mlir/lib/Interfaces/TilingInterface.* @MaheshRavishankar @nicolasvasilache
-/mlir/include/mlir/Interfaces/ValueBoundsOpInterface.* @matthias-springer
-/mlir/lib/Interfaces/ValueBoundsOpInterface.* @matthias-springer
-/mlir/**/ValueBoundsOpInterfaceImpl.* @matthias-springer
-/mlir/include/mlir/Interfaces/RuntimeVerifiableOpInterface.* @matthias-springer
-/mlir/lib/Interfaces/RuntimeVerifiableOpInterface.* @matthias-springer
-/mlir/**/RuntimeVerifiableOpInterfaceImpl.* @matthias-springer
-/mlir/include/mlir/Interfaces/SubsetOpInterface.* @matthias-springer
-/mlir/lib/Interfaces/SubsetOpInterface.* @matthias-springer
-/mlir/**/SubsetOpInterfaceImpl.* @matthias-springer
-/mlir/include/mlir/Interfaces/DestinationStyleOpInterface.* @matthias-springer
-/mlir/lib/Interfaces/DestinationStyleOpInterface.* @matthias-springer
-/mlir/**/Interfaces/ControlFlowInterfaces.* @matthias-springer
+/mlir/include/mlir/Interfaces/TilingInterface.* @MaheshRavishankar @nicolasvasilache @llvm/llvm-reviewers
+/mlir/lib/Interfaces/TilingInterface.* @MaheshRavishankar @nicolasvasilache @llvm/llvm-reviewers
+/mlir/include/mlir/Interfaces/ValueBoundsOpInterface.* @matthias-springer @llvm/llvm-reviewers
+/mlir/lib/Interfaces/ValueBoundsOpInterface.* @matthias-springer @llvm/llvm-reviewers
+/mlir/**/ValueBoundsOpInterfaceImpl.* @matthias-springer @llvm/llvm-reviewers
+/mlir/include/mlir/Interfaces/RuntimeVerifiableOpInterface.* @matthias-springer @llvm/llvm-reviewers
+/mlir/lib/Interfaces/RuntimeVerifiableOpInterface.* @matthias-springer @llvm/llvm-reviewers
+/mlir/**/RuntimeVerifiableOpInterfaceImpl.* @matthias-springer @llvm/llvm-reviewers
+/mlir/include/mlir/Interfaces/SubsetOpInterface.* @matthias-springer @llvm/llvm-reviewers
+/mlir/lib/Interfaces/SubsetOpInterface.* @matthias-springer @llvm/llvm-reviewers
+/mlir/**/SubsetOpInterfaceImpl.* @matthias-springer @llvm/llvm-reviewers
+/mlir/include/mlir/Interfaces/DestinationStyleOpInterface.* @matthias-springer @llvm/llvm-reviewers
+/mlir/lib/Interfaces/DestinationStyleOpInterface.* @matthias-springer @llvm/llvm-reviewers
+/mlir/**/Interfaces/ControlFlowInterfaces.* @matthias-springer @llvm/llvm-reviewers
 
 # AMDGPU and ROCDL dialects in MLIR.
-/mlir/include/mlir/Dialect/AMDGPU @krzysz00 @kuhar
-/mlir/lib/Dialect/AMDGPU @krzysz00 @kuhar
-/mlir/lib/Conversion/*AMDGPU* @krzysz00 @kuhar
-/mlir/lib/Conversion/*ToROCDL @krzysz00 @kuhar
-/mlir/include/mlir/Dialect/LLVMIR/ROCDL* @krzysz00 @kuhar
+/mlir/include/mlir/Dialect/AMDGPU @krzysz00 @kuhar @llvm/llvm-reviewers
+/mlir/lib/Dialect/AMDGPU @krzysz00 @kuhar @llvm/llvm-reviewers
+/mlir/lib/Conversion/*AMDGPU* @krzysz00 @kuhar @llvm/llvm-reviewers
+/mlir/lib/Conversion/*ToROCDL @krzysz00 @kuhar @llvm/llvm-reviewers
+/mlir/include/mlir/Dialect/LLVMIR/ROCDL* @krzysz00 @kuhar @llvm/llvm-reviewers
 
 # Arith dialect in MLIR.
-/mlir/include/mlir/Dialect/Arith @kuhar
-/mlir/lib/Dialect/Arith @kuhar
-/mlir/lib/Conversion/ArithTo* @kuhar
+/mlir/include/mlir/Dialect/Arith @kuhar @llvm/llvm-reviewers
+/mlir/lib/Dialect/Arith @kuhar @llvm/llvm-reviewers
+/mlir/lib/Conversion/ArithTo* @kuhar @llvm/llvm-reviewers
 
 # XeGPU and XeVM dialects in MLIR.
-/mlir/include/mlir/Dialect/XeGPU @charithaintc @Jianhui-Li
-/mlir/lib/Dialect/XeGPU @charithaintc @Jianhui-Li
-/mlir/lib/Conversion/*XeGPU* @charithaintc @Jianhui-Li
-/mlir/include/mlir/Dialect/XeGPU/Transforms @charithaintc @Jianhui-Li
-/mlir/lib/Dialect/XeGPU/Transforms @charithaintc @Jianhui-Li
-/mlir/include/mlir/Dialect/XeGPU/TransformOps @charithaintc @Jianhui-Li @tkarna
-/mlir/lib/Dialect/XeGPU/TransformOps @charithaintc @Jianhui-Li @tkarna
-/mlir/include/mlir/Dialect/LLVMIR/XeVM* @silee2 @akroviakov
-/mlir/lib/Dialect/LLVMIR/IR/XeVM @silee2 @akroviakov
-/mlir/lib/Conversion/*XeVM* @silee2 @akroviakov
+/mlir/include/mlir/Dialect/XeGPU @charithaintc @Jianhui-Li @llvm/llvm-reviewers
+/mlir/lib/Dialect/XeGPU @charithaintc @Jianhui-Li @llvm/llvm-reviewers
+/mlir/lib/Conversion/*XeGPU* @charithaintc @Jianhui-Li @llvm/llvm-reviewers
+/mlir/include/mlir/Dialect/XeGPU/Transforms @charithaintc @Jianhui-Li @llvm/llvm-reviewers
+/mlir/lib/Dialect/XeGPU/Transforms @charithaintc @Jianhui-Li @llvm/llvm-reviewers
+/mlir/include/mlir/Dialect/XeGPU/TransformOps @charithaintc @Jianhui-Li @tkarna @llvm/llvm-reviewers
+/mlir/lib/Dialect/XeGPU/TransformOps @charithaintc @Jianhui-Li @tkarna @llvm/llvm-reviewers
+/mlir/include/mlir/Dialect/LLVMIR/XeVM* @silee2 @akroviakov @llvm/llvm-reviewers
+/mlir/lib/Dialect/LLVMIR/IR/XeVM @silee2 @akroviakov @llvm/llvm-reviewers
+/mlir/lib/Conversion/*XeVM* @silee2 @akroviakov @llvm/llvm-reviewers
 
 # Bufferization Dialect in MLIR.
-/mlir/include/mlir/Dialect/Bufferization @matthias-springer
-/mlir/lib/Dialect/Bufferization @matthias-springer
-/mlir/**/BufferizableOpInterfaceImpl.* @matthias-springer
-/mlir/Dialect/*/Transforms/Bufferize.cpp @matthias-springer
+/mlir/include/mlir/Dialect/Bufferization @matthias-springer @llvm/llvm-reviewers
+/mlir/lib/Dialect/Bufferization @matthias-springer @llvm/llvm-reviewers
+/mlir/**/BufferizableOpInterfaceImpl.* @matthias-springer @llvm/llvm-reviewers
+/mlir/Dialect/*/Transforms/Bufferize.cpp @matthias-springer @llvm/llvm-reviewers
 
 # DLTI Dialect in MLIR
-/mlir/**/Dialect/DLTI @rolfmorel
-/mlir/**/DataLayoutInterfaces.* @rolfmorel
+/mlir/**/Dialect/DLTI @rolfmorel @llvm/llvm-reviewers
+/mlir/**/DataLayoutInterfaces.* @rolfmorel @llvm/llvm-reviewers
 
 # Linalg Dialect in MLIR.
-/mlir/include/mlir/Dialect/Linalg @dcaballe @nicolasvasilache @rengolin
-/mlir/lib/Dialect/Linalg @dcaballe @nicolasvasilache @rengolin
-/mlir/lib/Dialect/Linalg/Transforms/DecomposeLinalgOps.cpp @MaheshRavishankar @nicolasvasilache
-/mlir/lib/Dialect/Linalg/Transforms/DropUnitDims.cpp @dcaballe @MaheshRavishankar @nicolasvasilache
-/mlir/lib/Dialect/Linalg/Transforms/ElementwiseOpFusion.cpp @MaheshRavishankar @nicolasvasilache
-/mlir/lib/Dialect/Linalg/Transforms/DataLayoutPropagation.cpp @nicolasvasilache
-/mlir/lib/Dialect/Linalg/Transforms/Transforms.cpp @dcaballe @nicolasvasilache
-/mlir/lib/Dialect/Linalg/Transforms/Vectorization.cpp @banach-space @dcaballe @nicolasvasilache @Groverkss
+/mlir/include/mlir/Dialect/Linalg @dcaballe @nicolasvasilache @rengolin @llvm/llvm-reviewers
+/mlir/lib/Dialect/Linalg @dcaballe @nicolasvasilache @rengolin @llvm/llvm-reviewers
+/mlir/lib/Dialect/Linalg/Transforms/DecomposeLinalgOps.cpp @MaheshRavishankar @nicolasvasilache @llvm/llvm-reviewers
+/mlir/lib/Dialect/Linalg/Transforms/DropUnitDims.cpp @dcaballe @MaheshRavishankar @nicolasvasilache @llvm/llvm-reviewers
+/mlir/lib/Dialect/Linalg/Transforms/ElementwiseOpFusion.cpp @MaheshRavishankar @nicolasvasilache @llvm/llvm-reviewers
+/mlir/lib/Dialect/Linalg/Transforms/DataLayoutPropagation.cpp @nicolasvasilache @llvm/llvm-reviewers
+/mlir/lib/Dialect/Linalg/Transforms/Transforms.cpp @dcaballe @nicolasvasilache @llvm/llvm-reviewers
+/mlir/lib/Dialect/Linalg/Transforms/Vectorization.cpp @banach-space @dcaballe @nicolasvasilache @Groverkss @llvm/llvm-reviewers
 
 # MemRef Dialect in MLIR.
-/mlir/lib/Dialect/MemRef/Transforms/EmulateNarrowType.cpp @MaheshRavishankar @nicolasvasilache
+/mlir/lib/Dialect/MemRef/Transforms/EmulateNarrowType.cpp @MaheshRavishankar @nicolasvasilache @llvm/llvm-reviewers
 
 # Vector Dialect in MLIR.
-/mlir/**/*Neon* @banach-space @dcaballe @nicolasvasilache
-/mlir/**/*SME* @banach-space @dcaballe @nicolasvasilache
-/mlir/**/*SVE* @banach-space @dcaballe @nicolasvasilache
-/mlir/**/*VectorInterfaces* @dcaballe @nicolasvasilache
-/mlir/**/*VectorToSCF* @banach-space @dcaballe @matthias-springer @nicolasvasilache
-/mlir/**/*VectorToLLVM* @banach-space @dcaballe @nicolasvasilache
-/mlir/**/*X86* @aartbik @dcaballe @nicolasvasilache @adam-smnk
-/mlir/include/mlir/Dialect/Vector @banach-space @dcaballe @nicolasvasilache @Groverkss
-/mlir/include/mlir/Dialect/Vector/IR @kuhar
-/mlir/lib/Dialect/Vector @banach-space @dcaballe @nicolasvasilache @Groverkss
-/mlir/lib/Dialect/Vector/Transforms/* @banach-space @dcaballe @nicolasvasilache
-/mlir/lib/Dialect/Vector/Transforms/VectorEmulateNarrowType.cpp @banach-space @dcaballe @MaheshRavishankar @nicolasvasilache
-/mlir/**/*EmulateNarrowType* @dcaballe
+/mlir/**/*Neon* @banach-space @dcaballe @nicolasvasilache @llvm/llvm-reviewers
+/mlir/**/*SME* @banach-space @dcaballe @nicolasvasilache @llvm/llvm-reviewers
+/mlir/**/*SVE* @banach-space @dcaballe @nicolasvasilache @llvm/llvm-reviewers
+/mlir/**/*VectorInterfaces* @dcaballe @nicolasvasilache @llvm/llvm-reviewers
+/mlir/**/*VectorToSCF* @banach-space @dcaballe @matthias-springer @nicolasvasilache @llvm/llvm-reviewers
+/mlir/**/*VectorToLLVM* @banach-space @dcaballe @nicolasvasilache @llvm/llvm-reviewers
+/mlir/**/*X86* @aartbik @dcaballe @nicolasvasilache @adam-smnk @llvm/llvm-reviewers
+/mlir/include/mlir/Dialect/Vector @banach-space @dcaballe @nicolasvasilache @Groverkss @llvm/llvm-reviewers
+/mlir/include/mlir/Dialect/Vector/IR @kuhar @llvm/llvm-reviewers
+/mlir/lib/Dialect/Vector @banach-space @dcaballe @nicolasvasilache @Groverkss @llvm/llvm-reviewers
+/mlir/lib/Dialect/Vector/Transforms/* @banach-space @dcaballe @nicolasvasilache @llvm/llvm-reviewers
+/mlir/lib/Dialect/Vector/Transforms/VectorEmulateNarrowType.cpp @banach-space @dcaballe @MaheshRavishankar @nicolasvasilache @llvm/llvm-reviewers
+/mlir/**/*EmulateNarrowType* @dcaballe @llvm/llvm-reviewers
 
 # Presburger library in MLIR
-/mlir/**/*Presburger* @Groverkss @Superty
+/mlir/**/*Presburger* @Groverkss @Superty @llvm/llvm-reviewers
 
 # Tensor Dialect in MLIR.
-/mlir/lib/Dialect/Tensor/IR/TensorTilingInterfaceImpl.cpp @nicolasvasilache
-/mlir/lib/Dialect/Tensor/Transforms/* @nicolasvasilache
+/mlir/lib/Dialect/Tensor/IR/TensorTilingInterfaceImpl.cpp @nicolasvasilache @llvm/llvm-reviewers
+/mlir/lib/Dialect/Tensor/Transforms/* @nicolasvasilache @llvm/llvm-reviewers
 
 # Transform Dialect in MLIR.
-/mlir/include/mlir/Dialect/Transform/* @ftynse @nicolasvasilache @rolfmorel
-/mlir/lib/Dialect/Transform/* @ftynse @nicolasvasilache @rolfmorel
-/mlir/**/*TransformOps* @ftynse @nicolasvasilache @rolfmorel
+/mlir/include/mlir/Dialect/Transform/* @ftynse @nicolasvasilache @rolfmorel @llvm/llvm-reviewers
+/mlir/lib/Dialect/Transform/* @ftynse @nicolasvasilache @rolfmorel @llvm/llvm-reviewers
+/mlir/**/*TransformOps* @ftynse @nicolasvasilache @rolfmorel @llvm/llvm-reviewers
 
 # SPIR-V Dialect in MLIR.
-/mlir/**/SPIRV/ @antiagainst @kuhar @IgWod
-/mlir/**/SPIRVTo*/ @antiagainst @kuhar @IgWod
-/mlir/**/*ToSPIRV/ @antiagainst @kuhar @IgWod
-/mlir/tools/mlir-tblgen/SPIRVUtilsGen.cpp @antiagainst @kuhar @IgWod
+/mlir/**/SPIRV/ @antiagainst @kuhar @IgWod @llvm/llvm-reviewers
+/mlir/**/SPIRVTo*/ @antiagainst @kuhar @IgWod @llvm/llvm-reviewers
+/mlir/**/*ToSPIRV/ @antiagainst @kuhar @IgWod @llvm/llvm-reviewers
+/mlir/tools/mlir-tblgen/SPIRVUtilsGen.cpp @antiagainst @kuhar @IgWod @llvm/llvm-reviewers
 
 # MLIR Sparsifier.
-/mlir/**/*SparseTensor*/ @aartbik @PeimingLiu @yinying-lisa-li @matthias-springer
+/mlir/**/*SparseTensor*/ @aartbik @PeimingLiu @yinying-lisa-li @matthias-springer @llvm/llvm-reviewers
 
 # MLIR NVGPU Dialect
-/mlir/**/NVGPU*/ @grypp
-/mlir/test/**/CUDA/ @grypp
+/mlir/**/NVGPU*/ @grypp @llvm/llvm-reviewers
+/mlir/test/**/CUDA/ @grypp @llvm/llvm-reviewers
 
 # MLIR GPU Dialect
-/mlir/**/GPU*/ @fabianmcg
+/mlir/**/GPU*/ @fabianmcg @llvm/llvm-reviewers
 
 # MLIR NVVM Dialect in MLIR
-/mlir/**/LLVMIR/**/BasicPtxBuilderInterface* @grypp
-/mlir/**/NVVM* @grypp
+/mlir/**/LLVMIR/**/BasicPtxBuilderInterface* @grypp @llvm/llvm-reviewers
+/mlir/**/NVVM* @grypp @llvm/llvm-reviewers
 
 # MLIR Index Dialect
-/mlir/**/Index* @mogball
+/mlir/**/Index* @mogball @llvm/llvm-reviewers
 
 # MLIR Shard Dialect
-/mlir/**/*shard* @fschlimb
-/mlir/**/*Shard* @fschlimb
+/mlir/**/*shard* @fschlimb @llvm/llvm-reviewers
+/mlir/**/*Shard* @fschlimb @llvm/llvm-reviewers
 
 # MLIR WasmSSA Dialect
-/mlir/**/WasmSSA* @flemairen6 @lforg37
+/mlir/**/WasmSSA* @flemairen6 @lforg37 @llvm/llvm-reviewers
 
 # MLIR Python Bindings
-/mlir/test/python/ @ftynse @makslevental @stellaraccident @rolfmorel
-/mlir/python/ @ftynse @makslevental @stellaraccident @rolfmorel
-/mlir/lib/Bindings/Python @makslevental @rolfmorel
-/mlir/include/Bindings/Python @makslevental @rolfmorel
+/mlir/test/python/ @ftynse @makslevental @stellaraccident @rolfmorel @llvm/llvm-reviewers
+/mlir/python/ @ftynse @makslevental @stellaraccident @rolfmorel @llvm/llvm-reviewers
+/mlir/lib/Bindings/Python @makslevental @rolfmorel @llvm/llvm-reviewers
+/mlir/include/Bindings/Python @makslevental @rolfmorel @llvm/llvm-reviewers
 
 # MLIR Mem2Reg/SROA
-/mlir/**/Transforms/Mem2Reg.* @moxinilian
-/mlir/**/Transforms/SROA.* @moxinilian
+/mlir/**/Transforms/Mem2Reg.* @moxinilian @llvm/llvm-reviewers
+/mlir/**/Transforms/SROA.* @moxinilian @llvm/llvm-reviewers
 
 # MLIR IRDL-related
-/mlir/**/*IRDL* @moxinilian
+/mlir/**/*IRDL* @moxinilian @llvm/llvm-reviewers
 
 # BOLT
-/bolt/ @aaupov @maksfb @rafaelauler @ayermolo @yota9 @paschalis-mpeis @yozhu @yavtuk
+/bolt/ @aaupov @maksfb @rafaelauler @ayermolo @yota9 @paschalis-mpeis @yozhu @yavtuk @llvm/llvm-reviewers
 
 # Bazel build system.
-/utils/bazel/ @rupprecht @keith @aaronmondal @googlewalt
-/utils/bazel/llvm-project-overlay/libc/ @labath @kaladron
+/utils/bazel/ @rupprecht @keith @aaronmondal @googlewalt @llvm/llvm-reviewers
+/utils/bazel/llvm-project-overlay/libc/ @labath @kaladron @llvm/llvm-reviewers
 
 # InstallAPI and TextAPI
-/llvm/**/TextAPI/ @cyndyishida
-/clang/**/InstallAPI/ @cyndyishida
-/clang/tools/clang-installapi/ @cyndyishida
+/llvm/**/TextAPI/ @cyndyishida @llvm/llvm-reviewers
+/clang/**/InstallAPI/ @cyndyishida @llvm/llvm-reviewers
+/clang/tools/clang-installapi/ @cyndyishida @llvm/llvm-reviewers
 
 # ExtractAPI
-/clang/**/ExtractAPI @QuietMisdreavus @snprajwal
+/clang/**/ExtractAPI @QuietMisdreavus @snprajwal @llvm/llvm-reviewers
 
 # DWARFLinker, dwarfutil, dsymutil
-/llvm/**/DWARFLinker/ @JDevlieghere
-/llvm/**/dsymutil/ @JDevlieghere
-/llvm/**/llvm-dwarfutil/ @JDevlieghere
+/llvm/**/DWARFLinker/ @JDevlieghere @llvm/llvm-reviewers
+/llvm/**/dsymutil/ @JDevlieghere @llvm/llvm-reviewers
+/llvm/**/llvm-dwarfutil/ @JDevlieghere @llvm/llvm-reviewers
 
 # libclang/Python bindings
-/clang/bindings/python @DeinAlptraum
+/clang/bindings/python @DeinAlptraum @llvm/llvm-reviewers
 
 # AMDGPU assembler and disassembler
-/llvm-project/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp @jwanggit86
-/llvm-project/llvm/lib/Target/AMDGPU/Disassembler/AMDGPUDisassembler.cpp @jwanggit86
+/llvm-project/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp @jwanggit86 @llvm/llvm-reviewers
+/llvm-project/llvm/lib/Target/AMDGPU/Disassembler/AMDGPUDisassembler.cpp @jwanggit86 @llvm/llvm-reviewers
 
 # Clang Driver
-/clang/lib/Driver/ToolChains/AMDGPU.cpp @lamb-j
-/clang/lib/Driver/OffloadBundler.cpp @lamb-j @david-salinas
+/clang/lib/Driver/ToolChains/AMDGPU.cpp @lamb-j @llvm/llvm-reviewers
+/clang/lib/Driver/OffloadBundler.cpp @lamb-j @david-salinas @llvm/llvm-reviewers
 
 # GlobalIsel
-/llvm/lib/Target/AMDGPU/AMDGPURegBankLegalize* @vangthao95
+/llvm/lib/Target/AMDGPU/AMDGPURegBankLegalize* @vangthao95 @llvm/llvm-reviewers
 
 # AMDGPU Memory Model
-/llvm/lib/Target/AMDGPU/SIMemoryLegalizer* @Pierre-vh @ritter-x2a
-/llvm/lib/Target/AMDGPU/SIInsertWaitcnts* @Pierre-vh @ritter-x2a
+/llvm/lib/Target/AMDGPU/SIMemoryLegalizer* @Pierre-vh @ritter-x2a @llvm/llvm-reviewers
+/llvm/lib/Target/AMDGPU/SIInsertWaitcnts* @Pierre-vh @ritter-x2a @llvm/llvm-reviewers
 
 # Clang-Tidy tool
-/clang-tools-extra/clang-tidy/ @vbvictor @zeyi2
-/clang-tools-extra/test/clang-tidy/ @vbvictor @zeyi2
-/clang-tools-extra/docs/clang-tidy/ @vbvictor @zeyi2
+/clang-tools-extra/clang-tidy/ @vbvictor @zeyi2 @llvm/llvm-reviewers
+/clang-tools-extra/test/clang-tidy/ @vbvictor @zeyi2 @llvm/llvm-reviewers
+/clang-tools-extra/docs/clang-tidy/ @vbvictor @zeyi2 @llvm/llvm-reviewers
diff --git a/.github/ISSUE_TEMPLATE/commit-access-request.yml b/.github/ISSUE_TEMPLATE/commit-access-request.yml
new file mode 100644
index 0000000000000..485039f0c0e62
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/commit-access-request.yml
@@ -0,0 +1,72 @@
+name: Commit Access Request
+description: Request to join the LLVM committers team
+title: "Request Commit Access For <user>"
+labels:
+  - "infra:commit-access-request"
+body:
+  - type: markdown
+    attributes:
+      value: >
+        Thank you for your interest in contributing to LLVM! Please replace
+        `<user>` in the issue title with your GitHub username, and complete
+        the form below. To become a committer you need at least one pull
+        request (open or closed) so we have a sample of your work, and someone
+        on the reviewers team to vouch for you. See the
+        [Developer Policy](https://llvm.org/docs/DeveloperPolicy.html#obtaining-commit-access)
+        for a description of commit access and how requests are handled.
+  - type: checkboxes
+    id: policies
+    attributes:
+      label: Policy Agreement
+      description: >
+        Committers are expected to know and follow the community policies.
+        Please confirm each of the following.
+      options:
+        - label: >
+            I have read the [LLVM Community Code of
+            Conduct](https://llvm.org/docs/CodeOfConduct.html) and agree to
+            abide by it.
+          required: true
+        - label: >
+            I have read the [LLVM AI Tool Use
+            Policy](https://llvm.org/docs/AIToolPolicy.html) and agree to
+            abide by it.
+          required: true
+        - label: >
+            I have read the [LLVM Developer
+            Policy](https://llvm.org/docs/DeveloperPolicy.html) and agree to
+            abide by it.
+          required: true
+  - type: textarea
+    id: pull-requests
+    attributes:
+      label: Pull Requests
+      description: >
+        Link to one or more pull requests you have authored (open or closed),
+        so we have a sample of your work. One is enough.
+      placeholder: |
+        - https://github.com/llvm/llvm-project/pull/NNNNN
+    validations:
+      required: true
+  - type: textarea
+    id: vouchers
+    attributes:
+      label: Vouchers
+      description: >
+        Name one or more members of the reviewers team who can vouch for you,
+        as `@username`. At least one is required. They will be asked to confirm
+        on this issue.
+      placeholder: |
+        - @reviewer-username
+    validations:
+      required: true
+  - type: textarea
+    id: background
+    attributes:
+      label: Background (optional)
+      description: >
+        Optionally, tell us how you plan to participate in the project, such
+        as changes you would like to contribute, areas of interest, or past
+        contributions.
+    validations:
+      required: false
diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
new file mode 100644
index 0000000000000..bd40abdaa5d18
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/config.yml
@@ -0,0 +1,3 @@
+# Keep blank issues enabled: most LLVM issues (bug reports, feature requests)
+# are filed as free-form issues and labeled by the new-issues-labeler.
+blank_issues_enabled: true
diff --git a/.github/ISSUE_TEMPLATE/reviewer-access-request.yml b/.github/ISSUE_TEMPLATE/reviewer-access-request.yml
new file mode 100644
index 0000000000000..96570e35ff714
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/reviewer-access-request.yml
@@ -0,0 +1,69 @@
+name: Reviewer Access Request
+description: Request to join the LLVM reviewers team
+title: "Request Reviewer Access For <user>"
+labels:
+  - "infra:reviewer-access-request"
+body:
+  - type: markdown
+    attributes:
+      value: >
+        Thank you for your contributions to LLVM! Please replace `<user>` in
+        the issue title with your GitHub username, and complete the form
+        below. You need to cite three exmaples of helpful feedback you
+        delivered, and get two other reviewers to vouch that your feedback
+        demonstrated good technical judgement. See the [Developer
+        Policy](https://llvm.org/docs/DeveloperPolicy.html#becoming-a-reviewer)
+        for more information. After you file this issue, you will need two
+        current reviewers to vouch for you. One reviewer must affirm that they
+        do not share an employer with you.
+  - type: checkboxes
+    id: policies
+    attributes:
+      label: Policy Agreement
+      description: >
+        Reviewers are expected to know and follow the community policies.
+        Please confirm each of the following.
+      options:
+        - label: >
+            I have read the [LLVM Community Code of
+            Conduct](https://llvm.org/docs/CodeOfConduct.html) and agree to
+            abide by it.
+          required: true
+        - label: >
+            I have read the [LLVM AI Tool Use
+            Policy](https://llvm.org/docs/AIToolPolicy.html) and agree to
+            abide by it.
+          required: true
+        - label: >
+            I have read the [LLVM Developer
+            Policy](https://llvm.org/docs/DeveloperPolicy.html) and agree to
+            abide by it.
+          required: true
+        - label: >
+            I have read the [LLVM Code Review
+            Policy](https://llvm.org/docs/CodeReview.html) and agree to
+            abide by it.
+          required: true
+  - type: textarea
+    id: feedback-examples
+    attributes:
+      label: Examples of Helpful Feedback
+      description: >
+        Link to 3 or more separate pull requests, issues, or Discourse
+        threads where your comments provided useful feedback demonstrating
+        good technical judgement.
+      placeholder: |
+        - https://github.com/llvm/llvm-project/pull/NNNNN
+        - https://github.com/llvm/llvm-project/issues/NNNNN
+        - https://discourse.llvm.org/t/...
+    validations:
+      required: true
+  - type: textarea
+    id: reason
+    attributes:
+      label: Background
+      description: >
+        Tell us about your involvement with the project and why you are
+        requesting reviewer access.
+    validations:
+      required: true
diff --git a/.github/new-issues-labeler.yml b/.github/new-issues-labeler.yml
index ad4f97d70387b..2ee9aa2be1636 100644
--- a/.github/new-issues-labeler.yml
+++ b/.github/new-issues-labeler.yml
@@ -34,6 +34,9 @@
 'infra:commit-access-request':
   - '/Request Commit Access/'
 
+'infra:reviewer-access-request':
+  - '/Request Reviewer Access/'
+
 'false-positive':
   - '\bfalse[- ]positive\b'
 
diff --git a/llvm/docs/DeveloperPolicy.md b/llvm/docs/DeveloperPolicy.md
index 069b8fbb02798..7fd513896f847 100644
--- a/llvm/docs/DeveloperPolicy.md
+++ b/llvm/docs/DeveloperPolicy.md
@@ -62,6 +62,8 @@ many regular workgroup video calls and office hours. See {doc}`GettingInvolved`
 for more information on other ways to engage with the community.
 
 (patch)=
+(code review)=
+(code reviews)=
 ### Making and Submitting a Patch
 
 Patches are submitted to GitHub and reviewed using Pull Requests. Follow the
@@ -82,8 +84,16 @@ Here are some tips to enable a successful code review:
   a recent commit from `main`. If you want to make changes to a release
   branch, land a change in `main` first and then follow the {ref}`backporting
   instructions <backporting>`.
+- Avoid formatting- or whitespace-only changes outside of code you plan to
+  make subsequent changes to. Also, try to separate formatting or whitespace
+  changes from functional changes, either by correcting the format first
+  (ideally) or afterward. Such changes should be highly localized and the
+  commit message should clearly state that the commit is not intended to
+  change functionality, usually by stating it is {ref}`NFC <nfc>`.
 
-See {doc}`CodeReview` for more info on what to expect.
+LLVM uses code review, which is a generally accepted software engineering best
+practice for maintaining high code quality. See {doc}`CodeReview` for more
+information on LLVM's code review process and what to expect.
 
 When submitting patches, please do not add confidentiality or non-disclosure
 notices to the patches themselves. These notices conflict with the LLVM
@@ -103,13 +113,6 @@ email addresses private" is disabled in your [account
 settings](https://github.com/settings/emails). There are many free email
 forwarding services available if you wish to keep your identity private.
 
-(code review)=
-### Code Reviews
-
-LLVM uses code review, which is a generally accepted software engineering best
-practice for maintaining high code quality. Please see {doc}`CodeReview` for
-more information on LLVM's code review process.
-
 (maintainers)=
 ### Maintainers
 
@@ -465,77 +468,157 @@ What are the expectations around a revert?
 (obtaining_commit_access)=
 ### Obtaining Commit Access
 
-Once you have 3 or more merged pull requests, you may use [this
-link](https://github.com/llvm/llvm-project/issues/new?title=Request%20Commit%20Access%20For%20%3Cuser%3E&body=%23%23%23%20Why%20Are%20you%20requesting%20commit%20access%20?)
-to file an issue and request commit access. Replace the \<user\> string in the title
-with your github username, and explain why you are requesting commit access in
-the issue description. Once the issue is created, you will need to get two
-current contributors to support your request before commit access will be granted.
-
-Reviewers of your committed patches will automatically be CCed upon creating the issue.
-Most commonly these reviewers will provide the necessary approval, but approvals
-from other LLVM committers are also acceptable. Those reviewing the application are
-confirming that you have indeed had three patches committed, and that based on interactions
-on those reviews and elsewhere in the LLVM community they have no concern about you
-adhering to our Developer Policy and Code of Conduct. Reviewers should clearly state their
-reasoning for accepting or rejecting the request, and finish with a clear statement such
-as "I approve of this request", "LGTM", or "I do not approve of this request".
-
-If approved, a GitHub invitation will be sent to your
-GitHub account. In case you don't get notification from GitHub, go to
-[Invitation Link](https://github.com/orgs/llvm/invitation) directly. Once
-you accept the invitation, you'll get commit access.
-
-Prior to obtaining commit access, it is common practice to request that
-someone with commit access commits on your behalf. When doing so, please
-provide the name and email address you would like to use in the Author
-property of the commit.
-
-For external tracking purposes, committed changes are automatically reflected on
-a commits mailing list soon after the commit lands (e.g.
-<llvm-commits at lists.llvm.org>). Note that these mailing lists are moderated, and
-it is not unusual for a large commit to require a moderator to approve the
+The first step on your journey to becoming an LLVM contributor is to apply to
+join the [llvm-committers team]. Committers are granted the GitHub [`Write`
+repository role][gh-roles], which lets them push `users/*` branches and use the
+merge button on pull requests. Committers nonetheless have only
+"commit-with-review" access: as described under {ref}`merging pull requests
+<merging_pull_requests>`, a branch [ruleset][gh-rulesets] only allows a pull
+request to merge into `main` after a code owner, typically a member of the
+[llvm-reviewers team], has approved it. Committers cannot unilaterally land
+changes, and their own approval does not count toward that requirement.
+
+For information on how to get approval for a patch, please see
+{doc}`CodeReview`. Once a PR is approved by a reviewer, a committer can push
+the merge button to land any PR, whether it is their own, or someone else's
+(see {ref}`merging pull requests <merging_pull_requests>`).
+
+LLVM grants contributor permissions freely. We believe that empowering new
+contributors is part of what makes LLVM a successful project.
+
+The only requirements for applying to become a committer are to have at least
+two PRs merged, and to have someone on the [reviewers team][llvm-reviewers
+team] vouch for you. To apply to be a committer, read the following developer
+policy docs, and file an issue using [this template][commit-access-request],
+stating that you've read the policies and agree to abide by them:
+
+* {ref}`LLVM Community Code of Conduct` -- Be welcoming, respectful, and
+  considerate in all project spaces.
+* {doc}`LLVM AI Tool Use Policy <AIToolPolicy>` -- Write your own designs and
+  PR descriptions. Don't generate them.
+* {ref}`LLVM Developer Policy <developer_policy>` -- This document.
+
+Once approved, a GitHub invitation will be sent to your GitHub account. In case
+you don't get notification from GitHub, go to [Invitation Link] directly. Once
+you accept the invitation, you'll be granted LLVM github org affiliation and
+[llvm-committers team] membership. If other contributors flag your
+contributions for failing to follow project policies, you may be removed from
+the team.
+
+Prior to obtaining commit access, you can request that someone else merge your
+PR on your behalf. Note that GitHub will use your configured profile name and
+email in the squashed commit, so make sure it is configured correctly. Once
+your pull request has been approved by a reviewer, any committer can merge it
+for you (see {ref}`merging pull requests <merging_pull_requests>`).
+
+For external tracking purposes, committed changes are automatically reflected
+on a commits mailing list soon after the commit lands (e.g.
+[llvm-commits at lists.llvm.org]). Note that these mailing lists are moderated,
+and it is not unusual for a large commit to require a moderator to approve the
 email, so do not be concerned if a commit does not immediately appear in the
 archives.
 
-If you have recently been granted commit access, these policies apply:
-
-1. You are granted *commit-after-approval* to all parts of LLVM. For
-   information on how to get approval for a patch, please see
-   {doc}`CodeReview`. When approved, you may commit it yourself.
-2. You are allowed to commit patches without approval which you think are
-   obvious. This is clearly a subjective decision \-\-- we simply expect you to
-   use good judgement. Examples include: fixing build breakage, reverting
-   obviously broken patches, documentation/comment changes, any other minor
-   changes. Avoid committing formatting- or whitespace-only changes outside of
-   code you plan to make subsequent changes to. Also, try to separate
-   formatting or whitespace changes from functional changes, either by
-   correcting the format first (ideally) or afterward. Such changes should be
-   highly localized and the commit message should clearly state that the commit
-   is not intended to change functionality, usually by stating it is
-   {ref}`NFC <nfc>`.
-3. You are allowed to commit patches without approval to those portions of LLVM
-   that you have contributed or maintain (i.e., have been assigned
-   responsibility for), with the proviso that such commits must not break the
-   build. This is a "trust but verify" policy, and commits of this nature are
-   reviewed after they are committed.
-4. Multiple violations of these policies or a single egregious violation may
-   cause commit access to be revoked.
-
-In any case, your changes are still subject to {ref}`code review <code review>`
-(either before or after they are committed, depending on the nature of the
-change). You are encouraged to review other peoples' patches as well, but you
-aren't required to do so.
-
-### Obtaining Other Access or Permissions
-
-To obtain access other than commit access, you can raise an issue like the one
-for obtaining commit access. However, instead of including PRs you have authored,
-include evidence of your need for the type of access you want.
-
-For example, if you are helping to triage issues and want the ability to add
-labels, include links to issues you have triaged previously and explain how
-having this ability would help that work.
+You are encouraged to review other peoples' patches as well, but you aren't
+required to do so. No special access is needed to leave review feedback on a
+pull request, and a track record of helpful reviews is the main criterion for
+joining the reviewers team (see below).
+
+[llvm-committers team]: https://github.com/orgs/llvm/teams/llvm-committers
+[commit-access-request]: https://github.com/llvm/llvm-project/issues/new?template=commit-access-request.yml
+[Invitation Link]: https://github.com/orgs/llvm/invitation
+[llvm-commits at lists.llvm.org]: https://lists.llvm.org/pipermail/llvm-commits/
+[llvm-reviewers team]: https://github.com/orgs/llvm/teams/llvm-reviewers
+
+(becoming_a_reviewer)=
+### Becoming a Reviewer
+
+The next step in growing your contributions to LLVM is becoming a reviewer. The
+[llvm-reviewers team] has broad code ownership over the [llvm-project
+repository], so they are able to fulfill the requirement that all PRs are
+reviewed by a code owner. They are also able to [bypass][gh-bypass] this
+ruleset, so they are empowered to unilaterally fix urgent issues by reverting a
+bad change or fixing the build. Current ownership is defined in the GitHub
+[CODEOWNERS] file.
+
+Bypassing checks is clearly a subjective decision \-\-- we trust reviewers to
+use good judgement. Valid reasons include:
+
+- fixing build breakage
+- reverting obviously broken patches
+- documentation/comment accuracy changes
+- other minor, non-functional changes
+- landing changes to those portions of LLVM that you have contributed or
+  maintain (i.e., have been assigned responsibility for), with the proviso
+  that such changes must not break the build
+
+The last case is a "trust but verify" policy: changes landed without approval
+are still subject to {ref}`code review <code review>`, just after they land
+rather than before. Multiple violations of these policies or a single egregious
+violation may cause review access to be revoked.
+
+Review access is granted to contributors who have provided helpful feedback
+that demonstrates good technical judgement. Willingness and expertise to review
+other contributors' work is what makes the LLVM project go, so this is what we
+select for when granting review access.
+
+Once you can point to 3 or more separate pull requests, issues, or Discourse
+threads where your comments provided useful feedback demonstrating good
+technical judgement, you may file an issue using [this
+template][review-access-issue] to request to join the reviewers team. Replace
+the \<user\> string in the title with your github username, link to the three
+examples of helpful feedback, and explain why you are requesting to become a
+reviewer in the issue description.
+
+Once the issue is created, you will need to get two current reviewers to vouch
+for you. The application reviewers must vouch that the linked comments
+demonstrate good technical judgement, and that based on those interactions and
+others elsewhere in the LLVM community they have no concern about you adhering
+to our Developer Policy and Code of Conduct.
+
+Reviewers can provide a simple statement of approval such as "I approve" or
+click the thumbs-up emoji on the issue description. At least one reviewer needs
+to make a statement like "We don't share an organizational affiliation." We
+trust existing reviewers to be honest about their affiliations, and not rubber
+stamp the work of team mates as a favor to expedite this process.
+
+[CODEOWNERS]: https://github.com/llvm/llvm-project/blob/main/.github/CODEOWNERS
+[review-access-issue]: https://github.com/llvm/llvm-project/issues/new?template=reviewer-access-request.yml
+[llvm-project repository]: https://github.com/llvm/llvm-project/
+
+(merging_pull_requests)=
+### Merging Pull Requests
+
+All changes to the `main` branch must land through a pull request. Our ruleset
+forbids pushing directly to `main`, and this applies to committers and
+reviewers alike. GitHub permits a pull request to be merged once it has been
+approved by a member of the reviewers team. This is enforced with a GitHub
+[repository ruleset][gh-rulesets] containing the *Require review from Code
+Owners* rule, together with a [`CODEOWNERS`][CODEOWNERS] configuration that
+assigns ownership of all paths to the reviewers team. Both committers and
+reviewers hold the same [`Write` repository role][gh-roles]; the difference in
+what they can merge comes entirely from the ruleset, not from the repository
+role:
+
+- Reviewers are the only actors on the ruleset's [bypass list][gh-bypass],
+  configured in *For pull requests only* mode. This lets a reviewer merge a
+  pull request (their own, or anyone else's) without waiting for the required
+  approval, while still preventing direct pushes to `main`. This mechanism
+  implements the commit-without-approval cases described above (urgent fixes,
+  obvious changes, and code you maintain), as well as the normal pre-commit
+  review flow, where the author chooses when to merge after receiving approval.
+- Committers are not on the bypass list. The `Write` role would normally let
+  them merge, but the ruleset requires an approving review from a code owner
+  first. Because only the reviewers team is listed in `CODEOWNERS`, a
+  committer's own approval does not satisfy the requirement; a committer can
+  only merge a pull request that a reviewer has already approved.
+- Any pull request author, i.e. any GitHub user, may enable GitHub's auto-merge
+  ("merge when ready") feature on their pull request to record their intent
+  that the change should land as soon as it has been approved and premerge
+  checks pass.
+
+[gh-roles]: https://docs.github.com/en/organizations/managing-user-access-to-your-organizations-repositories/managing-repository-roles/repository-roles-for-an-organization
+[gh-rulesets]: https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/about-rulesets
+[gh-bypass]: https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/creating-rulesets-for-a-repository
 
 (discuss the change/gather consensus)=
 ### Proposing Major Changes (RFCs)
@@ -649,9 +732,10 @@ awareness of. For such changes, the following should be done:
 
 ### Attribution of Changes
 
-When contributors submit a patch to an LLVM project, other developers with
-commit access may merge the PR for the author (based on the progression of code
-review, etc.). GitHub will automatically ensure that authorship is preserved,
+When contributors submit a patch to an LLVM project, another committer may
+merge the PR for the author once it has been approved (see
+{ref}`merging pull requests <merging_pull_requests>`). GitHub will
+automatically ensure that authorship is preserved,
 and one does not need to take any further action. We do not want the source
 code to be littered with random attributions "this code written by J. Random
 Hacker" (this is noisy and distracting). In practice, the revision control

>From 5a9cadb68f307dad8ce8d7ca5c930ef8386c2093 Mon Sep 17 00:00:00 2001
From: Reid Kleckner <rkleckner at nvidia.com>
Date: Tue, 1 Sep 2026 16:37:49 +0000
Subject: [PATCH 2/2] [github] Add @llvm-noreply dummy account to CODEOWNERS
 rules

Every CODEOWNERS rule assigns the @llvm/llvm-reviewers team as an owner so the
"require review from code owners" branch rule applies everywhere. With the team
as an un-removable code owner, GitHub requests the whole team on every matching
pull request and, by default, emails every member.

List @llvm-noreply, a locked-down placeholder account that belongs to the
reviewers team, immediately before @llvm/llvm-reviewers on every rule. With the
team's "only notify requested team members" setting enabled, the individually
requested dummy absorbs the automatic review-request notification, so real
reviewers are not emailed on every pull request. The account never reviews and
must not be used to approve pull requests.
---
 .github/CODEOWNERS | 278 +++++++++++++++++++++++----------------------
 1 file changed, 142 insertions(+), 136 deletions(-)

diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index d23693026052a..44ad6994a6c95 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -18,6 +18,12 @@
 #    area. An approval from an auto-assigned reviewer who is not a member of
 #    the reviewers team does not satisfy the code owner review requirement.
 #
+# Every rule also lists @llvm-noreply, a placeholder account that belongs to
+# the reviewers team but never reviews. With the team's "only notify requested
+# team members" setting enabled, listing an individual team member on the rule
+# absorbs the automatic review-request notification, so the entire reviewers
+# team is not emailed on every matching pull request.
+#
 # This is independent of LLVM's own "maintainer" concept.
 # See https://llvm.org/docs/DeveloperPolicy.html#maintainers as well as the
 # Maintainers.md files in the the respective subproject directories.
@@ -25,212 +31,212 @@
 # Default rule: the reviewers team owns all paths. The rules below override
 # this one for reviewer auto-assignment, so each of them must also list
 # @llvm/llvm-reviewers.
-* @llvm/llvm-reviewers
-
-/libc/ @llvm/reviewers-libc @llvm/llvm-reviewers
-/libcxx/ @llvm/reviewers-libcxx @llvm/llvm-reviewers
-/libcxxabi/ @llvm/reviewers-libcxxabi @llvm/llvm-reviewers
-/libunwind/ @llvm/reviewers-libunwind @llvm/llvm-reviewers
-
-/llvm/lib/Analysis/BasicAliasAnalysis.cpp @nikic @llvm/llvm-reviewers
-/llvm/lib/Analysis/HashRecognize.cpp @artagnon @pfusik @llvm/llvm-reviewers
-/llvm/lib/Analysis/InstructionSimplify.cpp @nikic @llvm/llvm-reviewers
-/llvm/lib/Analysis/LazyValueInfo.cpp @nikic @llvm/llvm-reviewers
-/llvm/lib/Analysis/ScalarEvolution.cpp @nikic @llvm/llvm-reviewers
-/llvm/lib/Analysis/ValueTracking.cpp @nikic @llvm/llvm-reviewers
-/llvm/lib/IR/ConstantRange.cpp @nikic @llvm/llvm-reviewers
-/llvm/lib/IR/Core.cpp @nikic @llvm/llvm-reviewers
-/llvm/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp @nikic @llvm/llvm-reviewers
-/llvm/lib/Transforms/Scalar/MemCpyOptimizer.cpp @nikic @llvm/llvm-reviewers
-/llvm/lib/Transforms/InstCombine/ @nikic @llvm/llvm-reviewers
+* @llvm-noreply @llvm/llvm-reviewers
+
+/libc/ @llvm/reviewers-libc @llvm-noreply @llvm/llvm-reviewers
+/libcxx/ @llvm/reviewers-libcxx @llvm-noreply @llvm/llvm-reviewers
+/libcxxabi/ @llvm/reviewers-libcxxabi @llvm-noreply @llvm/llvm-reviewers
+/libunwind/ @llvm/reviewers-libunwind @llvm-noreply @llvm/llvm-reviewers
+
+/llvm/lib/Analysis/BasicAliasAnalysis.cpp @nikic @llvm-noreply @llvm/llvm-reviewers
+/llvm/lib/Analysis/HashRecognize.cpp @artagnon @pfusik @llvm-noreply @llvm/llvm-reviewers
+/llvm/lib/Analysis/InstructionSimplify.cpp @nikic @llvm-noreply @llvm/llvm-reviewers
+/llvm/lib/Analysis/LazyValueInfo.cpp @nikic @llvm-noreply @llvm/llvm-reviewers
+/llvm/lib/Analysis/ScalarEvolution.cpp @nikic @llvm-noreply @llvm/llvm-reviewers
+/llvm/lib/Analysis/ValueTracking.cpp @nikic @llvm-noreply @llvm/llvm-reviewers
+/llvm/lib/IR/ConstantRange.cpp @nikic @llvm-noreply @llvm/llvm-reviewers
+/llvm/lib/IR/Core.cpp @nikic @llvm-noreply @llvm/llvm-reviewers
+/llvm/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp @nikic @llvm-noreply @llvm/llvm-reviewers
+/llvm/lib/Transforms/Scalar/MemCpyOptimizer.cpp @nikic @llvm-noreply @llvm/llvm-reviewers
+/llvm/lib/Transforms/InstCombine/ @nikic @llvm-noreply @llvm/llvm-reviewers
 
 # AMDGPU buffer pointer lowerings
-/llvm/lib/Target/AMDGPU/AMDGPULowerBufferFatPointers.cpp @krzysz00 @llvm/llvm-reviewers
+/llvm/lib/Target/AMDGPU/AMDGPULowerBufferFatPointers.cpp @krzysz00 @llvm-noreply @llvm/llvm-reviewers
 
-/clang/test/CXX/drs/ @Endilll @llvm/llvm-reviewers
-/clang/www/cxx_dr_status.html @Endilll @llvm/llvm-reviewers
-/clang/www/make_cxx_dr_status @Endilll @llvm/llvm-reviewers
+/clang/test/CXX/drs/ @Endilll @llvm-noreply @llvm/llvm-reviewers
+/clang/www/cxx_dr_status.html @Endilll @llvm-noreply @llvm/llvm-reviewers
+/clang/www/make_cxx_dr_status @Endilll @llvm-noreply @llvm/llvm-reviewers
 
-/clang/include/clang/CIR @lanza @bcardosolopes @xlauko @andykaylor @llvm/llvm-reviewers
-/clang/lib/CIR @lanza @bcardosolopes @xlauko @andykaylor @llvm/llvm-reviewers
-/clang/lib/CIR/CodeGen/CIRGenBuiltinAArch64.cpp @lanza @bcardosolopes @xlauko @andykaylor @banach-space @llvm/llvm-reviewers
-/clang/tools/cir-* @lanza @bcardosolopes @xlauko @andykaylor @llvm/llvm-reviewers
+/clang/include/clang/CIR @lanza @bcardosolopes @xlauko @andykaylor @llvm-noreply @llvm/llvm-reviewers
+/clang/lib/CIR @lanza @bcardosolopes @xlauko @andykaylor @llvm-noreply @llvm/llvm-reviewers
+/clang/lib/CIR/CodeGen/CIRGenBuiltinAArch64.cpp @lanza @bcardosolopes @xlauko @andykaylor @banach-space @llvm-noreply @llvm/llvm-reviewers
+/clang/tools/cir-* @lanza @bcardosolopes @xlauko @andykaylor @llvm-noreply @llvm/llvm-reviewers
 
-/lldb/ @JDevlieghere @llvm/llvm-reviewers
-/lldb/**/*FreeBSD* @mchoo7 @llvm/llvm-reviewers
+/lldb/ @JDevlieghere @llvm-noreply @llvm/llvm-reviewers
+/lldb/**/*FreeBSD* @mchoo7 @llvm-noreply @llvm/llvm-reviewers
 
 # MLIR Interfaces.
-/mlir/include/mlir/Interfaces/TilingInterface.* @MaheshRavishankar @nicolasvasilache @llvm/llvm-reviewers
-/mlir/lib/Interfaces/TilingInterface.* @MaheshRavishankar @nicolasvasilache @llvm/llvm-reviewers
-/mlir/include/mlir/Interfaces/ValueBoundsOpInterface.* @matthias-springer @llvm/llvm-reviewers
-/mlir/lib/Interfaces/ValueBoundsOpInterface.* @matthias-springer @llvm/llvm-reviewers
-/mlir/**/ValueBoundsOpInterfaceImpl.* @matthias-springer @llvm/llvm-reviewers
-/mlir/include/mlir/Interfaces/RuntimeVerifiableOpInterface.* @matthias-springer @llvm/llvm-reviewers
-/mlir/lib/Interfaces/RuntimeVerifiableOpInterface.* @matthias-springer @llvm/llvm-reviewers
-/mlir/**/RuntimeVerifiableOpInterfaceImpl.* @matthias-springer @llvm/llvm-reviewers
-/mlir/include/mlir/Interfaces/SubsetOpInterface.* @matthias-springer @llvm/llvm-reviewers
-/mlir/lib/Interfaces/SubsetOpInterface.* @matthias-springer @llvm/llvm-reviewers
-/mlir/**/SubsetOpInterfaceImpl.* @matthias-springer @llvm/llvm-reviewers
-/mlir/include/mlir/Interfaces/DestinationStyleOpInterface.* @matthias-springer @llvm/llvm-reviewers
-/mlir/lib/Interfaces/DestinationStyleOpInterface.* @matthias-springer @llvm/llvm-reviewers
-/mlir/**/Interfaces/ControlFlowInterfaces.* @matthias-springer @llvm/llvm-reviewers
+/mlir/include/mlir/Interfaces/TilingInterface.* @MaheshRavishankar @nicolasvasilache @llvm-noreply @llvm/llvm-reviewers
+/mlir/lib/Interfaces/TilingInterface.* @MaheshRavishankar @nicolasvasilache @llvm-noreply @llvm/llvm-reviewers
+/mlir/include/mlir/Interfaces/ValueBoundsOpInterface.* @matthias-springer @llvm-noreply @llvm/llvm-reviewers
+/mlir/lib/Interfaces/ValueBoundsOpInterface.* @matthias-springer @llvm-noreply @llvm/llvm-reviewers
+/mlir/**/ValueBoundsOpInterfaceImpl.* @matthias-springer @llvm-noreply @llvm/llvm-reviewers
+/mlir/include/mlir/Interfaces/RuntimeVerifiableOpInterface.* @matthias-springer @llvm-noreply @llvm/llvm-reviewers
+/mlir/lib/Interfaces/RuntimeVerifiableOpInterface.* @matthias-springer @llvm-noreply @llvm/llvm-reviewers
+/mlir/**/RuntimeVerifiableOpInterfaceImpl.* @matthias-springer @llvm-noreply @llvm/llvm-reviewers
+/mlir/include/mlir/Interfaces/SubsetOpInterface.* @matthias-springer @llvm-noreply @llvm/llvm-reviewers
+/mlir/lib/Interfaces/SubsetOpInterface.* @matthias-springer @llvm-noreply @llvm/llvm-reviewers
+/mlir/**/SubsetOpInterfaceImpl.* @matthias-springer @llvm-noreply @llvm/llvm-reviewers
+/mlir/include/mlir/Interfaces/DestinationStyleOpInterface.* @matthias-springer @llvm-noreply @llvm/llvm-reviewers
+/mlir/lib/Interfaces/DestinationStyleOpInterface.* @matthias-springer @llvm-noreply @llvm/llvm-reviewers
+/mlir/**/Interfaces/ControlFlowInterfaces.* @matthias-springer @llvm-noreply @llvm/llvm-reviewers
 
 # AMDGPU and ROCDL dialects in MLIR.
-/mlir/include/mlir/Dialect/AMDGPU @krzysz00 @kuhar @llvm/llvm-reviewers
-/mlir/lib/Dialect/AMDGPU @krzysz00 @kuhar @llvm/llvm-reviewers
-/mlir/lib/Conversion/*AMDGPU* @krzysz00 @kuhar @llvm/llvm-reviewers
-/mlir/lib/Conversion/*ToROCDL @krzysz00 @kuhar @llvm/llvm-reviewers
-/mlir/include/mlir/Dialect/LLVMIR/ROCDL* @krzysz00 @kuhar @llvm/llvm-reviewers
+/mlir/include/mlir/Dialect/AMDGPU @krzysz00 @kuhar @llvm-noreply @llvm/llvm-reviewers
+/mlir/lib/Dialect/AMDGPU @krzysz00 @kuhar @llvm-noreply @llvm/llvm-reviewers
+/mlir/lib/Conversion/*AMDGPU* @krzysz00 @kuhar @llvm-noreply @llvm/llvm-reviewers
+/mlir/lib/Conversion/*ToROCDL @krzysz00 @kuhar @llvm-noreply @llvm/llvm-reviewers
+/mlir/include/mlir/Dialect/LLVMIR/ROCDL* @krzysz00 @kuhar @llvm-noreply @llvm/llvm-reviewers
 
 # Arith dialect in MLIR.
-/mlir/include/mlir/Dialect/Arith @kuhar @llvm/llvm-reviewers
-/mlir/lib/Dialect/Arith @kuhar @llvm/llvm-reviewers
-/mlir/lib/Conversion/ArithTo* @kuhar @llvm/llvm-reviewers
+/mlir/include/mlir/Dialect/Arith @kuhar @llvm-noreply @llvm/llvm-reviewers
+/mlir/lib/Dialect/Arith @kuhar @llvm-noreply @llvm/llvm-reviewers
+/mlir/lib/Conversion/ArithTo* @kuhar @llvm-noreply @llvm/llvm-reviewers
 
 # XeGPU and XeVM dialects in MLIR.
-/mlir/include/mlir/Dialect/XeGPU @charithaintc @Jianhui-Li @llvm/llvm-reviewers
-/mlir/lib/Dialect/XeGPU @charithaintc @Jianhui-Li @llvm/llvm-reviewers
-/mlir/lib/Conversion/*XeGPU* @charithaintc @Jianhui-Li @llvm/llvm-reviewers
-/mlir/include/mlir/Dialect/XeGPU/Transforms @charithaintc @Jianhui-Li @llvm/llvm-reviewers
-/mlir/lib/Dialect/XeGPU/Transforms @charithaintc @Jianhui-Li @llvm/llvm-reviewers
-/mlir/include/mlir/Dialect/XeGPU/TransformOps @charithaintc @Jianhui-Li @tkarna @llvm/llvm-reviewers
-/mlir/lib/Dialect/XeGPU/TransformOps @charithaintc @Jianhui-Li @tkarna @llvm/llvm-reviewers
-/mlir/include/mlir/Dialect/LLVMIR/XeVM* @silee2 @akroviakov @llvm/llvm-reviewers
-/mlir/lib/Dialect/LLVMIR/IR/XeVM @silee2 @akroviakov @llvm/llvm-reviewers
-/mlir/lib/Conversion/*XeVM* @silee2 @akroviakov @llvm/llvm-reviewers
+/mlir/include/mlir/Dialect/XeGPU @charithaintc @Jianhui-Li @llvm-noreply @llvm/llvm-reviewers
+/mlir/lib/Dialect/XeGPU @charithaintc @Jianhui-Li @llvm-noreply @llvm/llvm-reviewers
+/mlir/lib/Conversion/*XeGPU* @charithaintc @Jianhui-Li @llvm-noreply @llvm/llvm-reviewers
+/mlir/include/mlir/Dialect/XeGPU/Transforms @charithaintc @Jianhui-Li @llvm-noreply @llvm/llvm-reviewers
+/mlir/lib/Dialect/XeGPU/Transforms @charithaintc @Jianhui-Li @llvm-noreply @llvm/llvm-reviewers
+/mlir/include/mlir/Dialect/XeGPU/TransformOps @charithaintc @Jianhui-Li @tkarna @llvm-noreply @llvm/llvm-reviewers
+/mlir/lib/Dialect/XeGPU/TransformOps @charithaintc @Jianhui-Li @tkarna @llvm-noreply @llvm/llvm-reviewers
+/mlir/include/mlir/Dialect/LLVMIR/XeVM* @silee2 @akroviakov @llvm-noreply @llvm/llvm-reviewers
+/mlir/lib/Dialect/LLVMIR/IR/XeVM @silee2 @akroviakov @llvm-noreply @llvm/llvm-reviewers
+/mlir/lib/Conversion/*XeVM* @silee2 @akroviakov @llvm-noreply @llvm/llvm-reviewers
 
 # Bufferization Dialect in MLIR.
-/mlir/include/mlir/Dialect/Bufferization @matthias-springer @llvm/llvm-reviewers
-/mlir/lib/Dialect/Bufferization @matthias-springer @llvm/llvm-reviewers
-/mlir/**/BufferizableOpInterfaceImpl.* @matthias-springer @llvm/llvm-reviewers
-/mlir/Dialect/*/Transforms/Bufferize.cpp @matthias-springer @llvm/llvm-reviewers
+/mlir/include/mlir/Dialect/Bufferization @matthias-springer @llvm-noreply @llvm/llvm-reviewers
+/mlir/lib/Dialect/Bufferization @matthias-springer @llvm-noreply @llvm/llvm-reviewers
+/mlir/**/BufferizableOpInterfaceImpl.* @matthias-springer @llvm-noreply @llvm/llvm-reviewers
+/mlir/Dialect/*/Transforms/Bufferize.cpp @matthias-springer @llvm-noreply @llvm/llvm-reviewers
 
 # DLTI Dialect in MLIR
-/mlir/**/Dialect/DLTI @rolfmorel @llvm/llvm-reviewers
-/mlir/**/DataLayoutInterfaces.* @rolfmorel @llvm/llvm-reviewers
+/mlir/**/Dialect/DLTI @rolfmorel @llvm-noreply @llvm/llvm-reviewers
+/mlir/**/DataLayoutInterfaces.* @rolfmorel @llvm-noreply @llvm/llvm-reviewers
 
 # Linalg Dialect in MLIR.
-/mlir/include/mlir/Dialect/Linalg @dcaballe @nicolasvasilache @rengolin @llvm/llvm-reviewers
-/mlir/lib/Dialect/Linalg @dcaballe @nicolasvasilache @rengolin @llvm/llvm-reviewers
-/mlir/lib/Dialect/Linalg/Transforms/DecomposeLinalgOps.cpp @MaheshRavishankar @nicolasvasilache @llvm/llvm-reviewers
-/mlir/lib/Dialect/Linalg/Transforms/DropUnitDims.cpp @dcaballe @MaheshRavishankar @nicolasvasilache @llvm/llvm-reviewers
-/mlir/lib/Dialect/Linalg/Transforms/ElementwiseOpFusion.cpp @MaheshRavishankar @nicolasvasilache @llvm/llvm-reviewers
-/mlir/lib/Dialect/Linalg/Transforms/DataLayoutPropagation.cpp @nicolasvasilache @llvm/llvm-reviewers
-/mlir/lib/Dialect/Linalg/Transforms/Transforms.cpp @dcaballe @nicolasvasilache @llvm/llvm-reviewers
-/mlir/lib/Dialect/Linalg/Transforms/Vectorization.cpp @banach-space @dcaballe @nicolasvasilache @Groverkss @llvm/llvm-reviewers
+/mlir/include/mlir/Dialect/Linalg @dcaballe @nicolasvasilache @rengolin @llvm-noreply @llvm/llvm-reviewers
+/mlir/lib/Dialect/Linalg @dcaballe @nicolasvasilache @rengolin @llvm-noreply @llvm/llvm-reviewers
+/mlir/lib/Dialect/Linalg/Transforms/DecomposeLinalgOps.cpp @MaheshRavishankar @nicolasvasilache @llvm-noreply @llvm/llvm-reviewers
+/mlir/lib/Dialect/Linalg/Transforms/DropUnitDims.cpp @dcaballe @MaheshRavishankar @nicolasvasilache @llvm-noreply @llvm/llvm-reviewers
+/mlir/lib/Dialect/Linalg/Transforms/ElementwiseOpFusion.cpp @MaheshRavishankar @nicolasvasilache @llvm-noreply @llvm/llvm-reviewers
+/mlir/lib/Dialect/Linalg/Transforms/DataLayoutPropagation.cpp @nicolasvasilache @llvm-noreply @llvm/llvm-reviewers
+/mlir/lib/Dialect/Linalg/Transforms/Transforms.cpp @dcaballe @nicolasvasilache @llvm-noreply @llvm/llvm-reviewers
+/mlir/lib/Dialect/Linalg/Transforms/Vectorization.cpp @banach-space @dcaballe @nicolasvasilache @Groverkss @llvm-noreply @llvm/llvm-reviewers
 
 # MemRef Dialect in MLIR.
-/mlir/lib/Dialect/MemRef/Transforms/EmulateNarrowType.cpp @MaheshRavishankar @nicolasvasilache @llvm/llvm-reviewers
+/mlir/lib/Dialect/MemRef/Transforms/EmulateNarrowType.cpp @MaheshRavishankar @nicolasvasilache @llvm-noreply @llvm/llvm-reviewers
 
 # Vector Dialect in MLIR.
-/mlir/**/*Neon* @banach-space @dcaballe @nicolasvasilache @llvm/llvm-reviewers
-/mlir/**/*SME* @banach-space @dcaballe @nicolasvasilache @llvm/llvm-reviewers
-/mlir/**/*SVE* @banach-space @dcaballe @nicolasvasilache @llvm/llvm-reviewers
-/mlir/**/*VectorInterfaces* @dcaballe @nicolasvasilache @llvm/llvm-reviewers
-/mlir/**/*VectorToSCF* @banach-space @dcaballe @matthias-springer @nicolasvasilache @llvm/llvm-reviewers
-/mlir/**/*VectorToLLVM* @banach-space @dcaballe @nicolasvasilache @llvm/llvm-reviewers
-/mlir/**/*X86* @aartbik @dcaballe @nicolasvasilache @adam-smnk @llvm/llvm-reviewers
-/mlir/include/mlir/Dialect/Vector @banach-space @dcaballe @nicolasvasilache @Groverkss @llvm/llvm-reviewers
-/mlir/include/mlir/Dialect/Vector/IR @kuhar @llvm/llvm-reviewers
-/mlir/lib/Dialect/Vector @banach-space @dcaballe @nicolasvasilache @Groverkss @llvm/llvm-reviewers
-/mlir/lib/Dialect/Vector/Transforms/* @banach-space @dcaballe @nicolasvasilache @llvm/llvm-reviewers
-/mlir/lib/Dialect/Vector/Transforms/VectorEmulateNarrowType.cpp @banach-space @dcaballe @MaheshRavishankar @nicolasvasilache @llvm/llvm-reviewers
-/mlir/**/*EmulateNarrowType* @dcaballe @llvm/llvm-reviewers
+/mlir/**/*Neon* @banach-space @dcaballe @nicolasvasilache @llvm-noreply @llvm/llvm-reviewers
+/mlir/**/*SME* @banach-space @dcaballe @nicolasvasilache @llvm-noreply @llvm/llvm-reviewers
+/mlir/**/*SVE* @banach-space @dcaballe @nicolasvasilache @llvm-noreply @llvm/llvm-reviewers
+/mlir/**/*VectorInterfaces* @dcaballe @nicolasvasilache @llvm-noreply @llvm/llvm-reviewers
+/mlir/**/*VectorToSCF* @banach-space @dcaballe @matthias-springer @nicolasvasilache @llvm-noreply @llvm/llvm-reviewers
+/mlir/**/*VectorToLLVM* @banach-space @dcaballe @nicolasvasilache @llvm-noreply @llvm/llvm-reviewers
+/mlir/**/*X86* @aartbik @dcaballe @nicolasvasilache @adam-smnk @llvm-noreply @llvm/llvm-reviewers
+/mlir/include/mlir/Dialect/Vector @banach-space @dcaballe @nicolasvasilache @Groverkss @llvm-noreply @llvm/llvm-reviewers
+/mlir/include/mlir/Dialect/Vector/IR @kuhar @llvm-noreply @llvm/llvm-reviewers
+/mlir/lib/Dialect/Vector @banach-space @dcaballe @nicolasvasilache @Groverkss @llvm-noreply @llvm/llvm-reviewers
+/mlir/lib/Dialect/Vector/Transforms/* @banach-space @dcaballe @nicolasvasilache @llvm-noreply @llvm/llvm-reviewers
+/mlir/lib/Dialect/Vector/Transforms/VectorEmulateNarrowType.cpp @banach-space @dcaballe @MaheshRavishankar @nicolasvasilache @llvm-noreply @llvm/llvm-reviewers
+/mlir/**/*EmulateNarrowType* @dcaballe @llvm-noreply @llvm/llvm-reviewers
 
 # Presburger library in MLIR
-/mlir/**/*Presburger* @Groverkss @Superty @llvm/llvm-reviewers
+/mlir/**/*Presburger* @Groverkss @Superty @llvm-noreply @llvm/llvm-reviewers
 
 # Tensor Dialect in MLIR.
-/mlir/lib/Dialect/Tensor/IR/TensorTilingInterfaceImpl.cpp @nicolasvasilache @llvm/llvm-reviewers
-/mlir/lib/Dialect/Tensor/Transforms/* @nicolasvasilache @llvm/llvm-reviewers
+/mlir/lib/Dialect/Tensor/IR/TensorTilingInterfaceImpl.cpp @nicolasvasilache @llvm-noreply @llvm/llvm-reviewers
+/mlir/lib/Dialect/Tensor/Transforms/* @nicolasvasilache @llvm-noreply @llvm/llvm-reviewers
 
 # Transform Dialect in MLIR.
-/mlir/include/mlir/Dialect/Transform/* @ftynse @nicolasvasilache @rolfmorel @llvm/llvm-reviewers
-/mlir/lib/Dialect/Transform/* @ftynse @nicolasvasilache @rolfmorel @llvm/llvm-reviewers
-/mlir/**/*TransformOps* @ftynse @nicolasvasilache @rolfmorel @llvm/llvm-reviewers
+/mlir/include/mlir/Dialect/Transform/* @ftynse @nicolasvasilache @rolfmorel @llvm-noreply @llvm/llvm-reviewers
+/mlir/lib/Dialect/Transform/* @ftynse @nicolasvasilache @rolfmorel @llvm-noreply @llvm/llvm-reviewers
+/mlir/**/*TransformOps* @ftynse @nicolasvasilache @rolfmorel @llvm-noreply @llvm/llvm-reviewers
 
 # SPIR-V Dialect in MLIR.
-/mlir/**/SPIRV/ @antiagainst @kuhar @IgWod @llvm/llvm-reviewers
-/mlir/**/SPIRVTo*/ @antiagainst @kuhar @IgWod @llvm/llvm-reviewers
-/mlir/**/*ToSPIRV/ @antiagainst @kuhar @IgWod @llvm/llvm-reviewers
-/mlir/tools/mlir-tblgen/SPIRVUtilsGen.cpp @antiagainst @kuhar @IgWod @llvm/llvm-reviewers
+/mlir/**/SPIRV/ @antiagainst @kuhar @IgWod @llvm-noreply @llvm/llvm-reviewers
+/mlir/**/SPIRVTo*/ @antiagainst @kuhar @IgWod @llvm-noreply @llvm/llvm-reviewers
+/mlir/**/*ToSPIRV/ @antiagainst @kuhar @IgWod @llvm-noreply @llvm/llvm-reviewers
+/mlir/tools/mlir-tblgen/SPIRVUtilsGen.cpp @antiagainst @kuhar @IgWod @llvm-noreply @llvm/llvm-reviewers
 
 # MLIR Sparsifier.
-/mlir/**/*SparseTensor*/ @aartbik @PeimingLiu @yinying-lisa-li @matthias-springer @llvm/llvm-reviewers
+/mlir/**/*SparseTensor*/ @aartbik @PeimingLiu @yinying-lisa-li @matthias-springer @llvm-noreply @llvm/llvm-reviewers
 
 # MLIR NVGPU Dialect
-/mlir/**/NVGPU*/ @grypp @llvm/llvm-reviewers
-/mlir/test/**/CUDA/ @grypp @llvm/llvm-reviewers
+/mlir/**/NVGPU*/ @grypp @llvm-noreply @llvm/llvm-reviewers
+/mlir/test/**/CUDA/ @grypp @llvm-noreply @llvm/llvm-reviewers
 
 # MLIR GPU Dialect
-/mlir/**/GPU*/ @fabianmcg @llvm/llvm-reviewers
+/mlir/**/GPU*/ @fabianmcg @llvm-noreply @llvm/llvm-reviewers
 
 # MLIR NVVM Dialect in MLIR
-/mlir/**/LLVMIR/**/BasicPtxBuilderInterface* @grypp @llvm/llvm-reviewers
-/mlir/**/NVVM* @grypp @llvm/llvm-reviewers
+/mlir/**/LLVMIR/**/BasicPtxBuilderInterface* @grypp @llvm-noreply @llvm/llvm-reviewers
+/mlir/**/NVVM* @grypp @llvm-noreply @llvm/llvm-reviewers
 
 # MLIR Index Dialect
-/mlir/**/Index* @mogball @llvm/llvm-reviewers
+/mlir/**/Index* @mogball @llvm-noreply @llvm/llvm-reviewers
 
 # MLIR Shard Dialect
-/mlir/**/*shard* @fschlimb @llvm/llvm-reviewers
-/mlir/**/*Shard* @fschlimb @llvm/llvm-reviewers
+/mlir/**/*shard* @fschlimb @llvm-noreply @llvm/llvm-reviewers
+/mlir/**/*Shard* @fschlimb @llvm-noreply @llvm/llvm-reviewers
 
 # MLIR WasmSSA Dialect
-/mlir/**/WasmSSA* @flemairen6 @lforg37 @llvm/llvm-reviewers
+/mlir/**/WasmSSA* @flemairen6 @lforg37 @llvm-noreply @llvm/llvm-reviewers
 
 # MLIR Python Bindings
-/mlir/test/python/ @ftynse @makslevental @stellaraccident @rolfmorel @llvm/llvm-reviewers
-/mlir/python/ @ftynse @makslevental @stellaraccident @rolfmorel @llvm/llvm-reviewers
-/mlir/lib/Bindings/Python @makslevental @rolfmorel @llvm/llvm-reviewers
-/mlir/include/Bindings/Python @makslevental @rolfmorel @llvm/llvm-reviewers
+/mlir/test/python/ @ftynse @makslevental @stellaraccident @rolfmorel @llvm-noreply @llvm/llvm-reviewers
+/mlir/python/ @ftynse @makslevental @stellaraccident @rolfmorel @llvm-noreply @llvm/llvm-reviewers
+/mlir/lib/Bindings/Python @makslevental @rolfmorel @llvm-noreply @llvm/llvm-reviewers
+/mlir/include/Bindings/Python @makslevental @rolfmorel @llvm-noreply @llvm/llvm-reviewers
 
 # MLIR Mem2Reg/SROA
-/mlir/**/Transforms/Mem2Reg.* @moxinilian @llvm/llvm-reviewers
-/mlir/**/Transforms/SROA.* @moxinilian @llvm/llvm-reviewers
+/mlir/**/Transforms/Mem2Reg.* @moxinilian @llvm-noreply @llvm/llvm-reviewers
+/mlir/**/Transforms/SROA.* @moxinilian @llvm-noreply @llvm/llvm-reviewers
 
 # MLIR IRDL-related
-/mlir/**/*IRDL* @moxinilian @llvm/llvm-reviewers
+/mlir/**/*IRDL* @moxinilian @llvm-noreply @llvm/llvm-reviewers
 
 # BOLT
-/bolt/ @aaupov @maksfb @rafaelauler @ayermolo @yota9 @paschalis-mpeis @yozhu @yavtuk @llvm/llvm-reviewers
+/bolt/ @aaupov @maksfb @rafaelauler @ayermolo @yota9 @paschalis-mpeis @yozhu @yavtuk @llvm-noreply @llvm/llvm-reviewers
 
 # Bazel build system.
-/utils/bazel/ @rupprecht @keith @aaronmondal @googlewalt @llvm/llvm-reviewers
-/utils/bazel/llvm-project-overlay/libc/ @labath @kaladron @llvm/llvm-reviewers
+/utils/bazel/ @rupprecht @keith @aaronmondal @googlewalt @llvm-noreply @llvm/llvm-reviewers
+/utils/bazel/llvm-project-overlay/libc/ @labath @kaladron @llvm-noreply @llvm/llvm-reviewers
 
 # InstallAPI and TextAPI
-/llvm/**/TextAPI/ @cyndyishida @llvm/llvm-reviewers
-/clang/**/InstallAPI/ @cyndyishida @llvm/llvm-reviewers
-/clang/tools/clang-installapi/ @cyndyishida @llvm/llvm-reviewers
+/llvm/**/TextAPI/ @cyndyishida @llvm-noreply @llvm/llvm-reviewers
+/clang/**/InstallAPI/ @cyndyishida @llvm-noreply @llvm/llvm-reviewers
+/clang/tools/clang-installapi/ @cyndyishida @llvm-noreply @llvm/llvm-reviewers
 
 # ExtractAPI
-/clang/**/ExtractAPI @QuietMisdreavus @snprajwal @llvm/llvm-reviewers
+/clang/**/ExtractAPI @QuietMisdreavus @snprajwal @llvm-noreply @llvm/llvm-reviewers
 
 # DWARFLinker, dwarfutil, dsymutil
-/llvm/**/DWARFLinker/ @JDevlieghere @llvm/llvm-reviewers
-/llvm/**/dsymutil/ @JDevlieghere @llvm/llvm-reviewers
-/llvm/**/llvm-dwarfutil/ @JDevlieghere @llvm/llvm-reviewers
+/llvm/**/DWARFLinker/ @JDevlieghere @llvm-noreply @llvm/llvm-reviewers
+/llvm/**/dsymutil/ @JDevlieghere @llvm-noreply @llvm/llvm-reviewers
+/llvm/**/llvm-dwarfutil/ @JDevlieghere @llvm-noreply @llvm/llvm-reviewers
 
 # libclang/Python bindings
-/clang/bindings/python @DeinAlptraum @llvm/llvm-reviewers
+/clang/bindings/python @DeinAlptraum @llvm-noreply @llvm/llvm-reviewers
 
 # AMDGPU assembler and disassembler
-/llvm-project/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp @jwanggit86 @llvm/llvm-reviewers
-/llvm-project/llvm/lib/Target/AMDGPU/Disassembler/AMDGPUDisassembler.cpp @jwanggit86 @llvm/llvm-reviewers
+/llvm-project/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp @jwanggit86 @llvm-noreply @llvm/llvm-reviewers
+/llvm-project/llvm/lib/Target/AMDGPU/Disassembler/AMDGPUDisassembler.cpp @jwanggit86 @llvm-noreply @llvm/llvm-reviewers
 
 # Clang Driver
-/clang/lib/Driver/ToolChains/AMDGPU.cpp @lamb-j @llvm/llvm-reviewers
-/clang/lib/Driver/OffloadBundler.cpp @lamb-j @david-salinas @llvm/llvm-reviewers
+/clang/lib/Driver/ToolChains/AMDGPU.cpp @lamb-j @llvm-noreply @llvm/llvm-reviewers
+/clang/lib/Driver/OffloadBundler.cpp @lamb-j @david-salinas @llvm-noreply @llvm/llvm-reviewers
 
 # GlobalIsel
-/llvm/lib/Target/AMDGPU/AMDGPURegBankLegalize* @vangthao95 @llvm/llvm-reviewers
+/llvm/lib/Target/AMDGPU/AMDGPURegBankLegalize* @vangthao95 @llvm-noreply @llvm/llvm-reviewers
 
 # AMDGPU Memory Model
-/llvm/lib/Target/AMDGPU/SIMemoryLegalizer* @Pierre-vh @ritter-x2a @llvm/llvm-reviewers
-/llvm/lib/Target/AMDGPU/SIInsertWaitcnts* @Pierre-vh @ritter-x2a @llvm/llvm-reviewers
+/llvm/lib/Target/AMDGPU/SIMemoryLegalizer* @Pierre-vh @ritter-x2a @llvm-noreply @llvm/llvm-reviewers
+/llvm/lib/Target/AMDGPU/SIInsertWaitcnts* @Pierre-vh @ritter-x2a @llvm-noreply @llvm/llvm-reviewers
 
 # Clang-Tidy tool
-/clang-tools-extra/clang-tidy/ @vbvictor @zeyi2 @llvm/llvm-reviewers
-/clang-tools-extra/test/clang-tidy/ @vbvictor @zeyi2 @llvm/llvm-reviewers
-/clang-tools-extra/docs/clang-tidy/ @vbvictor @zeyi2 @llvm/llvm-reviewers
+/clang-tools-extra/clang-tidy/ @vbvictor @zeyi2 @llvm-noreply @llvm/llvm-reviewers
+/clang-tools-extra/test/clang-tidy/ @vbvictor @zeyi2 @llvm-noreply @llvm/llvm-reviewers
+/clang-tools-extra/docs/clang-tidy/ @vbvictor @zeyi2 @llvm-noreply @llvm/llvm-reviewers



More information about the llvm-commits mailing list