Skip to content

Commit 1460ed4

Browse files
authored
Add Ayokunle Amodu to the contributors list (#398)
* add ayokunle to team * update post * Update contributors.yml with new contributor details * Update contributor details in contributors.yml * add names to make spell checker happy * resize photo * optimize image for webp
1 parent ede0c93 commit 1460ed4

6 files changed

Lines changed: 115 additions & 0 deletions

File tree

.github/actions/spelling/expect.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
Akad
22
Akida
3+
Amodu
4+
amodu
35
autodiff
6+
Ayokunle
7+
ayokunle
48
backpropation
59
Bassiouni
610
bassiouni
@@ -34,6 +38,7 @@ Loihi
3438
Medhane
3539
medhane
3640
Mtools
41+
MLIR
3742
Nellamakada
3843
Neuromorphic
3944
neuromorphic

_data/contributors.yml

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,31 @@
151151
# TEAM #
152152
################################################################################
153153

154+
- name: Ayokunle Amodu
155+
info: "C++ Alliance Fellowship 2026 Contributor"
156+
photo: Ayokunle.jpg
157+
email: ayokunle321@gmail.com
158+
education: Bsc in Computing Science, University of Alberta, Canada, 2022-2026
159+
active: 1
160+
projects:
161+
- title: "Optimize Usage of Source Locations in Clang Modules"
162+
status: Ongoing
163+
description: |
164+
This project aims to reduce memory pressure caused by duplicated source locations
165+
in Clang's modular builds. In large-scale C++ projects, repeatedly including the
166+
same headers across different modules can quickly exhaust Clang's 32-bit
167+
source-location representation. Instead of switching to a more costly 64-bit
168+
design, this project explores reusing existing source-location allocations through
169+
an interval-mapping mechanism and careful coordination during module loading. The
170+
work involves updating module deserialization, preserving diagnostic correctness,
171+
and ensuring include-stack reconstruction remains transparent. If successful,
172+
duplicated module inputs will no longer cause proportional growth in source-location
173+
allocations, modular builds will complete without exhaustion, and Clang will scale
174+
better for modern modular C++ codebases, all without requiring a disruptive global
175+
change to the compiler.
176+
proposal: /assets/docs/Ayokunle_Amodu_Proposal_2026.pdf
177+
mentors: Vassil Vassilev, Aaron Jomy
178+
154179
- name: Ezzeldin Ibrahim
155180
photo: Ezz.jpg
156181
info: "C++ Alliance Fellowship 2026 Contributor"

_pages/team/ayokunle-amodu.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
---
2+
title: "Compiler Research - Team - Ayokunle Amodu"
3+
layout: gridlay
4+
excerpt: "Compiler Research: Team members"
5+
sitemap: false
6+
permalink: /team/AyokunleAmodu
7+
email: ayokunle321@gmail.com
8+
---
9+
10+
{% include team-profile.html %}
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
---
2+
title: "Optimize Usage of Source Locations in Clang Modules"
3+
layout: post
4+
excerpt: "Reducing source-location memory pressure in modular C++ builds through allocation reuse and interval mapping."
5+
sitemap: false
6+
author: Ayokunle Amodu
7+
permalink: blogs/optimize_source_locations_clang_modules_Ayokunle_Amodu_blog/
8+
thumbnail_image: /images/cppalliance-logo.svg
9+
date: 2026-05-20
10+
tags: clang llvm modules source-locations cppalliance
11+
---
12+
13+
{% include dual-banner.html
14+
left_logo="/images/cppalliance-logo.svg"
15+
right_logo="/images/cr-logo.png"
16+
caption=""
17+
height="20vh" %}
18+
19+
## Introduction
20+
21+
Hi everyone! I am Ayokunle Amodu, joining the Compiler Research team as a CppAlliance
22+
Fellow for the 2026 cycle. I am an MLIR geek at heart. Most of my compiler work has
23+
lived in the middle end, progressive lowering. I love seeing how high-level structure
24+
survives a full lowering chain and still means something at the bottom.
25+
26+
This project is front-end territory, not my typical residence, but being a comp arch
27+
kid who has spent time with RISC-V assembly means a 32-bit space running out of room
28+
is a very familiar kind of problem. Working under Vassil Vassilev with real upstream
29+
review as the target is exactly the kind of opportunity I wanted.
30+
31+
## The Problem
32+
33+
Clang tracks every position in source code as a 32-bit offset into a global address
34+
space managed by `SourceManager`. That space is finite, and in large modular builds it
35+
fills up faster than you would expect. The issue is not the size of the representation
36+
itself. It is that when multiple modules include the same headers, Clang has no memory
37+
of having already mapped those files and simply maps them again. The address space
38+
grows with the number of modules rather than the number of unique files, and once it
39+
runs out, the build fails.
40+
41+
The community looked seriously at widening `SourceLocation` to 64 bits to buy more
42+
room, but the proposal did not land. The concern was legitimate: `SourceLocation` is
43+
embedded across a huge number of AST nodes, so making it bigger raises memory usage
44+
for every build, not just the ones actually hitting the limit. It is a global cost for
45+
a problem that has a much more local cause.
46+
47+
## The Approach
48+
49+
The core idea is to introduce deduplication at the point of allocation. Before
50+
assigning a new region for a module's input files, we check whether those files have
51+
already been allocated and reuse the existing range if they have. This keeps the
52+
address space from growing proportionally with module count and lets it scale with
53+
unique content instead.
54+
55+
The work starts with a `DenseMap`-based prototype to validate the concept and confirm
56+
the numbers move in the right direction. From there it extends to an
57+
`llvm::IntervalMap` design that handles more complex scenarios, including cases where
58+
different modules serialize different amounts of location data for the same file.
59+
Alongside the implementation, the project covers diagnostic correctness, include-stack
60+
reconstruction, and upstream patch preparation for LLVM review.
61+
62+
## What We Hope to Achieve
63+
64+
If this works the way we expect, large modular builds that are currently approaching
65+
the limit will complete without exhaustion. Duplicated headers stop eating into the
66+
address space, diagnostics stay correct, and the fix is local enough that nothing
67+
else in the compiler has to change. The address space scales with unique content
68+
instead of module count.
69+
70+
## Relevant Links
71+
72+
- [LLVM Discourse: Revisiting 64-bit source locations](https://discourse.llvm.org/t/revisiting-64-bit-source-locations/86556)
73+
- [LLVM Discourse: RFC: An opt-in CMake option for 64-bit Source Location](https://discourse.llvm.org/t/rfc-an-opt-in-cmake-option-for-64-bit-source-location/87538)
74+
75+
May the blessings of the Dragon be with us.
482 KB
Binary file not shown.

images/team/Ayokunle.jpg

249 KB
Loading

0 commit comments

Comments
 (0)