Commit 2178b0f9 by Jakub Jelinek Committed by Jakub Jelinek

re PR debug/42728 ("-fcompare-debug failure (length)" at -O1)

	PR debug/42728
	* fwprop.c (all_uses_available_at): Return false if def_set dest
	is a REG that is used in def_insn.

	* gcc.dg/pr42728.c: New test.

From-SVN: r156037
parent 70202e48
2010-01-19 Jakub Jelinek <jakub@redhat.com>
PR debug/42728
* fwprop.c (all_uses_available_at): Return false if def_set dest
is a REG that is used in def_insn.
2010-01-19 Joern Rennecke <amylaar@spamcop.net> 2010-01-19 Joern Rennecke <amylaar@spamcop.net>
* doc/tm.texi (TARGET_FIXED_CONDITION_CODE_REGS): Add argument names. * doc/tm.texi (TARGET_FIXED_CONDITION_CODE_REGS): Add argument names.
......
...@@ -818,17 +818,23 @@ all_uses_available_at (rtx def_insn, rtx target_insn) ...@@ -818,17 +818,23 @@ all_uses_available_at (rtx def_insn, rtx target_insn)
} }
else else
{ {
rtx def_reg = REG_P (SET_DEST (def_set)) ? SET_DEST (def_set) : NULL_RTX;
/* Look at all the uses of DEF_INSN, and see if they are not /* Look at all the uses of DEF_INSN, and see if they are not
killed between DEF_INSN and TARGET_INSN. */ killed between DEF_INSN and TARGET_INSN. */
for (use_rec = DF_INSN_INFO_USES (insn_info); *use_rec; use_rec++) for (use_rec = DF_INSN_INFO_USES (insn_info); *use_rec; use_rec++)
{ {
df_ref use = *use_rec; df_ref use = *use_rec;
if (def_reg && rtx_equal_p (DF_REF_REG (use), def_reg))
return false;
if (use_killed_between (use, def_insn, target_insn)) if (use_killed_between (use, def_insn, target_insn))
return false; return false;
} }
for (use_rec = DF_INSN_INFO_EQ_USES (insn_info); *use_rec; use_rec++) for (use_rec = DF_INSN_INFO_EQ_USES (insn_info); *use_rec; use_rec++)
{ {
df_ref use = *use_rec; df_ref use = *use_rec;
if (def_reg && rtx_equal_p (DF_REF_REG (use), def_reg))
return false;
if (use_killed_between (use, def_insn, target_insn)) if (use_killed_between (use, def_insn, target_insn))
return false; return false;
} }
......
2010-01-19 Jakub Jelinek <jakub@redhat.com>
PR debug/42728
* gcc.dg/pr42728.c: New test.
2010-01-19 Anthony Green <green@moxielogic.com> 2010-01-19 Anthony Green <green@moxielogic.com>
* gcc.dg/tree-ssa/20040204-1.c: Expect this test to pass. * gcc.dg/tree-ssa/20040204-1.c: Expect this test to pass.
......
/* PR debug/42728 */
/* { dg-do compile } */
/* { dg-options "-O1 -fcompare-debug" } */
void
foo (char *a)
{
char *b;
for (; *a; a++)
a = b++;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment