On Mon, Dec 11, 2017 at 8:01 AM, Andi Kleen <a...@firstfloor.org> wrote:
> From: Andi Kleen <a...@linux.intel.com>
>
> g++.dg/bprob* is failing currently with autofdo.
>
> Running in gdb shows that there is a very deep recursion in get_index_by_decl 
> until it
> overflows the stack.
>
> This patch seems to fix it (but not sure why the abstract origin would point 
> to
> itself)
>
> Passes bootstrap and testing on x86_64-linux
Ok.

Richard.

> gcc/:
> 2017-12-10  Andi Kleen  <a...@linux.intel.com>
>
>         PR gcov-profile/83355
>         * auto-profile.c (string_table::get_index_by_decl): Don't
>         recurse when abstract origin points to itself.
> ---
>  gcc/auto-profile.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/gcc/auto-profile.c b/gcc/auto-profile.c
> index 5134a795331..403709bad6b 100644
> --- a/gcc/auto-profile.c
> +++ b/gcc/auto-profile.c
> @@ -477,7 +477,7 @@ string_table::get_index_by_decl (tree decl) const
>    ret = get_index (lang_hooks.dwarf_name (decl, 0));
>    if (ret != -1)
>      return ret;
> -  if (DECL_ABSTRACT_ORIGIN (decl))
> +  if (DECL_ABSTRACT_ORIGIN (decl) && DECL_ABSTRACT_ORIGIN (decl) != decl)
>      return get_index_by_decl (DECL_ABSTRACT_ORIGIN (decl));
>
>    return -1;
> --
> 2.15.1
>

Reply via email to