This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[PATCH] Fix ia64 bootstrap failure caused by df-problems.c change (PR bootstrap/43994)
- From: Jakub Jelinek <jakub at redhat dot com>
- To: Paolo Bonzini <bonzini at gnu dot org>, Alexandre Oliva <aoliva at redhat dot com>
- Cc: gcc-patches at gcc dot gnu dot org
- Date: Thu, 6 May 2010 00:00:36 +0200
- Subject: [PATCH] Fix ia64 bootstrap failure caused by df-problems.c change (PR bootstrap/43994)
- Reply-to: Jakub Jelinek <jakub at redhat dot com>
Hi!
Apparently the mode between DF_REF_REAL_REG and *DF_REF_REAL_LOC can differ,
it seems we need to look at the latter, otherwise we can replace a reg
with one mode with a DEBUG_EXPR with different mode.
Bootstrapped/regtested on x86_64-linux and i686-linux, fixes the testcase
in x86_64-linux to ia64-linux cross.
Ok for trunk?
2010-05-05 Jakub Jelinek <jakub@redhat.com>
PR bootstrap/43994
* df-problems.c (dead_debug_insert_before): Use *DF_REF_REAL_LOC
instead of DF_REF_REAL_REG.
--- gcc/df-problems.c.jj 2010-05-05 19:11:01.000000000 +0200
+++ gcc/df-problems.c 2010-05-05 19:49:00.000000000 +0200
@@ -3501,8 +3501,8 @@ dead_debug_insert_before (struct dead_de
cur->next = NULL;
if (!reg
|| (GET_MODE_BITSIZE (GET_MODE (reg))
- < GET_MODE_BITSIZE (GET_MODE (DF_REF_REAL_REG (cur->use)))))
- reg = DF_REF_REAL_REG (cur->use);
+ < GET_MODE_BITSIZE (GET_MODE (*DF_REF_REAL_LOC (cur->use)))))
+ reg = *DF_REF_REAL_LOC (cur->use);
}
else
tailp = &(*tailp)->next;
@@ -3524,11 +3524,11 @@ dead_debug_insert_before (struct dead_de
/* Adjust all uses. */
while ((cur = uses))
{
- if (GET_MODE (DF_REF_REAL_REG (cur->use)) == GET_MODE (reg))
+ if (GET_MODE (*DF_REF_REAL_LOC (cur->use)) == GET_MODE (reg))
*DF_REF_REAL_LOC (cur->use) = dval;
else
*DF_REF_REAL_LOC (cur->use)
- = gen_lowpart_SUBREG (GET_MODE (DF_REF_REAL_REG (cur->use)), dval);
+ = gen_lowpart_SUBREG (GET_MODE (*DF_REF_REAL_LOC (cur->use)), dval);
/* ??? Should we simplify subreg of subreg? */
df_insn_rescan (DF_REF_INSN (cur->use));
uses = cur->next;
Jakub