Is LLVM smart enough to optimize that away, even when using shared
libraries?
Yes absolutely. Just build with -fvisibility-hidden or use an export
map to say that my_null_pointer is not exported. If it is static, it
will also do it at -O2. This is not even a particularly aggressive
optimization.
Sure, but the whole idea here is for the compiler to *not* know that
the pointer has a zero value. What I was really asking was whether
LLVM would figure that out without taking any special action to
restrict the visibility of the pointer.