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