Diagnose 'unreachable' UB when a noreturn function returns.
- Insert a check at the end of functions marked noreturn.
- A decl may be marked noreturn in the caller TU, but not marked in the TU where it's defined. To diagnose this scenario, strip away the noreturn attribute and insert a check after the call.
Testing: check-clang, check-ubsan, check-ubsan-minimal, D40700
rdar://33660464
Unfortunately, this won't catch cases where the caller has a noreturn marking, but the callee doesn't. Maybe strip the noreturn attribute from the caller, then put the sanitizer check into both the caller and callee?