------- Comment #3 from ubizjak at gmail dot com 2010-07-11 11:39 -------
For some reason, we got:
movl $0x41800000, 112(%esp)
movl $0x41700000, 116(%esp)
movl $0x41600000, 120(%esp)
movl $0x41500000, 124(%esp)
movl $0x41400000, 128(%esp)
movl $0x41300000, 132(%esp)
movl $0x41200000, 136(%esp)
movl $0x41100000, 140(%esp)
movl $0x41000000, 144(%esp)
movl $0x40e00000, 148(%esp)
movl $0x40c00000, 152(%esp)
movl $0x40a00000, 156(%esp)
movups 136(%esp), %xmm0
movaps %xmm0, 96(%esp)
movups 120(%esp), %xmm0
movaps %xmm0, 80(%esp)
movaps %xmm0, 160(%esp)
movaps 96(%esp), %xmm0
movaps %xmm0, 176(%esp)
>>> fldz
fstpl 60(%esp)
flds 184(%esp)
fstpl 52(%esp)
flds 180(%esp)
fstpl 44(%esp)
flds 176(%esp)
fstpl 36(%esp)
flds 172(%esp)
fstpl 28(%esp)
flds 168(%esp)
fstpl 20(%esp)
flds 164(%esp)
fstpl 12(%esp)
flds 160(%esp)
fstpl 4(%esp)
movl $.LC12, (%esp)
call printf
Changing fldz to "flds 188(%esp)" produces correct output.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44900