------- Comment #14 from pluto at agmk dot net 2007-07-31 18:29 ------- (In reply to comment #13) > Created an attachment (id=13550) --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=13550&action=view) [edit] > An experimental patch > > This patch works for the testcase.
i've applied this patch to 4.2.1 and compile testcases: $ cat 421-pr30961.s32 convert: flds 4(%esp) ret load: subl $16, %esp movl 20(%esp), %eax movzwl (%eax), %eax movw %ax, 14(%esp) movzwl %ax, %eax addl $16, %esp ret $ cat 421-pr30961.s64 convert: movl %edi, -4(%rsp) movss -4(%rsp), %xmm0 ret load: movzwl (%rdi), %eax movw %ax, -2(%rsp) movzwl %ax, %eax ret convert/m32/m64 look fine. load/m32/m64 still look unoptimal. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30961