diff options
author | Christian Borntraeger <borntraeger@de.ibm.com> | 2010-05-11 07:29:59 +0000 |
---|---|---|
committer | Andreas Krebbel <krebbel@gcc.gnu.org> | 2010-05-11 07:29:59 +0000 |
commit | 57762e976d599914956203d04f706744bec54ef1 (patch) | |
tree | f5d086e41dea69572170f50446b3a4c03d67579c /gcc/tree-ssa-loop-prefetch.c | |
parent | a8beb3a7be09b268826e992fdddde3dc468c6939 (diff) | |
download | gcc-57762e976d599914956203d04f706744bec54ef1.zip gcc-57762e976d599914956203d04f706744bec54ef1.tar.gz gcc-57762e976d599914956203d04f706744bec54ef1.tar.bz2 |
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 <borntraeger@de.ibm.com>
* 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
Diffstat (limited to 'gcc/tree-ssa-loop-prefetch.c')
-rw-r--r-- | gcc/tree-ssa-loop-prefetch.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/gcc/tree-ssa-loop-prefetch.c b/gcc/tree-ssa-loop-prefetch.c index 2fc901d..daf9956 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; |