# Flang maintainers

This file is a list of the
[maintainers](https://llvm.org/docs/DeveloperPolicy.html#maintainers) for
Flang

## Active maintainers

### Lead maintainers
The following people are the active maintainers for the project. Please reach
out to them for code reviews, questions about their area of expertise, or other
assistance.

#### All areas not covered by others
Steve Scalpone \
sscalpone@nvidia.com (email), sscalpone (GitHub), sscalpone (Discourse)

####  Backend (Lowering, Fortran dialects, Codegen)
Jean Perier \
jperier@nvidia.com (email), jeanPerier (GitHub), jeanPerier (Discourse)

### Component maintainers
These maintainers are responsible for particular high-level components within
Flang that are typically contained to one area of the compiler.

#### Driver
Andrzej Warzyński \
andrzej.warzynski@arm.com (email), banach-space (GitHub), banach-space (Discourse)

Tarun Prabhu \
tarun@lanl.gov (email), tarunprabhu (GitHub), tarunprabhu (Discourse)

#### Alias Analysis
Renaud Kauffmann \
rkauffmann@nvidia.com (email), Renaud-K (GitHub), Renaud-K (Discourse)

#### PFT, Block, IEEE support
Val Donaldson \
vdonaldson@nvidia.com (email), vdonaldson (GitHub)

#### Lowering, HLFIR, FIR, Codegen
Jean Perier \
jperier@nvidia.com (email), jeanPerier (GitHub), jeanPerier (Discourse)

Slava Zakharin \
szakharin@nvidia.com (email), vzakhari (GitHub), szakharin (Discourse)

Tom Eccles \
tom.eccles@arm.com (email), tblah (GitHub), tblah (Discourse)

Valentin Clement \
clementval@gmail.com (email), clementval (GitHub), clementval (Discourse)

#### OpenMP
##### CPU support
Tom Eccles \
tom.eccles@arm.com (email), tblah (GitHub), tblah (Discourse)

##### OpenMP 6.0
Krzysztof Parzyszek \
Krzysztof.Parzyszek@amd.com (email), kparzysz (GitHub), kparzysz (Discourse)

##### Target Offload
Sergio Afonso \
safonsof@amd.com (email), skatrak (GitHub), skatrak (Discourse) 

#### OpenACC
Valentin Clement \
clementval@gmail.com (email), clementval (GitHub), clementval (Discourse)

Razvan Lupusoru \
razvan.lupusoru@gmail.com (email), razvanlupusoru (GitHub), razvan.lupusoru (Discourse)

#### CUDA Fortran
Valentin Clement \
clementval@gmail.com (email), clementval (GitHub), clementval (Discourse)

#### Debug
Abid Qadeer \
haqadeer@amd.com (email), abidh (GitHub), abidh (Discourse)

### Platform maintainers
These maintainers are responsible for particular platforms that Flang supports

#### Windows
David Truby \
david.truby@arm.com (email), davidtruby (GitHub), davidtruby (Discourse), truby (Discord)

## Inactive Maintainers
### Lead Maintainers
#### Backend : (Lowering, FIR, Codegen)
Eric Schweitz \
eschweitz@nvidia.com (email), schweitzpgi (GitHub), schweitz (Discourse)

### Component Maintainers
#### Semantics
Tim Keith

#### OpenMP
Kiran Chandramohan \
kiran.chandramohan@arm.com (email), kiranchandramohan (GitHub),  kiranchandramohan (Discourse)

