The EuroLLVM conference happened again in person last week in London. It’s been a blast and two very intense days for me. Even though preparations have been slightly last minute, it was totally worth all the effort. After a two years break it was great to see old and new colleagues again in person and at the same time meet so many new developers who joined the community in the meantime.
The collective expertise in the audience remains to be the outstanding quality of the LLVM conferences. Presentations, discussions and round tables are on a level of technical excellence unequaled by any other conference I’ve seen. All recordings from the conference are published on the LLVM Youtube channel. Here is a summary of my personal highlights from the conference.
Finding Missed Optimizations Through the Lens of Dead Code Elimination
Day 2 started with a keynote that made big waves. Theodoros Theodoridis from ETH Zürich presented a nouvelle approach to utilize dead code elimination as an indicator for misbehaviors in optimization passes: recording, slides, abstract. The tool augments source input with extra function calls and measures success by checking whether these calls are still present in compiled output. Comparing of results between different versions of Clang is a great way to find regressions. Furthermore, the approach is not concerned with details like intermediate representations and thus also allows to compare against other compilers like GCC.
That said, the potential for automation is amazing: A script can drive generation of input with Csmith, instrumentation, compilation and result comparison. Differences indicate misbehaviors and they get checked against a database of known and previously found issues, before the input is reduced with C-Reduce. Outputs are almost complete bug reports, all without human interference!
ez-clang C++ REPL for bare-metal embedded devices
Naturally, presenting my very own project was a highlight for me as well: recording, slides, abstract. And it’s been a first-timer in terms of setup. When doing a live demo with an early-stage experimental tool that closely interacts with external hardware, things can go wrong in any possible way.
So I had to prepare. I brought my development board, a camera, loads of cables and a backup for everything. When submitting the talk, I asked to get scheduled after a break so I had enough time to set up and double-check. There are still so many more details, the spotlights on stage, reflections in the glass on the table and the resolution of the projector that made it hard for the audience to see the LED blink. However, both presentation and demo worked out pretty well! Please find the recording here:
Round tables are a great way to gather people for informal discussions on a defined topic. I scheduled two round tables beforehand, JIT and Embedded development with LLVM/Clang.
The JIT round table went as usual: A handful of attendees with very specific use-cases and almost no overlap. We talked about the state of ORC, JITLink, MCJIT and RuntimeDyLd. We shared tipps and best practices and discussed portation road-maps from MCJIT to ORCv1 and ORCv2. As always I pointed out the convenience of the #JIT channel on LLVM’s discord server for quick questions and discussions online.
The Embedded development with LLVM/Clang round table was a surprise for me. The embedded ecosystem is dominated by GCC and so there is usually not too much interest in LLVM anywhere online. On-site on the conference, however, I found myself with 30 people awaiting moderation. Targeted discussions are hard with a group of this size. After a small introduction and general topics, we collected common interests and split up into smaller groups: Clang multilib support, LLDB on embedded devices, size optimizations in Clang and the current state of standard library support. The last two even spawned their own follow-up round tables in the course of the conference.
I visited a few more round tables, like LLDB which was held by my former colleagues Jonas and Raffael. The dominating topic was debugging of optimized code. The Formal Verification round table discussed SMT solvers and on the Freestanding libc++ round table, we concluded to make one of the libc++ downstream adaptions public in order to identify their potential for upstreaming.
All in all the conference was a great experience. As always, the atmosphere is welcoming and attendees diverse. I am very much looking forward to EuroLLVM 2023 in Paris next year!