Patch fixes following PRs: c++/90816 - -finstrument-functions-exclude-function-list improperly handles namespace/class definitions c++/90809 - -finstrument-functions-exclude-function-list mishandles comma escaping
Fixes as follows: At flag_instrument_functions_exclude_p [gimplify.c] Using lang_hooks.decl_printable_name (fndecl, 1) to get namespace / class information as part of printable name to allow for inclusion of namespace / class specification when passing symbols to -finstrument-functions-exclude-function-list. Was previously lang_hooks.decl_printable_name (fndecl, 0). At add_comma_separated_to_vector [opts.c] Added writing of a null character to w after primary loop finishes, to account for offset between r and w when r reaches end of passed string. from Oliver Browne <oliverbrowne...@gmail.com> PR c++/90816 PR c++/90809 * gimplify.c (flag_instrument_functions_exclude_p): include namespace information as part of decl name * opts.c (add_comma_separated_to_vector): add null character to correct position in last token added to token vector Index: gimplify.c =================================================================== --- gimplify.c 2019-06-12 19:07:26.872077000 +0100 +++ gimplify.c 2019-06-12 18:55:10.609255000 +0100 @@ -13987,11 +13987,17 @@ flag_instrument_functions_exclude_p (tre { const char *name; - int i; + unsigned int i; char *s; - name = lang_hooks.decl_printable_name (fndecl, 0); - FOR_EACH_VEC_ELT (*v, i, s) + name = lang_hooks.decl_printable_name (fndecl, 1); + for(i = 0; i < v->length(); i++){ + s = (*v)[i]; + if(strstr(name, s) != NULL){ + return(true); + } + } +/* FOR_EACH_VEC_ELT (*v, i, s) if (strstr (name, s) != NULL) - return true; + return true;*/ } @@ -14278,3 +14284,3 @@ gimplify_hasher::equal (const elt_t *p1, return true; -} \ No newline at end of file +} Index: opts.c =================================================================== --- opts.c 2019-06-12 19:10:04.354612000 +0100 +++ opts.c 2019-06-12 18:53:43.675852000 +0100 @@ -263,7 +263,8 @@ add_comma_separated_to_vector (void **pv *w++ = *r++; } - if (*token_start != '\0') + *w = '\0'; + if (*token_start != '\0'){ v->safe_push (token_start); - + } *pvec = v; } @@ -3151,3 +3152,3 @@ option_name (diagnostic_context *context else return NULL; -} \ No newline at end of file +}