On Tue, May 4, 2021 at 7:12 AM Jonathan Wakely <jwak...@redhat.com> wrote:
>
> On 30/04/21 16:24 -0400, David Edelsohn via Libstdc++ wrote:
> >On Fri, Jan 8, 2021 at 11:10 AM Jonathan Wakely <jwak...@redhat.com> wrote:
> >>
> >> On 03/01/21 22:26 -0500, David Edelsohn via Libstdc++ wrote:
> >> >On Sun, Jan 3, 2021 at 9:45 PM Jonathan Wakely <jwakely....@gmail.com> 
> >> >wrote:
> >> >>
> >> >> On Mon, 4 Jan 2021, 00:44 David Edelsohn via Libstdc++, 
> >> >> <libstd...@gcc.gnu.org> wrote:
> >> >>>
> >> >>> Or is there some other reason that _GLIBCXX_USE_INT128 and
> >> >>> __SIZEOF_INT128__ are used in different contexts?
> >> >>
> >> >> Yes.
> >> >>
> >> >> I'll reply when I'm back from taking some time off. Probably Wednesday.
> >> >
> >> >If the uses of _GLIBCXX_USE_INT128 in libstdc++ headers specifically
> >> >are checking if __int128 type is different than "long" and "long
> >> >long", as opposed to the availability of the __int128, can c++config.h
> >>
> >> Yes, the test is not just "is __int128 a valid type?" but "should we
> >> use __int128 as a larger integer type?"
> >>
> >> We used to use it more widely, but many places that use __int128
> >> conditionally now check __GLIBCXX_INT_N_0 instead, because that is
> >> defined when __int128 is available and we're not compiling in a
> >> "strict ansi" dialect.
> >>
> >> Of the two remaining uses of _GLIBCXX_USE_INT128 I think one is wrong
> >> and should test __SIZEOF__INT128__ directly. We specifically do want
> >> to use unsigned __int128 in __to_chars_unsigned_type even if it's the
> >> same as a standard type.
> >>
> >> So that leaves one remaining use, and I think that should do as you
> >> suggest here ...
> >>
> >> >define _GLIBCXX_USE_INT128 by comparing __SIZEOF_INT128__ to
> >> >__SIZEOF_LONG_LONG__ and __SIZEOF_LONG__ instead of the libstdc++
> >> >configure template typename test?
> >>
> >> Yes, that seems fine. But since we only need it in one place, let's
> >> just do that test in that one place. It makes the purpose of the test
> >> more explicit, and so you don't need to look up what
> >> _GLIBCXX_USE_INT128 means and when it's true.
> >>
> >> Does the attached patch work for you?
> >
> >Hi, Jonathan
> >
> >Thanks for pushing the INT64_T patch.
> >
> >I tested your revised patch in January and it works perfectly.
> >
> >Could you push your INT128 patch to trunk when you have a moment?
> >
> >Thanks, David
>
> I've pushed the attached to trunk after testing on powerpc-aix and
> x86_64-linux.
>
> Contrary to what I said in January, I think both sues of
> _GLIBCXX_USE_INT128 do want to only use __int128 if it's larger than
> long long. For __to_chars_unsigned_type there's no point trying to use
> unsigned __int128 if it's the same size as unsigned long long, because
> we'd already have chosen unsigned long long.

Hi, Jonathan

Excellent.  Thank you very much for addressing this issue and removing
the multilib size dependencies in libstdc++ headers.

Thanks, David

Reply via email to