+ // Case I: Comparing real pointers with "small" integers.
+ // Really we should only do this for NULL, but pragmatically speaking on non-bare-metal systems,
+ // an allocation will never be at the very bottom of the address space.
+ // Such comparisons can arise when comparing empty slices, which sometimes are "fake"
+ // integer pointers (okay because the slice is empty) and sometimes point into a
+ // real allocation.
+ // The most common source of such integer pointers is `NonNull::dangling()`, which
+ // equals the type's alignment. i128 might have an alignment of 16 bytes, but few types have
+ // alignment 32 or higher, hence the limit of 32.
+ // FIXME: Once we support intptrcast, we could try to fix these holes.
+ if bits < 32 {