/* PR middle-end/41935 */ /* { dg-do run } */ /* { dg-options "-O2" } */ extern void abort (void); struct A { int a; int b[10]; }; int foo (struct A *p) { return __builtin_offsetof (struct A, b[p->a]); } int main () { struct A a; a.a = 7; if (foo (&a) != 7 * sizeof (int) + __builtin_offsetof (struct A, b)) abort (); a.a = 2; if (foo (&a) != 2 * sizeof (int) + __builtin_offsetof (struct A, b)) abort (); return 0; }