The IR doesn't have a proper concept of invalid pointers, and "null"
constants are just all zeros (though it really needs one).
The nonnull attribute blurs this distinction, and handling in it
isKnownNonZero without checking for the default address space is also
simply wrong. However, it seems some statepoint/gc.relocate users are
relying on the current behavior in addrspace(1). This will probably
need fixing as well, since I believe I recently saw a case where this
was suspect.
LangRef says nonnnull means "not the value null", and the value null is an all-zero bit pattern. That's maybe not ideal for some targets, sure, but I don't think there's a reason to call it out here specifically. If we decide to change the meaning of the attributes in question, we'll audit all the users.