aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2012-03-26 14:14:51 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2012-03-26 14:14:51 +0000
commitad5d161a7599cf9db900d69f78daa58b6f49b21d (patch)
treedae3f3d5cae562b83ebf1b4d874dc7713d518de4
parent5467ee5255040aee4811c10804c5efc3fdeee4d1 (diff)
downloadgcc-ad5d161a7599cf9db900d69f78daa58b6f49b21d.zip
gcc-ad5d161a7599cf9db900d69f78daa58b6f49b21d.tar.gz
gcc-ad5d161a7599cf9db900d69f78daa58b6f49b21d.tar.bz2
re PR middle-end/52701 (416.gamess in SPEC CPU 2006 failed to build)
2012-03-26 Richard Guenther <rguenther@suse.de> PR tree-optimization/52701 * tree-vect-loop.c (vect_analyze_scalar_cycles_1): Always compute and set the evolution part of PHI nodes. * gfortran.dg/pr52701.f90: New testcase. From-SVN: r185800
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/pr52701.f9020
-rw-r--r--gcc/tree-vect-loop.c14
4 files changed, 39 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 636ef21..4dce347 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,11 @@
2012-03-26 Richard Guenther <rguenther@suse.de>
+ PR tree-optimization/52701
+ * tree-vect-loop.c (vect_analyze_scalar_cycles_1): Always
+ compute and set the evolution part of PHI nodes.
+
+2012-03-26 Richard Guenther <rguenther@suse.de>
+
PR tree-optimization/52721
* tree-vect-stmts.c (vect_init_vector): Handle scalars.
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 88c3ee2..867b8ca 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2012-03-26 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/52701
+ * gfortran.dg/pr52701.f90: New testcase.
+
2012-03-26 Ulrich Weigand <ulrich.weigand@linaro.org>
PR tree-optimization/52686
diff --git a/gcc/testsuite/gfortran.dg/pr52701.f90 b/gcc/testsuite/gfortran.dg/pr52701.f90
new file mode 100644
index 0000000..5834318
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/pr52701.f90
@@ -0,0 +1,20 @@
+! { dg-do compile }
+! { dg-options "-O3" }
+function pr52701 (x, z, e, f, g, l)
+ integer a, b, c, d, e, f, g, i, j, l, pr52701
+ double precision x(e), z(e*e)
+ do i = l, f
+ do j = l, i
+ d = 0
+ do a = 1, g
+ c = a - g
+ do b = 1, g
+ d = d + 1
+ c = c + g
+ z(d) = z(d) / (x(i) + x(j) - x(f + a) - x(f + b))
+ end do
+ end do
+ end do
+ end do
+ pr52701 = c
+end
diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c
index 1b4ed88..16515dc 100644
--- a/gcc/tree-vect-loop.c
+++ b/gcc/tree-vect-loop.c
@@ -565,11 +565,15 @@ vect_analyze_scalar_cycles_1 (loop_vec_info loop_vinfo, struct loop *loop)
/* Analyze the evolution function. */
access_fn = analyze_scalar_evolution (loop, def);
if (access_fn)
- STRIP_NOPS (access_fn);
- if (access_fn && vect_print_dump_info (REPORT_DETAILS))
{
- fprintf (vect_dump, "Access function of PHI: ");
- print_generic_expr (vect_dump, access_fn, TDF_SLIM);
+ STRIP_NOPS (access_fn);
+ if (vect_print_dump_info (REPORT_DETAILS))
+ {
+ fprintf (vect_dump, "Access function of PHI: ");
+ print_generic_expr (vect_dump, access_fn, TDF_SLIM);
+ }
+ STMT_VINFO_LOOP_PHI_EVOLUTION_PART (stmt_vinfo)
+ = evolution_part_in_loop_num (access_fn, loop->num);
}
if (!access_fn
@@ -579,8 +583,6 @@ vect_analyze_scalar_cycles_1 (loop_vec_info loop_vinfo, struct loop *loop)
continue;
}
- STMT_VINFO_LOOP_PHI_EVOLUTION_PART (stmt_vinfo)
- = evolution_part_in_loop_num (access_fn, loop->num);
gcc_assert (STMT_VINFO_LOOP_PHI_EVOLUTION_PART (stmt_vinfo) != NULL_TREE);
if (vect_print_dump_info (REPORT_DETAILS))