/* { dg-do run } */ /* { dg-options "-O2" } */ #include struct wrapper_t { long k; long e; }; struct wrapper_t **table; __attribute__ ((weak, regparm (2))) void update (long k, long e) { struct wrapper_t *elmt; elmt = table[k % 3079]; if (elmt == 0) return; elmt->e = e; } int main () { table = (struct wrapper_t **) malloc (20 * sizeof (struct wrapper_t *)); for (int i = 0; i < 20; i++) table[i] = (struct wrapper_t *) calloc (sizeof (struct wrapper_t), 1); if (table[10]->e != 0) abort (); update (10, 20); if (table[10]->e != 20) abort (); return 0; }