We know that certain pointers (e.g. non-extern-weak globals or allocas in default address space) are not null, in which case the lowest address they can be allocated at is their alignment.
This allows us to calculate better exit counts for loops that have an additional null check in the guarding condition (see @alloca_icmp_null_exit_count).
Not related to this patch but I wonder if we could add a way to treat address spaces other than zero as also having non null allocas. For example for the CHERI targets AS200 has almost exactly the same semantics as as0 (other than pointers having additional metadata) and these AS0 only optimizations result in worse codegen. Maybe the allocas can be null should be opt-in rather than the default?