LLVM-backed goodies in LDC

Johan Engelen
May 4 @ 11:00

Duration: 50 minutes
Talk type: Presentation
Level: All
Slides: PDF, dconf_asan.d, dconf_fuzz.d, fuzz_dxml.d


A major part of LDC development is related with LLVM development. The LDC team closely follows (and contributes to) LLVM development, in order to expose the "latest and greatest" LLVM features to D developers. Since last DConf, LDC gained many new LLVM-based capabilities: AddressSanitizer, fuzzing, IR-based PGO, dynamic codegen at runtime, experimental integration of LLD, better integration of LLVM's compiler-rt runtime libraries. In this talk, I will focus on a selection of LDC's LLVM-based features: what they do and how they work, with examples of how they can be used effectively.

Speaker Bio:

Johan Engelen is one of the core LDC developers. He is also a D compiler consultant for Weka.io (probably the largest industrial single-executable D codebase) and maintains and adds features to their fork of LDC. While working on LDC, he often studies the compiler output IR and assembly. To aid this, he helped setting up LDC at d.godbolt.org. Examples of his recent contributions to LDC related to LLVM functionality are: fuzzing with libFuzzer, better AddressSanitizer support, and IR-based PGO. Johan (PhD Electrical Engineering) is assistant professor in the Robotics and Mechatronics (RAM) group at the University of Twente, the Netherlands. His software engineering skills stem largely from participating in open source communities such as Inkscape, LLVM, Dlang, and LDC.

QA Systems