Hi, this patch makes array prefetching to use likely upper bound on number of iterations. This restores the behaviour on prefetch-5.c testcase.
Honza * gcc.dg/tree-ssa/prefetch-5.c: Remove xfail. * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Use likely_max_stmt_executions_int. Index: testsuite/gcc.dg/tree-ssa/prefetch-5.c =================================================================== --- testsuite/gcc.dg/tree-ssa/prefetch-5.c (revision 236815) +++ testsuite/gcc.dg/tree-ssa/prefetch-5.c (working copy) @@ -56,5 +56,5 @@ int loop5 (int n, struct tail5 *x) /* Until we are able to track likely upper bounds, we can't really work out that small trailing arrays should not be prefetched. */ -/* { dg-final { scan-tree-dump-times "Issued prefetch" 2 "aprefetch" { xfail *-*-* } } } */ -/* { dg-final { scan-tree-dump-times "Not prefetching" 1 "aprefetch" { xfail *-*-* } } } */ +/* { dg-final { scan-tree-dump-times "Issued prefetch" 2 "aprefetch" } } */ +/* { dg-final { scan-tree-dump-times "Not prefetching" 1 "aprefetch" } } */ Index: tree-ssa-loop-prefetch.c =================================================================== --- tree-ssa-loop-prefetch.c (revision 236815) +++ tree-ssa-loop-prefetch.c (working copy) @@ -1848,7 +1848,7 @@ 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); + est_niter = likely_max_stmt_executions_int (loop); /* Prefetching is not likely to be profitable if the trip count to ahead ratio is too small. */