------- Comment #5 from falk at debian dot org 2006-02-19 18:19 ------- The problem apparently comes from using negation on an induction variable, in a context where widening is needed:
[EMAIL PROTECTED]:/tmp% cat alpha.c void abort(void); int printf(const char *format, ...); __attribute__((noinline)) void gen_rtx_CONST_INT(long x) { if (-x > 10) abort(); } __attribute__((noinline)) int alpha_expand_prologue(long frame_size) { int probed; for (probed = 1; probed < frame_size; probed += 2) { printf("probed = %d, frame_size = %ld\n", probed, frame_size); gen_rtx_CONST_INT (-probed); } } int main(void) { alpha_expand_prologue(10); return 0; } [EMAIL PROTECTED]:/tmp% /src/gcc-2006.02.19/build/prev-gcc/xgcc -B/src/gcc-2006.02.19/build/prev-gcc/ -g -O2 alpha.c && ./a.out probed = 1, frame_size = 10 probed = 3, frame_size = 10 probed = 5, frame_size = 10 probed = 7, frame_size = 10 probed = 9, frame_size = 10 probed = 11, frame_size = 10 zsh: abort (core dumped) ./a.out [EMAIL PROTECTED]:/tmp% /src/gcc-2006.02.19/build/prev-gcc/xgcc -B/src/gcc-2006.02.19/build/prev-gcc/ -g -O2 -fno-ivopts alpha.c && ./a.out probed = 1, frame_size = 10 probed = 3, frame_size = 10 probed = 5, frame_size = 10 probed = 7, frame_size = 10 probed = 9, frame_size = 10 -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26361