Certain JIT intrinsics like Interlocked.Exchange<T> () and Interlocked.CompareExchange<T> () do not emit explicit null checks when this debug option is enabled. This means that on targets that can't turn signals into NREs, these intrinsics won't work correctly in the exceptional case.
Those methods take byref arguments, so its hard for them to be null, at least in c# code.
Nonetheless, it seems we have to do the check for MS.NET compatibility reasons. See this PR: https://github.com/mono/mono/pull/2268