re PR debug/42244 (var-tracking ICE for 300.twolf)

PR debug/42244
	* ddg.c (add_inter_loop_mem_dep): Use ANTI_DEP if from or to
	is a DEBUG_INSN.

	* gcc.dg/debug/pr42244.c: New test.

From-SVN: r155062
This commit is contained in:
Jakub Jelinek 2009-12-07 23:37:21 +01:00 committed by Jakub Jelinek
parent 8ad9d49ec9
commit aec4e50c21
4 changed files with 35 additions and 4 deletions

View File

@ -1,3 +1,9 @@
2009-12-07 Jakub Jelinek <jakub@redhat.com>
PR debug/42244
* ddg.c (add_inter_loop_mem_dep): Use ANTI_DEP if from or to
is a DEBUG_INSN.
2009-12-07 Sebastian Pop <sebastian.pop@amd.com>
* config/i386/driver-i386.c (host_detect_local_cpu): Add -mlwp to the

View File

@ -359,9 +359,13 @@ add_inter_loop_mem_dep (ddg_ptr g, ddg_node_ptr from, ddg_node_ptr to)
if (mem_write_insn_p (from->insn))
{
if (mem_read_insn_p (to->insn))
create_ddg_dep_no_link (g, from, to, TRUE_DEP, MEM_DEP, 1);
create_ddg_dep_no_link (g, from, to,
DEBUG_INSN_P (to->insn)
? ANTI_DEP : TRUE_DEP, MEM_DEP, 1);
else if (from->cuid != to->cuid)
create_ddg_dep_no_link (g, from, to, OUTPUT_DEP, MEM_DEP, 1);
create_ddg_dep_no_link (g, from, to,
DEBUG_INSN_P (to->insn)
? ANTI_DEP : OUTPUT_DEP, MEM_DEP, 1);
}
else
{
@ -369,8 +373,11 @@ add_inter_loop_mem_dep (ddg_ptr g, ddg_node_ptr from, ddg_node_ptr to)
return;
else if (from->cuid != to->cuid)
{
create_ddg_dep_no_link (g, from, to, ANTI_DEP, MEM_DEP, 1);
create_ddg_dep_no_link (g, to, from, TRUE_DEP, MEM_DEP, 1);
create_ddg_dep_no_link (g, from, to, ANTI_DEP, MEM_DEP, 1);
if (DEBUG_INSN_P (from->insn) || DEBUG_INSN_P (to->insn))
create_ddg_dep_no_link (g, to, from, ANTI_DEP, MEM_DEP, 1);
else
create_ddg_dep_no_link (g, to, from, TRUE_DEP, MEM_DEP, 1);
}
}

View File

@ -1,3 +1,8 @@
2009-12-07 Jakub Jelinek <jakub@redhat.com>
PR debug/42244
* gcc.dg/debug/pr42244.c: New test.
2009-12-07 Jakub Jelinek <jakub@redhat.com>
* gcc.target/i386/sse-12.c: Add -mabm to dg-options, mention

View File

@ -0,0 +1,13 @@
/* PR debug/42444 */
/* { dg-do compile } */
/* { dg-options "-O2 -g -fmodulo-sched -ffloat-store" } */
extern int a, b;
double
foo (double x)
{
for (; a > b; a--)
x *= (double) a;
return x;
}