__attribute__ ((__noinline__)) char *sf(char *s, char *s0) { asm (""); while (*--s == '9') if (s == s0) { *s = '0'; break; } ++*s++; return s; } int main() { char s[] = "999999"; char *x = sf (s+2, s); if (x != s+1 || __builtin_strcmp (s, "199999") != 0) __builtin_abort (); return 0; }