]> git.ipfire.org Git - thirdparty/gcc.git/commit
c++: support target attr for DECL_LOCAL_DECL_P fns [PR99108]
authorMartin Liska <mliska@suse.cz>
Wed, 3 Mar 2021 08:38:55 +0000 (09:38 +0100)
committerJason Merrill <jason@redhat.com>
Tue, 16 Mar 2021 14:54:23 +0000 (10:54 -0400)
commit1c7bec8bfbc5457c1b57d0e3b67f5d6bc8812e57
treecfb2c3641e076ce41f60e86f757cd17b4263ca63
parentf6e9c1c9191c8b9998e03cb15de8600a2a4b9188
c++: support target attr for DECL_LOCAL_DECL_P fns [PR99108]

We crash when target attribute get_function_versions_dispatcher is called
for a function that is not registered in call graph.  This was happening
because we were calling it for the function-local decls that aren't in the
symbol table, instead of the corresponding namespace-scope decls that are.

gcc/cp/ChangeLog:

PR c++/99108
* call.c (get_function_version_dispatcher): Handle
DECL_LOCAL_DECL_P.
* decl.c (maybe_version_functions): Likewise.
(maybe_mark_function_versioned): New.
* name-lookup.c (push_local_extern_decl_alias): No longer static.
* name-lookup.h (push_local_extern_decl_alias): Adjust.

gcc/testsuite/ChangeLog:

PR c++/99108
* g++.target/i386/pr99108.C: New test.

Co-authored-by: Jason Merrill <jason@redhat.com>
gcc/cp/call.c
gcc/cp/decl.c
gcc/cp/name-lookup.c
gcc/cp/name-lookup.h
gcc/testsuite/g++.target/i386/pr99108.C [new file with mode: 0644]