/* { dg-do run } */ static struct S { int *p1; int *p2; } s; typedef __UINTPTR_TYPE__ uintptr_t; int foo() { int i = 1, j = 2; struct S s; int **p; s.p1 = &i; s.p2 = &j; p = &s.p1; uintptr_t pi = (uintptr_t)p; pi = pi + sizeof (int *); p = (int **)pi; **p = 3; return j; } int main() { if (foo () != 3) __builtin_abort (); return 0; }