MeowRay@hachyderm.io (@HaskRay) profile picture

Maintainer of LLVM MC, Clang driver, lld/ELF, and libunwind

California, USA
Joined November 2012
Photo by MeowRay@hachyderm.io (@HaskRay)Photo by MeowRay@hachyderm.io (@HaskRay)Photo by MeowRay@hachyderm.io (@HaskRay)Photo by MeowRay@hachyderm.io (@HaskRay)Photo by MeowRay@hachyderm.io (@HaskRay)Photo by MeowRay@hachyderm.io (@HaskRay)Photo by MeowRay@hachyderm.io (@HaskRay)Photo by MeowRay@hachyderm.io (@HaskRay)Photo by MeowRay@hachyderm.io (@HaskRay)Photo by MeowRay@hachyderm.io (@HaskRay)
lld 24.x optimization preview: parallel symbol interning. Linking clang-release at --threads=8: 181 -> 151 ms
1
15
758
lld/ELF with my parallel symbol interning patches, vs mold (2026-10-21, Rust), vs wild (2026-11-04), linking ELF clang-release, on Apple M4 Max.
1
130
lld linking Chromium (CREL, --icf=all): 3.46 -> 2.08 s. In chromium-debug, Moore's partition refinement algorithm performs poorly.
8
658
In 2020, reviewing lld's --optimize-bb-jumps (reviews.llvm.org/D68065), I asked that the pass run inside finalizeAddressDependentContent "to accommodate thunks and linker script symbol changes." The author replied: "Could we do this in a later patch?" There was no later patch.
1
14
1,283
and another lld maintainer independently flagged the misplacement and found my 2020 comment. When I left Google in 2024, --optimize-bb-jumps still had no users. The answer was always "we will use it." Today nothing in llvm-project passes the flag; only three lld tests do.
1
3
282
Google's requirements have drifted away from the already very broad range that lld, and llvm-project at large, serves. A feature only one company's internal pipeline might need should prove itself there before it lands upstream, where everyone maintains it.
2
150
That placement was a wrong-code bug from day one: the pass shrinks .text after .relr.dyn is computed, so RELR entries point at the wrong words. Since a change this year, .eh_frame_hdr search keys go stale too. An AI-assisted patch surfaced it recently,
2
2
394
I was junior; he was far more senior. Landing a feature on a promise of future use, and deferring the reviewer's design concern to "a later patch", is not how open source should work.
1
74
The new funders build GPU and accelerator compilers, and their other compilers (Flang, Triton, IREE, their own stacks) are built on MLIR. For them, a Clang that emits an MLIR dialect is the point, not an implementation detail.
1
8
680
For C++ programmers who were Clang's main constituency, CIR has to earn its place by being better at what the AST, the CFG, and classic CodeGen do today: diagnostics, safety analyses, and optimizations that need C++ semantics, without making the compiler slower to build or run
5
568
github.com/MaskRay/ccls/rele… Indexed forwarding functions such as std::make_unique<A>(...) and std::vector<A>::emplace_back(...). Hover on an auto variable in a function template shows the deduced type when the template has exactly one instantiation. Adapt to LLVM 22, 23 and 24.
1
8
699
edgls is a C/C++ language server built on the EDG C/C++ front end. It is a fork of ccls with the clang-based parts replaced: the indexer, diagnostics, compile command handling, code completion, signature help, and formatting. github.com/MaskRay/edgls Verdict: Slower than clang
2
5
62
3,610
Settling an old score: --fortran-common (added in 2020) was removed from lld/ELF in September 2026, removing one blocker of fully parallel input file parsing and symbol resolution.
1
10
1,283
Credit where it's due - I'm glad I could connect with the original author six years later. For features added today, I doubt maintainers in one year will be as lucky in finding the original authors.
1
217
I made a typo earlier and wrote 'useful' instead of 'useless' regarding the 'testsuite must pass' requirement. The author agreed without question. Their other replies are almost direct copy pastes.
3
743
Extractive patches from a new contributor to llvm binary tuilities. "But it's Codex output the author doesn't really own, so reviewers end up supplying the understanding." llvm-project really should really adopt a ghostty-style vouch system.
1
2
13
1,934
There is finally a migration path for LLVM's llvm::cl::opt, off dynamic initialization and onto a data-only TableGen representation: one struct per library, constant-initialized, read with a single load. No option spellings change. discourse.llvm.org/t/rfc-dec…
2
2
34
2,430