On Sun, Jul 12, 2015 at 5:53 PM, Tom de Vries <tom_devr...@mentor.com> wrote: > 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 downgrade value_expr_for_decl to non-cache. > > OK for trunk?
Similar to the debug_decl_map the idea of this hash is that it records on-the-side info for an entity. If that entity is no longer needed then we should discard the reference so we can collect the entity. Whether the on-the-side info is used in other means isn't relevant here. Note that they are also not really "caches" in that removing an entry for a key that is still live will cause information loss that cannot be restored. What's the bad side-effect of the "late" marking other than affecting this (or other) caches? What's your idea of restoring the "idea" of these maps under the constraint you try to add? Richard. > Thanks, > - Tom >