This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug rtl-optimization/17236] inefficient code for long long multiply on x86
- From: "bonzini at gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 19 Dec 2007 12:43:37 -0000
- Subject: [Bug rtl-optimization/17236] inefficient code for long long multiply on x86
- References: <bug-17236-1008@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #21 from bonzini at gnu dot org 2007-12-19 12:43 -------
Created an attachment (id=14793)
--> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=14793&action=view)
two hunks only from the previous patch
Indeed, if I only use the regclass.c and local-alloc.c hunks, I get only one
spill!
pushl %ebx
movl 8(%esp), %edx
movl 16(%esp), %eax
movl 20(%esp), %ecx
imull %edx, %ecx
movl 12(%esp), %ebx
imull %eax, %ebx
addl %ebx, %ecx
mull %edx
leal (%ecx,%edx), %edx
popl %ebx
and no reg-reg move.
With Uros' patch it does use memory imull's, but also adds reg-reg moves. The
next step should be to figure out why (with my patch and without his) reload
feels the need to put the memory operands from insns 7 and 8 into regs.
--
bonzini at gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Attachment #14792|0 |1
is obsolete| |
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=17236