Hi, On Sat, Dec 03, 2016 at 10:54:58PM +0100, Mark Wielaard wrote: > The d_info field did_subs was used for estimating the string output > size. It was no longer used when the malloc-less callback interface > was introduced in 2007 (svn r121305). But the field was still updated. > When backtracking was introduced in 2013 (svn r205292) did_subs was > also added to the d_info_checkpoint struct. But except for updating > the field it was still not used. > > Since it is never used just stop updating the field and remove it > from the two structs. > > libiberty/ChangeLog: > > * cp-demangle.h (struct d_info): Remove did_subs field. > * cp-demangle.c (struct d_info_checkpoint): Likewise. > (d_template_param): Don't update did_subs. > (d_substitution): Likewise. > (d_checkpoint): Don't assign did_subs. > (d_backtrack): Likewise. > (cplus_demangle_init_info): Don't initialize did_subs.
Ping. Does this look OK to commit? > --- > libiberty/cp-demangle.c | 8 -------- > libiberty/cp-demangle.h | 4 ---- > 2 files changed, 12 deletions(-) > > diff --git a/libiberty/cp-demangle.c b/libiberty/cp-demangle.c > index 45663fe..c628dd6 100644 > --- a/libiberty/cp-demangle.c > +++ b/libiberty/cp-demangle.c > @@ -317,7 +317,6 @@ struct d_info_checkpoint > const char *n; > int next_comp; > int next_sub; > - int did_subs; > int expansion; > }; > > @@ -3062,8 +3061,6 @@ d_template_param (struct d_info *di) > if (param < 0) > return NULL; > > - ++di->did_subs; > - > return d_make_template_param (di, param); > } > > @@ -3815,8 +3812,6 @@ d_substitution (struct d_info *di, int prefix) > if (id >= (unsigned int) di->next_sub) > return NULL; > > - ++di->did_subs; > - > return di->subs[id]; > } > else > @@ -3881,7 +3876,6 @@ d_checkpoint (struct d_info *di, struct > d_info_checkpoint *checkpoint) > checkpoint->n = di->n; > checkpoint->next_comp = di->next_comp; > checkpoint->next_sub = di->next_sub; > - checkpoint->did_subs = di->did_subs; > checkpoint->expansion = di->expansion; > } > > @@ -3891,7 +3885,6 @@ d_backtrack (struct d_info *di, struct > d_info_checkpoint *checkpoint) > di->n = checkpoint->n; > di->next_comp = checkpoint->next_comp; > di->next_sub = checkpoint->next_sub; > - di->did_subs = checkpoint->did_subs; > di->expansion = checkpoint->expansion; > } > > @@ -6106,7 +6099,6 @@ cplus_demangle_init_info (const char *mangled, int > options, size_t len, > chars in the mangled string. */ > di->num_subs = len; > di->next_sub = 0; > - di->did_subs = 0; > > di->last_name = NULL; > > diff --git a/libiberty/cp-demangle.h b/libiberty/cp-demangle.h > index 197883e..f197f99 100644 > --- a/libiberty/cp-demangle.h > +++ b/libiberty/cp-demangle.h > @@ -112,10 +112,6 @@ struct d_info > int next_sub; > /* The number of available entries in the subs array. */ > int num_subs; > - /* The number of substitutions which we actually made from the subs > - array, plus the number of template parameter references we > - saw. */ > - int did_subs; > /* The last name we saw, for constructors and destructors. */ > struct demangle_component *last_name; > /* A running total of the length of large expansions from the > -- > 1.8.3.1