This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug rtl-optimization/34012] [4.3 Regression] Pessimization caused by fwprop
- From: "jakub at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 7 Nov 2007 10:24:45 -0000
- Subject: [Bug rtl-optimization/34012] [4.3 Regression] Pessimization caused by fwprop
- References: <bug-34012-87@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #1 from jakub at gcc dot gnu dot org 2007-11-07 10:24 -------
With 4.2 and earlier, we get:
movabsq $578721382704613384, %rax
movq %rsp, %rdi
movq %rax, (%rsp)
movq %rax, 8(%rsp)
movq %rax, 16(%rsp)
movq %rax, 24(%rsp)
movq %rax, 32(%rsp)
movq %rax, 40(%rsp)
movq %rax, 48(%rsp)
movq %rax, 56(%rsp)
movq %rax, 64(%rsp)
movq %rax, 72(%rsp)
call bar
with the trunk:
movabsq $578721382704613384, %rax
movabsq $578721382704613384, %r11
movq %rax, (%rsp)
movabsq $578721382704613384, %rax
movq %rsp, %rdi
movq %rax, 8(%rsp)
movabsq $578721382704613384, %r10
movabsq $578721382704613384, %r9
movabsq $578721382704613384, %r8
movabsq $578721382704613384, %rsi
movabsq $578721382704613384, %rcx
movabsq $578721382704613384, %rdx
movabsq $578721382704613384, %rax
movq %r11, 16(%rsp)
movq %r10, 24(%rsp)
movq %r9, 32(%rsp)
movq %r8, 40(%rsp)
movq %rsi, 48(%rsp)
movq %rcx, 56(%rsp)
movq %rdx, 64(%rsp)
movq %rax, 72(%rsp)
call bar
which is far worse. The predicate on the source operand on movdi_1_rex64
allows it (general_operand), but the constraints don't (but letting forwprop to
try all constraints to see what is and is not desirable would be weird).
Alternatively, perhaps forwprop could try to emit_move_insn and see if it
doesn't create more insns than the one it is substing into, if more than one,
it should just punt, otherwise it can just subst into it.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34012