This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: spec2000 regression
> > current tree does not:
> >
> > pushl %ebp
> > movl %esp, %ebp
> > pushl %eax
> > pushl %eax
> > movl a, %eax
> > andl $-16, %esp
> > movl $1, (%eax)
> > movl b, %eax
> > movw $2, (%eax)
> > movl a, %eax
> > movl (%eax), %eax
> > movl %ebp, %esp
> > popl %ebp
> >
> > so I would guess that something must be wrong... But it can be unrelated to your change of course.
>
> My guess is that this is not related to aliasing, because if you change that
> long long to long, it will work as you expect (unless -fno-strict-aliasing,
> of course).
It does not for me. I am still getting:
pushl %ebp
movl %esp, %ebp
pushl %eax
pushl %eax
movl a, %eax
andl $-16, %esp
movl $1, (%eax)
movl b, %eax
movw $2, (%eax)
movl a, %eax
movl (%eax), %eax
movl %ebp, %esp
popl %ebp
instead of movl $1, %eax I would expect. In fact I first tried long and then I jumped to
conclusion that long may change the pointer value itself (that is incorrect) and I tried
long long.
Perhaps you have older tree.
In 2.95 it works.
Honza
>
> Jakub