Re: git: 00dccc3164c6 - main - sys/time: appease gcc -Wtype-limits
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Wed, 15 Apr 2026 09:29:00 UTC
On Wed, Apr 15, 2026 at 2:00 AM Konstantin Belousov <kostikbel@gmail.com> wrote:
>
> On Wed, Apr 15, 2026 at 08:35:21AM +0000, Ryan Libby wrote:
> > The branch main has been updated by rlibby:
> >
> > URL: https://cgit.FreeBSD.org/src/commit/?id=00dccc3164c6dff38350a1baeeea7238acf2efc3
> >
> > commit 00dccc3164c6dff38350a1baeeea7238acf2efc3
> > Author: Ryan Libby <rlibby@FreeBSD.org>
> > AuthorDate: 2026-04-15 08:08:37 +0000
> > Commit: Ryan Libby <rlibby@FreeBSD.org>
> > CommitDate: 2026-04-15 08:08:37 +0000
> >
> > sys/time: appease gcc -Wtype-limits
> >
> > In environments where time_t is 32 bits, including the 32-bit library
> > build on amd64, the overflow being tested for cannot happen, and gcc
> > complains with -Wtype-limits, causing the gcc build to fail. Work
> > around this by ifdef'ing out the saturation code on i386.
> >
> > Reviewed by: imp, jfree
> > Discussed with: markj
> > Fixes: e3799530b3ba ("sys/time: Add saturating sbt conversions")
> > Differential Revision: https://reviews.freebsd.org/D56369
> > ---
> > sys/sys/time.h | 4 ++++
> > 1 file changed, 4 insertions(+)
> >
> > diff --git a/sys/sys/time.h b/sys/sys/time.h
> > index 707565b6a6f1..6f18d8bd844d 100644
> > --- a/sys/sys/time.h
> > +++ b/sys/sys/time.h
> > @@ -355,10 +355,12 @@ tstosbt(struct timespec _ts)
> > static __inline sbintime_t
> > tstosbt_sat(struct timespec _ts)
> > {
> > +#ifndef __i386__
> > if (_ts.tv_sec > SBT_MAX >> 32)
> > return (SBT_MAX);
> > if (_ts.tv_sec < -(SBT_MAX >> 32) - 1)
> > return (-SBT_MAX - 1);
> > +#endif
> > return (tstosbt(_ts));
> > }
> >
> > @@ -382,10 +384,12 @@ tvtosbt(struct timeval _tv)
> > static __inline sbintime_t
> > tvtosbt_sat(struct timeval _tv)
> > {
> > +#ifndef __i386__
> > if (_tv.tv_sec > SBT_MAX >> 32)
> > return (SBT_MAX);
> > if (_tv.tv_sec < -(SBT_MAX >> 32) - 1)
> > return (-SBT_MAX - 1);
> > +#endif
> > return (tvtosbt(_tv));
> > }
>
> I dislike the direct tests for the arch. Could we add some define like
> __SIZEOF_TIME_T and put the code under
> #ifdef __SIZEOF_TIME_T >= 8 instead of __i386__?
Sure, that would work, if you don't mind the wider patch and added definitions.
I put up this diff for review: https://reviews.freebsd.org/D56401
Ryan