------- Additional Comments From uros at kss-loka dot si  2004-10-19 09:55 -------
Testcase from comment #9 and '-O2 -msse -fomit-frame-pointer' procduces code
that seems OK:

prepare:
        pushl  %ebp
        pushl  %edi
        movl   $hmag+512, %edi
        pushl  %esi
        movl   $hphase, %esi
        pushl  %ebx
        movl   $hmag, %ebx
        subl   $76, %esp
        movss  .LC0, %xmm0
        movl   96(%esp), %ebp
        movaps %xmm0, 32(%esp)
        .p2align 4,,15
.L2:
        flds   (%ebx)
        addl   $4, %ebx
        fchs
        flds   (%esi)
        addl   $4, %esi
        fstpl  (%esp)
        fstpl  16(%esp)
        call   sin
        fldl   16(%esp)
        cmpl   %ebx, %edi
        fmulp  %st, %st(1)
        fmull  .LC2
        fstps  (%ebp)
        jne    .L2
        addl   $76, %esp
        popl   %ebx
        popl   %esi
        popl   %edi
        popl   %ebp
        ret

BTW: when alter_reg() for reg 81 is called from reload() (at line ~836,
reload1.c) it gets right offset (-32). [This offset is calculated at line ~1969
in reload1.c]. Something changes this correct offset from (-32) to (-56) if
frame pointer is not omitted.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=17990

Reply via email to