The effective type rules in the C programming language enable type-based aliasing analysis (TBAA). These rules are very old and can be found already in ANSI X3.159-1989. Fundamentally, if a variable is declared with a type, then it is undefined behavior when it is accessed using an incompatible type. Undefined behavior at this point is exploited by some compilers for optimization, but it an implementation could also allow those accesses, or even add run-time type checking. The C standard committee in the past believed that the market will pick the best solution. As we known, the market preferred optimization over safety. In reality, the rules are a bit more complicated and are not based only on compatibility of types. In particular, different qualifiers and different signedness is allowed, there are exceptions for character types, and there are rules for accessing members of structure...