Strict Alias
Strict aliasing is an assumption, made by the C (or C++) compiler, that dereferencing pointers to objects of different types will never refer to the same memory location (i.e. alias each other.)
In the following example, int *
and float *
are different pointer types, so the assembly only loads %rdi
once, but not for the case where both
arguments have the same pointer type.
1 | void f(int *x, int *y) |
http://cellperformance.beyond3d.com/articles/2006/06/understanding-strict-aliasing.html