On Tue, 18 May 2021, Jakub Jelinek wrote:

> Hi!
> 
> Last year I've added cgraph_node::get_create calls for the dummy
> functions used for -fdump-passes, so that it interacts well with pass
> disabling/enabling which is cgraph uid based.
> Unfortunately, as the following testcase shows, when assembler hash
> is present, that wants to compute DECL_ASSEMBLER_NAME and the C++ FE
> is unprepared to handle it on the dummy functions which don't have
> DECL_NAME etc.
> The following patch fixes it by setting up a dummy DECL_ASSEMBLER_NAME
> on these, so that the FEs don't need to compute it.
> 
> Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk?

OK.

> 2021-05-18  Jakub Jelinek  <ja...@redhat.com>
> 
>       PR c++/100580
>       * function.c (push_dummy_function): Set DECL_ARTIFICIAL and
>       DECL_ASSEMBLER_NAME on the fn_decl.
> 
>       * g++.dg/other/pr100580.C: New test.
> 
> --- gcc/function.c.jj 2021-01-09 10:48:11.959312213 +0100
> +++ gcc/function.c    2021-05-17 17:41:41.489047441 +0200
> @@ -4930,6 +4930,9 @@ push_dummy_function (bool with_decl)
>        fn_result_decl = build_decl (UNKNOWN_LOCATION, RESULT_DECL,
>                                        NULL_TREE, void_type_node);
>        DECL_RESULT (fn_decl) = fn_result_decl;
> +      DECL_ARTIFICIAL (fn_decl) = 1;
> +      tree fn_name = get_identifier (" ");
> +      SET_DECL_ASSEMBLER_NAME (fn_decl, fn_name);
>      }
>    else
>      fn_decl = NULL_TREE;
> --- gcc/testsuite/g++.dg/other/pr100580.C.jj  2021-05-17 19:10:24.900331571 
> +0200
> +++ gcc/testsuite/g++.dg/other/pr100580.C     2021-05-17 19:10:04.761553670 
> +0200
> @@ -0,0 +1,8 @@
> +// PR c++/100580
> +// { dg-do compile }
> +// { dg-require-weak "" }
> +// { dg-options "-fdump-passes" }
> +// { dg-prune-output ".*" }
> +
> +int foo;
> +static __typeof(foo) bar __attribute__((__weakref__("foo")));
> 
>       Jakub
> 
> 

-- 
Richard Biener <rguent...@suse.de>
SUSE Software Solutions Germany GmbH, Maxfeldstrasse 5, 90409 Nuernberg,
Germany; GF: Felix Imendörffer; HRB 36809 (AG Nuernberg)

Reply via email to