diff options
author | Jakub Jelinek <jakub@redhat.com> | 2009-12-07 23:37:21 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2009-12-07 23:37:21 +0100 |
commit | aec4e50c21eced5ee903b7350b71170fa58262e4 (patch) | |
tree | 853a74782258e6b15090a44af48211e0ea2c2900 | |
parent | 8ad9d49ec9946a8ab98404ed6c07ae48e9d345ab (diff) | |
download | gcc-aec4e50c21eced5ee903b7350b71170fa58262e4.zip gcc-aec4e50c21eced5ee903b7350b71170fa58262e4.tar.gz gcc-aec4e50c21eced5ee903b7350b71170fa58262e4.tar.bz2 |
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
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/ddg.c | 15 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/debug/pr42244.c | 13 |
4 files changed, 35 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 43d9a8f..4056a35 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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 @@ -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 fbe13dd..7d245b7 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,10 @@ 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 abmintrin.h is also tested. * gcc.target/i386/sse-13.c: Likewise. diff --git a/gcc/testsuite/gcc.dg/debug/pr42244.c b/gcc/testsuite/gcc.dg/debug/pr42244.c new file mode 100644 index 0000000..ff25428 --- /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; +} |