1  /* { dg-do compile } */
       2  /* { dg-options "-O3" } */
       3  
       4  #if __SIZEOF_POINTER__ != __SIZEOF_LONG__
       5  #define long __INTPTR_TYPE__
       6  #endif
       7  
       8  void *fn1(void *p1, void *p2, long p3)
       9  {
      10    long a = (long)p1, b = (long)p2, c = p3;
      11  
      12    while (c)
      13      {
      14        int d = ((int *)b)[0];
      15  
      16        c--;
      17        ((char *)a)[0] = d;
      18        a++;
      19      }
      20    return 0;
      21  }
      22