Under the strict aliasing rule an object may be accessed only through an lvalue of its own type (or a closely related one: a signed or unsigned variant, a character type), so the compiler may assume that pointers to unrelated types never refer to the same memory. GCC applies the rule from -O2.
Quantitative Finance · المسرد