On Mon, Mar 9, 2015 at 8:26 PM, Robbert Krebbers <mailingli...@robbertkrebbers.nl> wrote: > I was wondering whether GCC uses 6.5.16.1p3 of the C11 standard as a license > to perform certain optimizations. If so, could anyone provide me an example > program. > > In particular, I am interested about the "then the overlap shall be exact" > part of 6.5.16.1p3: > > If the value being stored in an object is read from another > object that overlaps in any way the storage of the first > object, then the overlap shall be exact and the two objects > shall have qualified or unqualified versions of a compatible > type; otherwise, the behavior is undefined.
struct X { int i; int j; }; int foo (struct X *p, struct X *q) { q->j = 1; p->i = 0; return q->j; } will optimize to return 1. If *p and *q were allowed to overlap (&p->i == &q->j) this would invoke undefined behavior. Richard.