[committed] Fix -Wmissing-attributes warning in libstdc++ (PR libstdc++/89402)
Martin Sebor
msebor@gmail.com
Fri Feb 22 15:41:00 GMT 2019
On 2/21/19 6:10 PM, Jonathan Wakely wrote:
> On 20/02/19 09:07 +0100, Jakub Jelinek wrote:
>> Hi!
>>
>> The following patch fixes a warning when building on targets where long
>> double switched from being the same as double to something wider,
>> like e.g. powerpc*-linux, alpha*-linux, s390*-linux etc.
>>
>> Fixed thusly, bootstrapped/regtested on {x86_64,i686,s390x}-linux and
>> bootstrapped on powerpc64le-linux, on both s390x and powerpc64le it
>> removed
>> all
>> ../../../../libstdc++-v3/src/c++98/compatibility-ldbl.cc:77:17:
>> warning: 'void _ZNKSt4hashIeEclEe()' specifies less restrictive
>> attribute than its target 'std::size_t
>> std::tr1::hash<_Tp>::operator()(_Tp) const [with _Tp = long double]':
>> 'pure' [-Wmissing-attributes]
>> warnings from the build log. Preapproved by Jonathan in the PR,
>> committed
>> to trunk.
>
> Now I see:
>
> /home/jwakely/src/gcc/libstdc++-v3/src/c++98/compatibility-ldbl.cc:78:65: warning:
> âpureâ attribute on function returning âvoidâ [-Wattributes]
> Â 78 |Â Â _GLIBCXX_PURE __attribute__((alias ("_ZNKSt3tr14hashIeEclEe")));
> Â Â Â Â |Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â ^
Are the attributes on this alias ever considered in calls to it?
If not (and assuming there's a way to tell, which I think there
should be but haven't verified it) the warning could be relaxed
to only trigger for those that are. I think those would be
either aliases declared in headers, or those with the TREE_USED
bit set.
Martin
>
> We can disable that with a diagnostic pragma.
>
>
>
>> 2019-02-20 Jakub Jelinek <jakub@redhat.com>
>>
>> Â Â Â Â PR libstdc++/89402
>> Â Â Â Â * src/c++98/compatibility-ldbl.cc (_ZNKSt4hashIeEclEe): Add
>> Â Â Â Â _GLIBCXX_PURE to the alias declaration.
>>
>> --- libstdc++-v3/src/c++98/compatibility-ldbl.cc.jj   2019-01-01
>> 12:39:41.530606161 +0100
>> +++ libstdc++-v3/src/c++98/compatibility-ldbl.cc   2019-02-19
>> 16:12:52.402123217 +0100
>> @@ -75,6 +75,6 @@ namespace std _GLIBCXX_VISIBILITY(defaul
>> // and std::hash<long double>::operator()
>> // are the same, no need to duplicate them.
>> extern "C" void _ZNKSt4hashIeEclEe (void)
>> -Â __attribute__((alias ("_ZNKSt3tr14hashIeEclEe")));
>> +Â _GLIBCXX_PURE __attribute__((alias ("_ZNKSt3tr14hashIeEclEe")));
>>
>> #endif
>>
>>
>> Â Â Â Â Jakub
More information about the Libstdc++
mailing list