This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
RFA: patch for PR22072
- From: Vladimir Makarov <vmakarov at redhat dot com>
- To: gcc-patches <gcc-patches at gcc dot gnu dot org>
- Date: Tue, 06 Oct 2009 18:09:35 -0400
- Subject: RFA: patch for PR22072
The following patch solves one problem reported in PR22072 (additional
move generation). The reason for this problem can be found on
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22072
The old version of the corrected code was actually a typo. The fix
should be reliable because it creates additional conflicts (for early
clobbers as it should be). In any case I've checked it on a bootstrap
on x86_64. SPEC2000 changes are quite minor (the same performance in
measure error range and quit insignificant code size changes).
Ok to commit?
2009-10-06 Vladimir Makarov <vmakarov@redhat.com>
PR middle-end/22072
* ira-lives.c (check_and_make_def_conflict): Process all operands.
Index: gcc/ira-lives.c
===================================================================
--- gcc/ira-lives.c (revision 152403)
+++ gcc/ira-lives.c (working copy)
@@ -500,7 +500,7 @@
for (use = 0; use < recog_data.n_operands; use++)
{
if (use == def || recog_data.operand_type[use] == OP_OUT)
- return;
+ continue;
if (recog_op_alt[use][alt].anything_ok)
use_cl = ALL_REGS;
@@ -513,7 +513,7 @@
if ((use_match = recog_op_alt[use][alt].matches) >= 0)
{
if (use_match == def)
- return;
+ continue;
if (recog_op_alt[use_match][alt].anything_ok)
use_cl = ALL_REGS;