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



Reply via email to