/* { dg-do compile { target ia64-*-* } } */
/* { dg-options "-O2" } */

int __sync_fetch_and_add_si (int *, int);

inline unsigned int
bar (volatile unsigned int *mem, unsigned int val)
{
  return __sync_fetch_and_add_si((int *)mem, (int)val);
}

volatile unsigned int x;

void foo (unsigned short *a)
{
  *a = bar (&x, 1) + 1;
}
