On 12/07/15 17:45, Tom de Vries wrote:
Hi,

this patch series implements the forbidding of multi-step garbage
collection liveness dependencies between caches.

The first four patches downgrade 3 caches to non-cache, since they
introduce multi-step dependencies. This allows us to decouple:
- establishing a policy for multi-step dependencies in caches, and
- fixing issues that allow us to use these 3 as caches again.

1. Downgrade debug_args_for_decl to non-cache
2. Add struct tree_decl_map_hasher
3. Downgrade debug_expr_for_decl to non-cache
4. Downgrade value_expr_for_decl to non-cache
5. Don't mark live recursively in gt_cleare_cache

Bootstrapped and reg-tested on x86_64, with ENABLE_CHECKING.

I'll post the patches in response to this email.


This patch introduces infrastructure for patches 3 and 4.

OK for trunk?

Thanks,
- Tom

[PATCH 2/5] Add struct tree_decl_map_hasher

2015-07-10  Tom de Vries  <t...@codesourcery.com>

	PR libgomp/66714
	* tree.h (struct tree_decl_map_hasher): new struct.
---
 gcc/tree.h | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/gcc/tree.h b/gcc/tree.h
index 250f99d..8d8fb7e 100644
--- a/gcc/tree.h
+++ b/gcc/tree.h
@@ -4642,6 +4642,16 @@ struct tree_decl_map_cache_hasher : ggc_cache_ptr_hash<tree_decl_map>
   }
 };
 
+struct tree_decl_map_hasher : ggc_ptr_hash<tree_decl_map>
+{
+  static hashval_t hash (tree_decl_map *m) { return tree_decl_map_hash (m); }
+  static bool
+  equal (tree_decl_map *a, tree_decl_map *b)
+  {
+    return tree_decl_map_eq (a, b);
+  }
+};
+
 #define tree_int_map_eq tree_map_base_eq
 #define tree_int_map_hash tree_map_base_hash
 #define tree_int_map_marked_p tree_map_base_marked_p
-- 
1.9.1

Reply via email to