From: Christian Borntraeger Date: Tue, 11 May 2010 07:29:59 +0000 (+0000) Subject: tree-ssa-loop-prefetch.c (prune_ref_by_group_reuse): Reset prefetch_before to PREFETC... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=57762e976d599914956203d04f706744bec54ef1;p=gcc.git tree-ssa-loop-prefetch.c (prune_ref_by_group_reuse): Reset prefetch_before to PREFETCH_ALL if to accesses "meet" beyond cache size. 2010-05-11 Christian Borntraeger * tree-ssa-loop-prefetch.c (prune_ref_by_group_reuse): Reset prefetch_before to PREFETCH_ALL if to accesses "meet" beyond cache size. From-SVN: r159257 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5b1d3dda3f9..4ade883db3a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2010-05-11 Christian Borntraeger + + * tree-ssa-loop-prefetch.c (prune_ref_by_group_reuse): Reset + prefetch_before to PREFETCH_ALL if to accesses "meet" beyond + cache size. + 2010-05-11 Christian Borntraeger * tree-ssa-loop-prefetch.c: Add debug for dropped prefetches. diff --git a/gcc/tree-ssa-loop-prefetch.c b/gcc/tree-ssa-loop-prefetch.c index 2fc901d907b..daf9956d3bc 100644 --- a/gcc/tree-ssa-loop-prefetch.c +++ b/gcc/tree-ssa-loop-prefetch.c @@ -716,6 +716,9 @@ prune_ref_by_group_reuse (struct mem_ref *ref, struct mem_ref *by, hit_from = ddown (delta_b, PREFETCH_BLOCK) * PREFETCH_BLOCK; prefetch_before = (hit_from - delta_r + step - 1) / step; + /* Do not reduce prefetch_before if we meet beyond cache size. */ + if (prefetch_before > abs (L2_CACHE_SIZE_BYTES / step)) + prefetch_before = PREFETCH_ALL; if (prefetch_before < ref->prefetch_before) ref->prefetch_before = prefetch_before; @@ -746,6 +749,9 @@ prune_ref_by_group_reuse (struct mem_ref *ref, struct mem_ref *by, reduced_prefetch_block, align_unit); if (miss_rate <= ACCEPTABLE_MISS_RATE) { + /* Do not reduce prefetch_before if we meet beyond cache size. */ + if (prefetch_before > L2_CACHE_SIZE_BYTES / PREFETCH_BLOCK) + prefetch_before = PREFETCH_ALL; if (prefetch_before < ref->prefetch_before) ref->prefetch_before = prefetch_before;