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.
void f(int *x, int *y)