/* PR 6534 */ /* GCSE unified the two i<0 tests, but if-conversion to ui=abs(i) insertted the code at the wrong place corrupting the i<0 test. */ void abort (void); static char * inttostr (long i, char buf[128]) { unsigned long ui = i; char *p = buf + 127; *p = '\0'; if (i < 0) ui = -ui; do *--p = '0' + ui % 10; while ((ui /= 10) != 0); if (i < 0) *--p = '-'; return p; } int main () { char buf[128], *p; p = inttostr (-1, buf); if (*p != '-') abort (); return 0; }