From: Jakub Jelinek Date: Mon, 7 Dec 2009 22:37:21 +0000 (+0100) Subject: re PR debug/42244 (var-tracking ICE for 300.twolf) X-Git-Tag: releases/gcc-4.5.0~1745 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=aec4e50c21eced5ee903b7350b71170fa58262e4;p=thirdparty%2Fgcc.git 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 43d9a8fb6612..4056a358e810 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2009-12-07 Jakub Jelinek + + 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 * config/i386/driver-i386.c (host_detect_local_cpu): Add -mlwp to the diff --git a/gcc/ddg.c b/gcc/ddg.c index 23fa6fa2aeb0..f51c5dc4e296 100644 --- a/gcc/ddg.c +++ b/gcc/ddg.c @@ -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); } } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index fbe13dd4fefe..7d245b73041a 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2009-12-07 Jakub Jelinek + + PR debug/42244 + * gcc.dg/debug/pr42244.c: New test. + 2009-12-07 Jakub Jelinek * gcc.target/i386/sse-12.c: Add -mabm to dg-options, mention diff --git a/gcc/testsuite/gcc.dg/debug/pr42244.c b/gcc/testsuite/gcc.dg/debug/pr42244.c new file mode 100644 index 000000000000..ff2542873363 --- /dev/null +++ b/gcc/testsuite/gcc.dg/debug/pr42244.c @@ -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; +}