On 3/1/21 8:58 PM, Jason Merrill wrote:
On 3/1/21 11:59 AM, Martin Liška wrote:
On 3/1/21 5:36 PM, Jason Merrill wrote:
On 3/1/21 7:43 AM, Martin Liška wrote:
On 2/22/21 11:53 PM, Jason Merrill wrote:
The problem seems to be with the handling of local decls. If
DECL_LOCAL_DECL_P, you need to look at DECL_LOCAL_DECL_ALIAS to find the
namespace-scope decl. But then if there is no preceding namespace-scope
declaration, the new decl created by push_local_extern_decl_alias doesn't have
a cgraph node, either. I guess maybe_function_versions also needs to look
through DECL_LOCAL_DECL_ALIAS.
Ah, I see. Are you sure about the name 'maybe_function_versions'? I can't find
it.
Ah, it's maybe_version_functions, sorry.
Thanks, I see the function now.
So about your guess:
I guess maybe_function_versions also needs to look through
DECL_LOCAL_DECL_ALIAS.
Do you mean maybe_version_functions's argument 'record' should depend on
DECL_LOCAL_DECL_ALIAS of newdecl/oldddecl
(if present)? Or that DECL_FUNCTION_VERSIONED should be set for
DECL_LOCAL_DECL_ALIASes of the newdecl/olddecl
function declarations?
The latter.
I see, but will not help us. Problem is that
#2 0x00000000015d8899 in ix86_get_function_versions_dispatcher
(decl=0x7ffff7755000) at
/home/marxin/Programming/gcc/gcc/config/i386/i386-features.c:2862
is called for a declaration for which
Breakpoint 5, maybe_version_functions (newdecl=<function_decl 0x7ffff7755000 f>,
olddecl=<function_decl 0x7ffff7751f00 f>, record=false) at
/home/marxin/Programming/gcc/gcc/cp/decl.c:1118
is called with record=false. So that cgraph_node is not created for it.
Or is a possible solution that get_function_version_dispatcher should look
through the DECL_LOCAL_DECL_ALIAS?
Thanks,
Martin
Jason