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