1 /* PR 6534 */ 2 /* GCSE unified the two i<0 tests, but if-conversion to ui=abs(i) 3 insertted the code at the wrong place corrupting the i<0 test. */ 4 5 void abort (void); 6 static char * inttostr(long i,char buf[128])7inttostr (long i, char buf[128]) 8 { 9 unsigned long ui = i; 10 char *p = buf + 127; 11 *p = '\0'; 12 if (i < 0) 13 ui = -ui; 14 do 15 *--p = '0' + ui % 10; 16 while ((ui /= 10) != 0); 17 if (i < 0) 18 *--p = '-'; 19 return p; 20 } 21 22 int main()23main () 24 { 25 char buf[128], *p; 26 27 p = inttostr (-1, buf); 28 if (*p != '-') 29 abort (); 30 return 0; 31 } 32