[PATCH] D21928: Aliasing of constant pointers (inttoptr Const) for BasicAA

Eli Friedman via llvm-commits llvm-commits at lists.llvm.org
Wed Jul 6 09:37:33 PDT 2016


eli.friedman added a comment.

Please ignore my previous comments, they were overly terse and not quite correct.

Analyzing the numeric value of a pointer to determine two pointers are noalias is not safe, period.

On most operating systems, you can mmap() a page of memory to multiple addresses, and users will expect it to point to the same memory.  The C++ standard addresses this explicitly for atomic operations: "Operations that are lock-free should also be address-free. That is, atomic operations on the same memory location via two different addresses will communicate atomically."

If you're dealing with unusual addressing systems, the pointer value also can't be used like this because the pointer could contain metadata that doesn't actually affect to the memory location.

It should be okay to determine that two pointers with the same value are MustAlias... but we already perform that check (see isValueEqualInPotentialCycles).

You could write a patch to return PartialAlias results for constant integer pointers where we can prove overlap, I guess.


http://reviews.llvm.org/D21928





More information about the llvm-commits mailing list