3 struct list
{ struct list
*n
; };
10 struct list _l
= { .n
= &_o
.l
};
12 int main(int argc
, char *argv
[])
17 /* Note the following is invoking undefined behavior but in
18 this kind of "obvious" cases we don't want to break things
19 unnecessarily and thus we avoid analyzing o as pointing
20 to nothing via the undefined pointer subtraction. Instead
21 we canonicalize the pointer subtraction followed by the
22 pointer conversion to pointer offsetting. */
23 o
= ((struct obj
*)((const char *)(o
->l
.n
)
24 - (const char *)&((struct obj
*)0)->l
));