/* { dg-do compile } */ /* { dg-options "-O2" } */ char* inttostr(int i, char* buf, int len) { unsigned int ui = (i > 0) ? i : -i; char *p = buf + len - 1; *p = '\0'; do { *--p = '0' + (ui % 10); } while ((ui /= 10) != 0); if (i < 0) { *--p = '-'; } return p; } /* In out-of-SSA we should have avoided splitting the latch edge of the loop by inserting copies. */ /* { dg-final { scan-assembler-times "L\[0-9\]+:" 2 } } */