/* { dg-do run { target sync_int_long } } */ /* { dg-options "-O2" } */ volatile int mem; int bar (int x, int y) { if (x) __sync_fetch_and_add(&mem, y); return 0; } extern void abort (void); int main (int argc, char *argv[]) { mem = 0; bar (0, 1); bar (1, 1); if (mem != 1) abort (); return 0; }