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