SN Systems Tech Blog


Supporting Regular and Thin LTO with a Single LTO Bitcode Format

ARTICLE BY: Matthew Voss
POSTED: Nov 28, 2019
TAGS: LLVM, LLVM Developers Meeting, LTO, Toolchain

In LLVM versions up to and including 10.0, LTO bitcode files are specialized to either Thin or Regular LTO. As a user or middleware library provider, this increases the complexity. A user must recompile all files for the type of LTO and library providers must ship two versions of their bitcode. This talk outlines Sony Interactive Entertainment’s (SIE) solution: a single LTO bitcode format that can be used with both Thin and Regular LTO backends.


Measuring the User Debug Experience

ARTICLE BY: Greg Bedwell
POSTED: Jul 11, 2019
TAGS: Compiler, Debugger, LLVM, Toolchain

For a game to hit 30 frames-per-second, all of the frame compute has to fit into ~33.3 ms, at 60 frames-per-second it has to fit into ~16.7 ms. Games are reliant on compiler optimizations to get near to these target frame times, without these optimizations the game may be unplayable. Unfortunately, compiler optimizations tend to interfere with the "debuggability" of the code. This can be for legitimate reasons, i.e. some optimizations fundamentally changing the structure of the code and it may no longer resemble the original source code. In other cases, it can be down to the compiler not preserving debug information that could have been preserved. Game developers often need to play the fully optimized game in order to trigger the required condition to reproduce a reported bug. Making it easier to debug fully optimized code is a request that we hear regularly from game developers.


Error Handling in Libraries: A Case Study

ARTICLE BY: James Henderson
POSTED: Dec 13, 2018
TAGS: DWARF, LLVM, LLVM Developers Meeting, Toolchain

Using work performed on the DWARF debug line parser earlier this year as an example, this talk will show some of the pitfalls and problems a library developer has to be aware of when handling errors in their code, and will present some good rules of thumb that should be followed.