Session Type
Quick Talks
Date & Time
Thursday, October 12, 2023, 11:00 AM - 12:00 PM
Name
Quick Talks
Talk Order

1) Seamless debugging of emulated applications with LLDB - Pavel Labath
2) Compiler backend design with MLIR - Sasha Lopoukhine
3) Debug info for concurrency in LLVM - Adrian Prantl
4) Differential Outlining: outlining similar instruction sequences - Girish Mururu
5) EmitC - Recent Improvements and Future Development - Marius Brehler

Abstract/s

Seamless debugging of emulated applications with LLDB - Pavel Labath
We will talk about how we’ve adapted LLDB to provide a native-like user experience for debugging non-native applications, including advanced features like expression evaluation and process attaching. The talk will focus on integration of LLDB with Google’s user-space emulator (GEMU), but we believe that this topic will be interesting for anyone wishing to improve debugging experience in a complex environment.

Compiler backend design with MLIR - Sasha Lopoukhine
We present our work on a backend MLIR dialect representing the RISC-V instruction set, designed to facilitate compilation to assembly for standard and novel RISC-V hardware. We explore how leveraging a multi-level compilation approach gives us control over what information to preserve when lowering higher-level operations down to assembly. We show how to represent hardware extensions with additional dialects, and how we have approached register allocation in SSA form.

Debug info for concurrency in LLVM - Adrian Prantl
In his keynote “The State of Debugging in 2022” at SPLASH’22 [1], Robert O’Callahan calls out that no pairing of debugger and compiler attempted to support a debugging experience for async/await language constructs. But could this be done? In this talk we will describe how we co-designed the queue mechanism in the runtime, the ABI and the debug info generated by the compiler, and the debugger itself to create a seamless debugging experience for Swift async functions that allows stepping in and out of asynchronous functions and displaying virtual backtraces, by using existing LLVM debug info features in a new context.

Differential Outlining: outlining similar instruction sequences - Girish Mururu
Reducing the size of mobile applications is an important optimization goal and there have been several compiler techniques towards it. One such technique is outlining of repeated instruction sequences. The idea of differential outlining is to look for similar instruction sequences rather than same sequences of instructions to outline. If there are two sequences of instructions that are similar, then the sequences can be outlined with one of the sequences. The original sequences can then be replaced with a jump to the outline. For one with unwanted changes in the outline due to the differences, the effects from the differences are reverted after the jump back.

EmitC - Recent Improvements and Future Development - Marius Brehler
EmitC is a dialect to generate C and C++ from MLIR. The EmitC dialect is part of the main tree and allows to convert operations from other MLIR dialects to EmitC operations. These operations can be translated to C/C++ through an emitter, which can then be compiled into native code. In this talk, we provide an update about the current and ongoing development of the dialect and its potential future. We summarize use cases that we have seen in the last year where EmitC is used and present how the dialect has been recently enhanced to better support such use cases. Furthermore, we discuss what is still missing and how the dialect can further evolve

Location Name
California Ballroom