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), and snail-mail address
(S). Each entry should contain at least the (N), (E) and (D) fields.

N: Joe Abbey
E: jabbey@arxan.com
D: LLVM Bitcode (lib/Bitcode/* include/llvm/Bitcode/*)

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

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: Greg Clayton
E: gclayton@apple.com
D: LLDB

N: Sanjoy Das
E: sanjoy@playingwithpointers.com
D: IndVar Simplify, Scalar Evolution

N: Marshall Clow
E: mclow.lists@gmail.com
D: libc++

N: Peter Collingbourne
E: peter@pcc.me.uk
D: llgo

N: Quentin Colombet
E: qcolombet@apple.com
D: Register allocators

N: Duncan P. N. Exon Smith
E: dexonsmith@apple.com
D: Branch weights and BlockFrequencyInfo

N: Hal Finkel
E: hfinkel@anl.gov
D: BBVectorize, the loop reroller, alias analysis and the PowerPC target

N: Dan Gohman
E: sunfish@mozilla.com
D: WebAssembly Backend (lib/Target/WebAssembly/*)

N: Renato Golin
E: renato.golin@linaro.org
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: Teresa Johnson
E: tejohnson@google.com
D: Gold plugin (tools/gold/*)

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

N: Anton Korobeynikov
E: anton@korobeynikov.info
D: Exception handling, Windows codegen, ARM EABI

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

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: David Majnemer
E: david.majnemer@gmail.com
D: IR Constant Folder, InstCombine

N: Dylan McKay
E: dylanmckay34@gmail.com
D: AVR 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: Jakob Olesen
E: stoklund@2pi.dk
D: TableGen

N: Richard Osborne
E: richard@xmos.com
D: XCore Backend

N: Krzysztof Parzyszek
E: kparzysz@codeaurora.org
D: Hexagon Backend

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

N: Paul Robinson
E: paul_robinson@playstation.sony.com
D: Sony PlayStation®4 support

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

N: Nadav Rotem
E: nadav.rotem@me.com
D: X86 Backend, Loop Vectorizer

N: Daniel Sanders
E: daniel.sanders@imgtec.com
D: MIPS Backend (lib/Target/Mips/*)

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

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: thomas.stellard@amd.com
E: mesa-dev@lists.freedesktop.org
D: Release manager for the 3.5 and 3.6 branches, R600 Backend, libclc

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

N: Andrew Trick
E: atrick@apple.com
D: Loop Strength Reduction, Instruction Scheduling

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

N: Bill Wendling
E: isanbard@gmail.com
D: libLTO, IR Linker

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

N: Peter Zotov
E: whitequark@whitequark.org
D: OCaml bindings

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