Undefined behavior - what is it, and why should I care?

More and more people are becoming aware of undefined behavior (UB) in C and C++. It has become a research interest at several universities, and code generators routinely use information about UB when deciding how to optimize code. In this talk, I will give examples of UB, show how optimizers reason about UB while doing code generation, and talk about strategies to avoid introducing UB into your code base. Time permitting, I will give an overview of the current (and upcoming) tools for detecting UB in existing code.