------- 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

Reply via email to