aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2012-04-12 10:13:22 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2012-04-12 10:13:22 +0000
commite5b332cdb894baa96b7dc83b69140b3106fd5153 (patch)
tree7b63486da345af5d818d56d9b0f89f9a48cbf9d0 /gcc
parent652c4c71a1b1f0c92b6a06305d82c354b72e16e0 (diff)
downloadgcc-e5b332cdb894baa96b7dc83b69140b3106fd5153.zip
gcc-e5b332cdb894baa96b7dc83b69140b3106fd5153.tar.gz
gcc-e5b332cdb894baa96b7dc83b69140b3106fd5153.tar.bz2
tree-parloops.c (parallelize_loops): Also consult the upper bound for the number of iterations.
2012-04-12 Richard Guenther <rguenther@suse.de> * tree-parloops.c (parallelize_loops): Also consult the upper bound for the number of iterations. * tree-ssa-loop-prefetch.c (determine_loop_nest_reuse): Likewise. (loop_prefetch_arrays): Likewise. From-SVN: r186373
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/tree-parloops.c9
-rw-r--r--gcc/tree-ssa-loop-prefetch.c4
3 files changed, 16 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index d702e02..7891046 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,12 @@
2012-04-12 Richard Guenther <rguenther@suse.de>
+ * tree-parloops.c (parallelize_loops): Also consult the upper
+ bound for the number of iterations.
+ * tree-ssa-loop-prefetch.c (determine_loop_nest_reuse): Likewise.
+ (loop_prefetch_arrays): Likewise.
+
+2012-04-12 Richard Guenther <rguenther@suse.de>
+
* cfgloop.h (estimated_loop_iterations_int): Ditch
'conservative' parameter.
(max_stmt_executions_int): Likewise.
diff --git a/gcc/tree-parloops.c b/gcc/tree-parloops.c
index a7f4f90..af43ed0 100644
--- a/gcc/tree-parloops.c
+++ b/gcc/tree-parloops.c
@@ -2192,12 +2192,15 @@ parallelize_loops (void)
header-copied loops correctly - see PR46886. */
|| !do_while_loop_p (loop))
continue;
+
estimated = estimated_stmt_executions_int (loop);
+ if (estimated == -1)
+ estimated = max_stmt_executions_int (loop);
/* FIXME: Bypass this check as graphite doesn't update the
- count and frequency correctly now. */
+ count and frequency correctly now. */
if (!flag_loop_parallelize_all
- && ((estimated !=-1
- && estimated <= (HOST_WIDE_INT) n_threads * MIN_PER_THREAD)
+ && ((estimated != -1
+ && estimated <= (HOST_WIDE_INT) n_threads * MIN_PER_THREAD)
/* Do not bother with loops in cold areas. */
|| optimize_loop_nest_for_size_p (loop)))
continue;
diff --git a/gcc/tree-ssa-loop-prefetch.c b/gcc/tree-ssa-loop-prefetch.c
index eab1fff..19a6a22 100644
--- a/gcc/tree-ssa-loop-prefetch.c
+++ b/gcc/tree-ssa-loop-prefetch.c
@@ -1549,7 +1549,7 @@ determine_loop_nest_reuse (struct loop *loop, struct mem_ref_group *refs,
aloop = VEC_index (loop_p, vloops, i);
vol = estimated_stmt_executions_int (aloop);
- if (vol < 0)
+ if (vol == -1)
vol = expected_loop_iterations (aloop);
volume *= vol;
}
@@ -1801,6 +1801,8 @@ loop_prefetch_arrays (struct loop *loop)
ahead = (PREFETCH_LATENCY + time - 1) / time;
est_niter = estimated_stmt_executions_int (loop);
+ if (est_niter == -1)
+ est_niter = max_stmt_executions_int (loop);
/* Prefetching is not likely to be profitable if the trip count to ahead
ratio is too small. */