1  /* { dg-do compile } */
       2  /* { dg-options "-O2" } */
       3  
       4  int __sync_fetch_and_add_si (int *, int);
       5  
       6  inline unsigned int
       7  bar (volatile unsigned int *mem, unsigned int val)
       8  {
       9    return __sync_fetch_and_add_si((int *)mem, (int)val);
      10  }
      11  
      12  volatile unsigned int x;
      13  
      14  void foo (unsigned short *a)
      15  {
      16    *a = bar (&x, 1) + 1;
      17  }