/* { 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; | |
} |