bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: warning: comparison is always false due to limited range of data typ


From: Paul Eggert
Subject: Re: warning: comparison is always false due to limited range of data type
Date: Wed, 31 Aug 2005 16:09:31 -0700
User-agent: Gnus/5.1007 (Gnus v5.10.7) Emacs/21.4 (gnu/linux)

Jim Meyering <address@hidden> writes:

> Is it really permitted to have sizeof (size_t) < sizeof (unsigned int)?

Yes, I'm afraid so.  The C Standard merely says that size_t is an
unsigned integer type; size_t is allowed to be narrower than unsigned int.
See, for example, Mark Brader's 10-year-old post on this subject in
<http://groups.google.com/group/comp.std.c/msg/70cbd32ec8543738>
(originally <news:address@hidden>).

> Sounds pretty darn perverted, and I'll bet it would make lots of code break.

I agree.  I can't imagine it occuring on a general-purpose host.
Maybe some of the odder embedded hosts.  It's not worth worrying
about if it takes real work to make the code portable.

>> Also, I'd rather not penalize all compilers just because GCC is busted.
>
> I understand the point, but wonder if this `penalty'
> is even measurable, in practice.

Not here; but I am a bit worried about the precedent.  Checking for
size-arithmetic overflow can slow things down quite a bit in some
other cases.  (Perhaps I'm being overly influenced here by the regex
code, which I've been looking at for a bit, and which I'm afraid
contains many arithmetic-overflow bugs....)

> The offending warning breaks coreutils' `make distcheck' rule.

Would it make sense to rewrite coreutils 'make distcheck' to filter
out the bogus diagnostics?  That might be a simpler fix.

> The cure, with all of those #if's, is looking worse than the disease.

You've convinced me.  Let's ignore that #iffy patch and try to come up
with a better solution to the real problem.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]