ASan inserts calls to __asan_handle_noreturn in front of all calls to noreturn
functions. This is needed for functions that move SP without going through ASan
epilogue, in order to maintain the requirement that stack below SP has clean
shadow.
(Thanks to Evgenii for the explanation.)
However, UBSan does not violate the above contract. The additional
instrumentation added by ASan before __ubsan_handle_builtin_unreachable is
therefore unnecessary. This patch changes ASan to not instrument call sites
marked with !nosanitize.
rdar://problem/40723397