This is the mail archive of the
libstdc++@gcc.gnu.org
mailing list for the libstdc++ project.
Re: [committed] Fix -Wmissing-attributes warning in libstdc++ (PR libstdc++/89402)
- From: Jakub Jelinek <jakub at redhat dot com>
- To: Jonathan Wakely <jwakely at redhat dot com>
- Cc: gcc-patches at gcc dot gnu dot org, libstdc++ at gcc dot gnu dot org
- Date: Fri, 22 Feb 2019 02:23:48 +0100
- Subject: Re: [committed] Fix -Wmissing-attributes warning in libstdc++ (PR libstdc++/89402)
- References: <20190220080731.GC2135@tucnak> <20190222011032.GA29002@redhat.com>
- Reply-to: Jakub Jelinek <jakub at redhat dot com>
On Fri, Feb 22, 2019 at 01:10:32AM +0000, 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")));
> | ^
>
> We can disable that with a diagnostic pragma.
Oops, sorry, missed that.
Or make it extern "C" size_t _ZNKSt4hashIeEclEe (long double) or so, after all,
that is what it returns and what it takes as an argument.
> > 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