On Mon, Jan 11, 2016 at 11:54 PM, <tbsaunde+...@tbsaunde.org> wrote: > From: Trevor Saunders <tbsaunde+...@tbsaunde.org> > > Hi, > > this hardly counts as a bug fix, but going through open bugs I saw PR54809, > and > realized we don't actually need this attribute any more, so we might as well > just remove it. > > bootstrapped + regtested on x86_64-linux-gnu, ok for now or gcc 7? I don't > mind waiting, but it would be nice to have one less thing to remember to do.
Ok. Richard. > Trev > > gcc/ChangeLog: > > 2016-01-11 Trevor Saunders <tbsaunde+...@tbsaunde.org> > > PR middle-end/54809 > * doc/gty.texi: Remove documentation of mark_hook. > * gengtype.c (struct write_types_data): Remove code to support > mark_hook attribute. > (walk_type): Likewise. > (write_func_for_structure): Likewise. > --- > gcc/doc/gty.texi | 10 ---------- > gcc/gengtype.c | 33 +++------------------------------ > 2 files changed, 3 insertions(+), 40 deletions(-) > > diff --git a/gcc/doc/gty.texi b/gcc/doc/gty.texi > index d3ca4e0..1a22e4b 100644 > --- a/gcc/doc/gty.texi > +++ b/gcc/doc/gty.texi > @@ -261,16 +261,6 @@ garbage collection runs, there's no need to mark > anything pointed to > by this variable, it can just be set to @code{NULL} instead. This is used > to keep a list of free structures around for re-use. > > -@findex mark_hook > -@item mark_hook ("@var{hook-routine-name}") > - > -If provided for a structure or union type, the given > -@var{hook-routine-name} (between double-quotes) is the name of a > -routine called when the garbage collector has just marked the data as > -reachable. This routine should not change the data, or call any ggc > -routine. Its only argument is a pointer to the just marked (const) > -structure or union. > - > @findex maybe_undef > @item maybe_undef > > diff --git a/gcc/gengtype.c b/gcc/gengtype.c > index 966e597..be49660 100644 > --- a/gcc/gengtype.c > +++ b/gcc/gengtype.c > @@ -2407,7 +2407,6 @@ struct write_types_data > const char *marker_routine; > const char *reorder_note_routine; > const char *comment; > - int skip_hooks; /* skip hook generation if non zero */ > enum write_types_kinds kind; > }; > > @@ -2677,8 +2676,6 @@ walk_type (type_p t, struct walk_type_data *d) > maybe_undef_p = 1; > else if (strcmp (oo->name, "desc") == 0 && oo->kind == OPTION_STRING) > desc = oo->info.string; > - else if (strcmp (oo->name, "mark_hook") == 0) > - ; > else if (strcmp (oo->name, "nested_ptr") == 0 > && oo->kind == OPTION_NESTED) > nested_ptr_d = (const struct nested_ptr_data *) oo->info.nested; > @@ -2918,7 +2915,6 @@ walk_type (type_p t, struct walk_type_data *d) > const char *oldval = d->val; > const char *oldprevval1 = d->prev_val[1]; > const char *oldprevval2 = d->prev_val[2]; > - const char *struct_mark_hook = NULL; > const int union_p = t->kind == TYPE_UNION; > int seen_default_p = 0; > options_p o; > @@ -2942,13 +2938,6 @@ walk_type (type_p t, struct walk_type_data *d) > if (!desc && strcmp (o->name, "desc") == 0 > && o->kind == OPTION_STRING) > desc = o->info.string; > - else if (!struct_mark_hook && strcmp (o->name, "mark_hook") == 0 > - && o->kind == OPTION_STRING) > - struct_mark_hook = o->info.string; > - > - if (struct_mark_hook) > - oprintf (d->of, "%*s%s (&%s);\n", > - d->indent, "", struct_mark_hook, oldval); > > d->prev_val[2] = oldval; > d->prev_val[1] = oldprevval2; > @@ -3473,7 +3462,6 @@ write_func_for_structure (type_p orig_s, type_p s, > const char *chain_next = NULL; > const char *chain_prev = NULL; > const char *chain_circular = NULL; > - const char *mark_hook_name = NULL; > options_p opt; > struct walk_type_data d; > > @@ -3509,9 +3497,6 @@ write_func_for_structure (type_p orig_s, type_p s, > else if (strcmp (opt->name, "chain_circular") == 0 > && opt->kind == OPTION_STRING) > chain_circular = opt->info.string; > - else if (strcmp (opt->name, "mark_hook") == 0 > - && opt->kind == OPTION_STRING) > - mark_hook_name = opt->info.string; > else if (strcmp (opt->name, "for_user") == 0) > for_user = true; > if (chain_prev != NULL && chain_next == NULL) > @@ -3576,17 +3561,11 @@ write_func_for_structure (type_p orig_s, type_p s, > oprintf (d.of, "))\n"); > if (chain_circular != NULL) > oprintf (d.of, " return;\n do\n"); > - if (mark_hook_name && !wtd->skip_hooks) > - { > - oprintf (d.of, " {\n"); > - oprintf (d.of, " %s (xlimit);\n ", mark_hook_name); > - } > + > oprintf (d.of, " xlimit = ("); > d.prev_val[2] = "*xlimit"; > output_escaped_param (&d, chain_next, "chain_next"); > oprintf (d.of, ");\n"); > - if (mark_hook_name && !wtd->skip_hooks) > - oprintf (d.of, " }\n"); > if (chain_prev != NULL) > { > oprintf (d.of, " if (x != xlimit)\n"); > @@ -3618,18 +3597,12 @@ write_func_for_structure (type_p orig_s, type_p s, > output_mangled_typename (d.of, orig_s); > } > oprintf (d.of, "));\n"); > - if (mark_hook_name && !wtd->skip_hooks) > - oprintf (d.of, " %s (xlimit);\n", mark_hook_name); > oprintf (d.of, " do\n"); > } > else > oprintf (d.of, " while (x != xlimit)\n"); > } > oprintf (d.of, " {\n"); > - if (mark_hook_name && chain_next == NULL && !wtd->skip_hooks) > - { > - oprintf (d.of, " %s (x);\n", mark_hook_name); > - } > > d.prev_val[2] = "*x"; > d.indent = 6; > @@ -3789,14 +3762,14 @@ write_types (outf_p output_header, type_p structures, > static const struct write_types_data ggc_wtd = { > "ggc_m", NULL, "ggc_mark", "ggc_test_and_set_mark", NULL, > "GC marker procedures. ", > - FALSE, WTK_GGC > + WTK_GGC > }; > > static const struct write_types_data pch_wtd = { > "pch_n", "pch_p", "gt_pch_note_object", "gt_pch_note_object", > "gt_pch_note_reorder", > "PCH type-walking procedures. ", > - TRUE, WTK_PCH > + WTK_PCH > }; > > /* Write out the local pointer-walking routines. */ > -- > 2.7.0 >