This file is a list of the people responsible for ensuring that patches for a
particular part of Clang are reviewed, either by themself or by someone else.
They are also the gatekeepers for their part of Clang, 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).

N: Aaron Ballman
E: aaron@aaronballman.com
D: Clang attributes

N: Alexey Bataev
E: a.bataev@hotmail.com
D: OpenMP support

N: Chandler Carruth
E: chandlerc@gmail.com
E: chandlerc@google.com
D: CMake, library layering

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

N: Doug Gregor
E: dgregor@apple.com
D: Emeritus owner

N: Reid Kleckner
E: rnk@google.com
D: Microsoft C++ ABI compatibility and general Windows support

N: Manuel Klimek
E: klimek@google.com
D: AST matchers, LibTooling

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

N: Anna Zaks
E: ganna@apple.com
D: Clang Static Analyzer

N: John McCall
E: rjmccall@apple.com
D: Clang LLVM IR generation

N: Richard Smith
E: richard@metafoo.co.uk
D: All parts of Clang not covered by someone else

N: Anastasia Stulova
E: anastasia.stulova@arm.com
D: OpenCL support
