This file is a list of the people responsible for ensuring that patches for a
particular part of LLVM are reviewed, either by themself or by someone else.
They are also the gatekeepers for their part of LLVM, with the final word on
what goes in or not.

The list is sorted by surname and formatted to allow easy grepping and
beautification by scripts. The fields are: name (N), email (E), web-address
(W), PGP key ID and fingerprint (P), description (D), snail-mail address
(S) and (I) IRC handle. Each entry should contain at least the (N), (E) and
(D) fields.

N: Paul C. Anagnostopoulos
E: paul@windfall.com
D: TableGen

N: Matt Arsenault
E: Matthew.Arsenault@amd.com
E: arsenm2@gmail.com
I: arsenm
D: AMDGPU, InferAddressSpaces

N: Justin Bogner
E: mail@justinbogner.com
D: InstrProfiling and related parts of ProfileData
D: SelectionDAG (lib/CodeGen/SelectionDAG/*)

N: Alex Bradbury
E: asb@igalia.com
D: RISC-V backend (lib/Target/RISCV/*)

N: Matthias Braun
E: matze@braunis.de
I: MatzeB
D: Instruction Scheduling

N: Chandler Carruth
E: chandlerc@gmail.com
E: chandlerc@google.com
D: Config, ADT, Support, inlining & related passes, SROA/mem2reg & related passes, CMake, library layering

N: Evan Cheng
E: evan.cheng@apple.com
D: parts of code generator not covered by someone else

N: Eric Christopher
E: echristo@gmail.com
D: Debug Information, inline assembly

N: Andrey Churbanov
E: andrey.churbanov@intel.com
D: OpenMP runtime library

N: Johannes Doerfert
E: jdoerfert@llnl.gov
D: OpenMP target offloading, OpenMP-Opt, Attributor

N: Greg Clayton
E: clayborg@gmail.com
D: LLDB

N: Louis Dionne
E: ldionne.2@gmail.com
D: libc++

N: Peter Collingbourne
E: peter@pcc.me.uk
D: libLTO (lib/LTO/* tools/lto/*), LLVM Bitcode (lib/Bitcode/* include/llvm/Bitcode/*)

N: Quentin Colombet
E: quentin.colombet@gmail.com
D: Loop Strength Reduction, Register allocators

N: Andrea Di Biagio
E: andrea.dibiagio@sony.com
E: andrea.dibiagio@gmail.com
D: MCA, llvm-mca

N: Hal Finkel
E: hfinkel@anl.gov
D: The loop reroller and alias analysis

N: Nemanja Ivanovic
E: nemanja.i.ibm@gmail.com
D: PowerPC Backend

N: Dan Gohman
E: llvm@sunfishcode.online
D: WebAssembly Backend (lib/Target/WebAssembly/*)

N: Renato Golin
E: rengolin@systemcall.eu
D: ARM Linux support

N: Venkatraman Govindaraju
E: venkatra@cs.wisc.edu
D: Sparc Backend (lib/Target/Sparc/*)

N: Tobias Grosser
E: tobias@grosser.es
D: Polly

N: James Grosbach
E: grosbach@apple.com
D: MC layer

N: Justin Holewinski
E: jholewinski@nvidia.com
D: NVPTX Target (lib/Target/NVPTX/*)

N: Lang Hames
E: lhames@gmail.com
D: MCJIT, RuntimeDyld and JIT event listeners, Orcish Warchief

N: Min-Yih Hsu
E: min@myhsu.dev
D: M68k Target (lib/Target/M68k/*)

N: Teresa Johnson
E: tejohnson@google.com
D: Gold plugin (tools/gold/*) and IR Linker

N: Galina Kistanova
E: gkistanova@gmail.com
D: LLVM Buildbot

N: Anton Korobeynikov
E: anton@korobeynikov.info
D: Exception handling, Windows codegen, ARM EABI, MSP430 Target (lib/Target/MSP430/*)

N: Benjamin Kramer
E: benny.kra@gmail.com
D: DWARF Parser

N: Florian Hahn
E: flo@fhahn.com
D: Loop Vectorizer

N: Alexey Bataev
E: a.bataev@outlook.com
D: SLP Vectorizer

N: Sergei Larin
E: slarin@codeaurora.org
D: VLIW Instruction Scheduling, Packetization

N: Chris Lattner
E: sabre@nondot.org
W: http://nondot.org/~sabre/
D: Everything not covered by someone else

N: Weining Lu
E: luweining@loongson.cn
D: LoongArch backend (lib/Target/LoongArch/*)

N: David Majnemer
E: david.majnemer@gmail.com
D: IR Constant Folder, InstCombine

N: Ben Shi
E: 2283975856@qq.com, powerman1st@163.com
D: AVR Backend

N: Kazushi Marukawa
E: marukawa@nec.com
D: VE Backend

N: Tim Northover
E: t.p.northover@gmail.com
D: AArch64 backend, misc ARM backend

N: Diego Novillo
E: dnovillo@google.com
D: SampleProfile and related parts of ProfileData

N: Krzysztof Parzyszek
E: kparzysz@quicinc.com
D: Hexagon Backend

N: Nigel Perks
E: nigelp@xmos.com
D: XCore Backend

N: Jacques Pienaar
E: jpienaar@google.com
D: Lanai Backend

N: Simon Pilgrim
E: llvm-dev@redking.me.uk
D: X86 Backend

N: Philip Reames
E: listmail@philipreames.com
D: IndVar Simplify, Scalar Evolution

N: Paul Robinson
E: paul.robinson@sony.com
D: Sony PlayStation®4 support

N: Chad Rosier
E: mcrosier@codeaurora.org
D: Fast-Isel

N: Andrei Safronov
E: andrei.safronov@espressif.com
D: Xtensa backend (lib/Target/Xtensa/*)

N: Duncan Sands
E: baldrick@free.fr
D: DragonEgg

N: Mark Schimmel
E: marksl@synopsys.com
D: ARC backend (lib/Target/ARC/*)

N: Kostya Serebryany
E: kcc@google.com
D: AddressSanitizer, ThreadSanitizer (LLVM parts)

N: Michael Spencer
E: bigcheesegs@gmail.com
D: Windows parts of Support, Object, ar, nm, objdump, ranlib, size

N: Alexei Starovoitov
E: alexei.starovoitov@gmail.com
D: BPF backend

N: Tom Stellard
E: tstellar@redhat.com
D: Stable release management (x.y.[1-9] releases), libclc

N: Evgeniy Stepanov
E: eugenis@google.com
D: MemorySanitizer (LLVM part)

N: Phoebe Wang
E: phoebe.wang@intel.com
D: X86 Backend

N: Ulrich Weigand
E: uweigand@de.ibm.com
D: SystemZ Backend

N: Hans Wennborg
E: hans@chromium.org
D: Release management (x.y.0 releases)

N: Jake Ehrlich
E: jakehehrlich@google.com
D: llvm-objcopy (tools/llvm-objcopy)

N: Martin Storsjö
E: martin@martin.st
D: MinGW

N: Zi Xuan Wu (Zeson)
E: zixuan.wu@linux.alibaba.com
D: C-SKY backend (lib/Target/CSKY/*)

N: Ilia Diachkov
E: ilia.diachkov@gmail.com
D: SPIR-V backend (lib/Target/SPIRV/*)
