/* PR middle-end/41935 */ extern void abort (void); long int foo (int n, int i, int j) { typedef int T[n]; struct S { int a; T b[n]; }; return __builtin_offsetof (struct S, b[i][j]); } int main (void) { typedef int T[5]; struct S { int a; T b[5]; }; if (foo (5, 2, 3) != __builtin_offsetof (struct S, b) + (5 * 2 + 3) * sizeof (int)) abort (); if (foo (5, 5, 5) != __builtin_offsetof (struct S, b) + (5 * 5 + 5) * sizeof (int)) abort (); return 0; }