Moritz, While implementing the dynamic integer overflow checks that eventually lead to UBSan, we did two implementations: one based on generated IR and the other inside Clang. The latter approach was better and is the one that stuck. John