mailing list of musl libc
 help / color / mirror / code / Atom feed
* [PATCH 4/4] fix a minor bug for the definition of WINT_MIN
@ 2014-11-25 14:50 Jens Gustedt
  2014-12-02 18:06 ` Rich Felker
  0 siblings, 1 reply; 7+ messages in thread
From: Jens Gustedt @ 2014-11-25 14:50 UTC (permalink / raw)
  To: musl

This must be an unsigned value.
---
 include/stdint.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/stdint.h b/include/stdint.h
index 8b91163..8b81ca0 100644
--- a/include/stdint.h
+++ b/include/stdint.h
@@ -78,7 +78,7 @@ typedef uint64_t uint_least64_t;
 #define INTMAX_MAX  INT64_MAX
 #define UINTMAX_MAX UINT64_MAX
 
-#define WINT_MIN 0
+#define WINT_MIN (+_UINTEGER_C(uint32_t, 0))
 #define WINT_MAX UINT32_MAX
 
 #if L'\0'-1 > 0
-- 
1.9.1



^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 4/4] fix a minor bug for the definition of WINT_MIN
  2014-11-25 14:50 [PATCH 4/4] fix a minor bug for the definition of WINT_MIN Jens Gustedt
@ 2014-12-02 18:06 ` Rich Felker
  2014-12-02 19:23   ` Jens Gustedt
  0 siblings, 1 reply; 7+ messages in thread
From: Rich Felker @ 2014-12-02 18:06 UTC (permalink / raw)
  To: musl

On Tue, Nov 25, 2014 at 03:50:17PM +0100, Jens Gustedt wrote:
> This must be an unsigned value.
> ---
>  include/stdint.h | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/include/stdint.h b/include/stdint.h
> index 8b91163..8b81ca0 100644
> --- a/include/stdint.h
> +++ b/include/stdint.h
> @@ -78,7 +78,7 @@ typedef uint64_t uint_least64_t;
>  #define INTMAX_MAX  INT64_MAX
>  #define UINTMAX_MAX UINT64_MAX
>  
> -#define WINT_MIN 0
> +#define WINT_MIN (+_UINTEGER_C(uint32_t, 0))
>  #define WINT_MAX UINT32_MAX

Indeed, but 0U would be a much nicer way of writing it.

Also I'm wondering why I have wint_t in the arch-specific
alltypes.h.in files if stdint.h is assuming the type is
unsigned/32-bit, and it actually is for all archs. Perhaps we should
move it into the shared part of alltypes.h.in?

Rich


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 4/4] fix a minor bug for the definition of WINT_MIN
  2014-12-02 18:06 ` Rich Felker
@ 2014-12-02 19:23   ` Jens Gustedt
  2014-12-02 19:47     ` Rich Felker
  0 siblings, 1 reply; 7+ messages in thread
From: Jens Gustedt @ 2014-12-02 19:23 UTC (permalink / raw)
  To: musl

[-- Attachment #1: Type: text/plain, Size: 1445 bytes --]

Am Dienstag, den 02.12.2014, 13:06 -0500 schrieb Rich Felker:
> On Tue, Nov 25, 2014 at 03:50:17PM +0100, Jens Gustedt wrote:
> > This must be an unsigned value.
> > ---
> >  include/stdint.h | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/include/stdint.h b/include/stdint.h
> > index 8b91163..8b81ca0 100644
> > --- a/include/stdint.h
> > +++ b/include/stdint.h
> > @@ -78,7 +78,7 @@ typedef uint64_t uint_least64_t;
> >  #define INTMAX_MAX  INT64_MAX
> >  #define UINTMAX_MAX UINT64_MAX
> >  
> > -#define WINT_MIN 0
> > +#define WINT_MIN (+_UINTEGER_C(uint32_t, 0))
> >  #define WINT_MAX UINT32_MAX
> 
> Indeed, but 0U would be a much nicer way of writing it.

But this would be wrong on platforms with 16 bit int, no?

> Also I'm wondering why I have wint_t in the arch-specific
> alltypes.h.in files if stdint.h is assuming the type is
> unsigned/32-bit, and it actually is for all archs. Perhaps we should
> move it into the shared part of alltypes.h.in?

don't we have archs with 16 bit int?

but right, even then we could move it up and define it as uint32_t

Jens

-- 
:: INRIA Nancy Grand Est ::: AlGorille ::: ICube/ICPS :::
:: ::::::::::::::: office Strasbourg : +33 368854536   ::
:: :::::::::::::::::::::: gsm France : +33 651400183   ::
:: ::::::::::::::: gsm international : +49 15737185122 ::
:: http://icube-icps.unistra.fr/index.php/Jens_Gustedt ::



[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 4/4] fix a minor bug for the definition of WINT_MIN
  2014-12-02 19:23   ` Jens Gustedt
@ 2014-12-02 19:47     ` Rich Felker
  2014-12-02 21:42       ` Jens Gustedt
  0 siblings, 1 reply; 7+ messages in thread
From: Rich Felker @ 2014-12-02 19:47 UTC (permalink / raw)
  To: musl

On Tue, Dec 02, 2014 at 08:23:18PM +0100, Jens Gustedt wrote:
> Am Dienstag, den 02.12.2014, 13:06 -0500 schrieb Rich Felker:
> > On Tue, Nov 25, 2014 at 03:50:17PM +0100, Jens Gustedt wrote:
> > > This must be an unsigned value.
> > > ---
> > >  include/stdint.h | 2 +-
> > >  1 file changed, 1 insertion(+), 1 deletion(-)
> > > 
> > > diff --git a/include/stdint.h b/include/stdint.h
> > > index 8b91163..8b81ca0 100644
> > > --- a/include/stdint.h
> > > +++ b/include/stdint.h
> > > @@ -78,7 +78,7 @@ typedef uint64_t uint_least64_t;
> > >  #define INTMAX_MAX  INT64_MAX
> > >  #define UINTMAX_MAX UINT64_MAX
> > >  
> > > -#define WINT_MIN 0
> > > +#define WINT_MIN (+_UINTEGER_C(uint32_t, 0))
> > >  #define WINT_MAX UINT32_MAX
> > 
> > Indeed, but 0U would be a much nicer way of writing it.
> 
> But this would be wrong on platforms with 16 bit int, no?

POSIX requires int to be at least 32 bits.

> > Also I'm wondering why I have wint_t in the arch-specific
> > alltypes.h.in files if stdint.h is assuming the type is
> > unsigned/32-bit, and it actually is for all archs. Perhaps we should
> > move it into the shared part of alltypes.h.in?
> 
> don't we have archs with 16 bit int?

No. And we don't have archs with int > 32 bits either because too much
would break with no practical benefits. (For example, uint32_t would
be smaller than int and thus would be subject to default promotions,
UB on overflow, etc. and there would be no way to get either a 16-bit
type or a 32-bit type without extended integer types.)

> but right, even then we could move it up and define it as uint32_t

That would not work directly, as wint_t is exposed in places that
don't expose uint32_t.

Rich


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 4/4] fix a minor bug for the definition of WINT_MIN
  2014-12-02 19:47     ` Rich Felker
@ 2014-12-02 21:42       ` Jens Gustedt
  2014-12-02 21:56         ` Rich Felker
  0 siblings, 1 reply; 7+ messages in thread
From: Jens Gustedt @ 2014-12-02 21:42 UTC (permalink / raw)
  To: musl

[-- Attachment #1: Type: text/plain, Size: 1887 bytes --]

Am Dienstag, den 02.12.2014, 14:47 -0500 schrieb Rich Felker:
> On Tue, Dec 02, 2014 at 08:23:18PM +0100, Jens Gustedt wrote:
> > > Indeed, but 0U would be a much nicer way of writing it.
> > 
> > But this would be wrong on platforms with 16 bit int, no?
> 
> POSIX requires int to be at least 32 bits.

ah right, and since we heavily rely on linux we don't assume that we
will ever run on a non-POSIX platform

> > > Also I'm wondering why I have wint_t in the arch-specific
> > > alltypes.h.in files if stdint.h is assuming the type is
> > > unsigned/32-bit, and it actually is for all archs. Perhaps we should
> > > move it into the shared part of alltypes.h.in?
> > 
> > don't we have archs with 16 bit int?
> 
> No. And we don't have archs with int > 32 bits either because too much
> would break with no practical benefits. (For example, uint32_t would
> be smaller than int and thus would be subject to default promotions,
> UB on overflow, etc. and there would be no way to get either a 16-bit
> type or a 32-bit type without extended integer types.)
> 
> > but right, even then we could move it up and define it as uint32_t
> 
> That would not work directly, as wint_t is exposed in places that
> don't expose uint32_t.

So that's probably the reason why it is burried in the arch specific
stuff. So I see two solutions

 - have it as I did, be symmetric, and burry it in the arch specific
   files

 - have it in one place, but then bluntly use unsigned, UINT_MAX and 0U

I have no personal preference for any of that.

Jens


-- 
:: INRIA Nancy Grand Est ::: AlGorille ::: ICube/ICPS :::
:: ::::::::::::::: office Strasbourg : +33 368854536   ::
:: :::::::::::::::::::::: gsm France : +33 651400183   ::
:: ::::::::::::::: gsm international : +49 15737185122 ::
:: http://icube-icps.unistra.fr/index.php/Jens_Gustedt ::





[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 4/4] fix a minor bug for the definition of WINT_MIN
  2014-12-02 21:42       ` Jens Gustedt
@ 2014-12-02 21:56         ` Rich Felker
  2014-12-03 10:24           ` Jens Gustedt
  0 siblings, 1 reply; 7+ messages in thread
From: Rich Felker @ 2014-12-02 21:56 UTC (permalink / raw)
  To: musl

On Tue, Dec 02, 2014 at 10:42:57PM +0100, Jens Gustedt wrote:
> Am Dienstag, den 02.12.2014, 14:47 -0500 schrieb Rich Felker:
> > On Tue, Dec 02, 2014 at 08:23:18PM +0100, Jens Gustedt wrote:
> > > > Indeed, but 0U would be a much nicer way of writing it.
> > > 
> > > But this would be wrong on platforms with 16 bit int, no?
> > 
> > POSIX requires int to be at least 32 bits.
> 
> ah right, and since we heavily rely on linux we don't assume that we
> will ever run on a non-POSIX platform
> 
> > > > Also I'm wondering why I have wint_t in the arch-specific
> > > > alltypes.h.in files if stdint.h is assuming the type is
> > > > unsigned/32-bit, and it actually is for all archs. Perhaps we should
> > > > move it into the shared part of alltypes.h.in?
> > > 
> > > don't we have archs with 16 bit int?
> > 
> > No. And we don't have archs with int > 32 bits either because too much
> > would break with no practical benefits. (For example, uint32_t would
> > be smaller than int and thus would be subject to default promotions,
> > UB on overflow, etc. and there would be no way to get either a 16-bit
> > type or a 32-bit type without extended integer types.)
> > 
> > > but right, even then we could move it up and define it as uint32_t
> > 
> > That would not work directly, as wint_t is exposed in places that
> > don't expose uint32_t.
> 
> So that's probably the reason why it is burried in the arch specific
> stuff. So I see two solutions
> 
>  - have it as I did, be symmetric, and burry it in the arch specific
>    files
> 
>  - have it in one place, but then bluntly use unsigned, UINT_MAX and 0U
> 
> I have no personal preference for any of that.

One simple definition that seems to work and naturally gets the types
right:

#define WINT_MAX 0xffffffffu
#define WINT_MIN (WINT_MAX-WINT_MAX)

Note that UINT_MAX isn't available in stdint.h; this was probably the
original motivation for using UINT32_MAX. But spelling it out as
0xffffffffu explicitly works just as well.

Rich


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 4/4] fix a minor bug for the definition of WINT_MIN
  2014-12-02 21:56         ` Rich Felker
@ 2014-12-03 10:24           ` Jens Gustedt
  0 siblings, 0 replies; 7+ messages in thread
From: Jens Gustedt @ 2014-12-03 10:24 UTC (permalink / raw)
  To: musl

[-- Attachment #1: Type: text/plain, Size: 1151 bytes --]

Am Dienstag, den 02.12.2014, 16:56 -0500 schrieb Rich Felker:
> On Tue, Dec 02, 2014 at 10:42:57PM +0100, Jens Gustedt wrote:
> > So that's probably the reason why it is burried in the arch specific
> > stuff. So I see two solutions
> > 
> >  - have it as I did, be symmetric, and burry it in the arch specific
> >    files
> > 
> >  - have it in one place, but then bluntly use unsigned, UINT_MAX and 0U
> > 
> > I have no personal preference for any of that.
> 
> One simple definition that seems to work and naturally gets the types
> right:
> 
> #define WINT_MAX 0xffffffffu
> #define WINT_MIN (WINT_MAX-WINT_MAX)
> 
> Note that UINT_MAX isn't available in stdint.h; this was probably the
> original motivation for using UINT32_MAX. But spelling it out as
> 0xffffffffu explicitly works just as well.

perfect

Jens

-- 
:: INRIA Nancy Grand Est ::: AlGorille ::: ICube/ICPS :::
:: ::::::::::::::: office Strasbourg : +33 368854536   ::
:: :::::::::::::::::::::: gsm France : +33 651400183   ::
:: ::::::::::::::: gsm international : +49 15737185122 ::
:: http://icube-icps.unistra.fr/index.php/Jens_Gustedt ::



[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2014-12-03 10:24 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-11-25 14:50 [PATCH 4/4] fix a minor bug for the definition of WINT_MIN Jens Gustedt
2014-12-02 18:06 ` Rich Felker
2014-12-02 19:23   ` Jens Gustedt
2014-12-02 19:47     ` Rich Felker
2014-12-02 21:42       ` Jens Gustedt
2014-12-02 21:56         ` Rich Felker
2014-12-03 10:24           ` Jens Gustedt

Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/musl/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).