------- Comment #7 from rguenth at gcc dot gnu dot org  2008-02-01 10:54 -------
gcse after reload removes the load imaginary part of the return value
(__complex__ float is returned in %eax/%edx pair):

@@ -274,12 +274,10 @@
        call    nanf
        fstps   -24(%ebp)
        movl    -24(%ebp), %ecx
-       movl    %ecx, -12(%ebp)
-       movl    %ecx, %eax
-       movl    -12(%ebp), %edx
        addl    $36, %esp
        popl    %ebx
        popl    %ebp
+       movl    %ecx, %eax
        ret

etc.

This is probably a DF and/or target issue.  The testcase can be simplified
to only call for example the first check_complex function in main().
It also fails with -O -fno-inline -fgcse-after-reload, mycacoshf is the
function that is miscompiled (as it returns a complex).


-- 

rguenth at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |zadeck at gcc dot gnu dot
                   |                            |org, stevenb dot gcc at
                   |                            |gmail dot com, matz at gcc
                   |                            |dot gnu dot org


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

Reply via email to