mellon@TIS.LLNL.GOV (Ted Lemon) (02/17/89)
When I compile a certain test program with all optimizations enabled, cc1 dies of a SIGIOT signal, because final() calls abort(). Two examples of programs that exhibit this bug follow - the first one is actually incorrect C code because the variable i is used before it is initialized, but the second file is correct, because i is initialized. The third program which follows is a version of gcctest.c in which i is initialized. It does not exhibit the bug. I'm trying to trace this bug back to its origins myself, but I haven't been getting very far - this is my first time looking at the optimizer - so if someone fixes it, I'd appreciate hearing what the problem was. Thanx! _MelloN_ ------------------------------gcctest.c----------------------------- int brick[20 ]; int hand; int isnum(), num(); void fred_villari (u2) { int i; if ((brick [hand] - i) < 0) brick [hand] = 0; } -------------------------------------------------------------------- ------------------------------gcctesti.c---------------------------- int brick[20 ]; int hand; int isnum(), num(); void fred_villari (u2) { int i; if (u2 == -1) i = 1; else { if (!isnum (u2)) return; i = num (u2); } if ((brick [hand] - i) < 0) brick [hand] = 0; } -------------------------------------------------------------------- ------------------------------gcctestn.c---------------------------- int brick[20 ]; int hand; int isnum(), num(); void fred_villari (u2) { int i = u2; if ((brick [hand] - i) < 0) brick [hand] = 0; } -------------------------------------------------------------------- The command I used to evoke this problem, and the output, are shown below: slypnir% cc1 gcctestn.c -quiet gcctestn.c -fstrength-reduce -fcombine-regs -fforce-mem -fforce-addr -finline-functions -fwritable-strings -O -Wall -version -o gcctestn.s GNU C version 1.33 (68k, MIT syntax) compiled by GNU C version 1.33. slypnir% cc1 gcctesti.c -quiet gcctesti.c -fstrength-reduce -fcombine-regs -fforce-mem -fforce-addr -finline-functions -fwritable-strings -O -Wall -version -o gcctesti.s GNU C version 1.33 (68k, MIT syntax) compiled by GNU C version 1.33. IOT trap (core dumped) slypnir% cc1 gcctest.c -quiet gcctest.c -fstrength-reduce -fcombine-regs -fforce-mem -fforce-addr -finline-functions -fwritable-strings -O -Wall -version -o gcctest.s GNU C version 1.33 (68k, MIT syntax) compiled by GNU C version 1.33. gcctest.c: In function fred_villari: gcctest.c:7: warning: variable `i' used uninitialized in this function IOT trap (core dumped) slypnir%