/* { dg-do compile } */ /* { dg-options "-O3" } */ #if __SIZEOF_POINTER__ != __SIZEOF_LONG__ #define long __INTPTR_TYPE__ #endif void *fn1(void *p1, void *p2, long p3) { long a = (long)p1, b = (long)p2, c = p3; while (c) { int d = ((int *)b)[0]; c--; ((char *)a)[0] = d; a++; } return 0; }