On 2/24/21 5:08 PM, Jason Merrill wrote:
> On 2/16/21 1:52 PM, Jeff Law wrote:
>>
>>
>> On 2/11/21 10:18 PM, Jason Merrill via Gcc-patches wrote:
>>> The patch for PR92372 made us start warning about a flatten
>>> attribute on an
>>> alias.  But in the case of C++ 'tor base/complete variants, the user
>>> didn't
>>> create the alias, so we shouldn't warn.
>>>
>>> I could also remove the attribute in maybe_clone_body, but here
>>> seems a bit
>>> better.
>>>
>>> Tested x86_64-pc-linux-gnu.  OK for trunk?
>>>
>>> gcc/ChangeLog:
>>>
>>>     PR c++/96078
>>>     * cgraph.c (cgraph_node::create_same_body_alias): Remove flatten
>>>     attribute from alias.
>>>
>>> gcc/testsuite/ChangeLog:
>>>
>>>     PR c++/96078
>>>     * g++.dg/ext/attr-flatten1.C: New test.
>> But shouldn't we validate that we've got a C++ ctor/dtor rather than
>> blindly removing the attribute from all aliases?  ISTM like the patch
>> as-is would always suppress warnings when we create a same-body alias
>> regardless of why we created a same-body alias.
>
> Fair enough.  How about this approach, instead?  If the target also
> has attribute flatten, we're getting the desired effect even though
> the called symbol is an alias.
>
> 0001-cgraph-flatten-and-same_body-aliases-PR96078.patch
>
> From 740414f268382625525a892fd14357f694ca4391 Mon Sep 17 00:00:00 2001
> From: Jason Merrill <ja...@redhat.com>
> Date: Thu, 11 Feb 2021 22:01:19 -0500
> Subject: [PATCH] cgraph: flatten and same_body aliases [PR96078]
> To: gcc-patches@gcc.gnu.org
>
> The patch for PR92372 made us start warning about a flatten attribute on an
> alias.  But in the case of C++ 'tor base/complete variants, the user didn't
> create the alias.  If the alias target also has the attribute, the alias
> points to a flattened function, so we shouldn't warn.
>
> gcc/ChangeLog:
>
>       PR c++/96078
>       * cgraphunit.c (process_function_and_variable_attributes): Don't
>       warn about flatten on an alias if the target also has it.
>       * cgraph.h (symtab_node::get_alias_target_tree): New.
>
> gcc/testsuite/ChangeLog:
>
>       PR c++/96078
>       * g++.dg/ext/attr-flatten1.C: New test.
OK
jeff

Reply via email to