From: Jonathan Nieder <jrnieder@gmail.com>
To: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Cc: David Barr <davidbarr@google.com>,
Junio C Hamano <gitster@pobox.com>,
GIT Mailing-list <git@vger.kernel.org>
Subject: Re: [PATCH] vcs-svn: Fix some compiler warnings
Date: Tue, 31 Jan 2012 13:20:53 -0600 [thread overview]
Message-ID: <20120131192053.GC12443@burratino> (raw)
In-Reply-To: <4F28378F.6080108@ramsay1.demon.co.uk>
Hi,
Ramsay Jones wrote:
> In particular, some versions of gcc complains as follows:
>
> CC vcs-svn/sliding_window.o
> vcs-svn/sliding_window.c: In function `check_overflow':
> vcs-svn/sliding_window.c:36: warning: comparison is always false \
> due to limited range of data type
Yuck. Suppressing this warning would presumably also suppress the
optimization that notices the comparison is always false.
The -Wtype-limits warning also triggers in some other perfectly
reasonable situations: see <http://gcc.gnu.org/PR51712>. I wonder if
we should keep a list of unreliable warnings somewhere (e.g.,
Meta/Make).
[...]
> Note that the "some versions of gcc" which complain includes 3.4.4 and
> 4.1.2, whereas gcc version 4.4.0 compiles the code without complaint.
Thanks for tracking this down. Interesting. -Wtype-limits was split
out from the default set of warnings (!) in gcc 4.3 to address
<http://gcc.gnu.org/PR12963>, among other bugs (r124875, 2007-05-20).
[...]
> --- a/vcs-svn/fast_export.c
> +++ b/vcs-svn/fast_export.c
> @@ -300,7 +300,8 @@ void fast_export_blob_delta(uint32_t mode,
> uint32_t len, struct line_buffer *input)
> {
> long postimage_len;
> - if (len > maximum_signed_value_of_type(off_t))
> + uintmax_t delta_len = (uintmax_t) len;
> + if (delta_len > maximum_signed_value_of_type(off_t))
> die("enormous delta");
> postimage_len = apply_delta((off_t) len, input, old_data, old_mode);
Is there some less ugly way to write the condition "if this value is
not representable in this type"?
I guess I could live with something like the following (please don't
take the names too seriously):
static inline off_t off_t_or_die(uintmax_t val, const char *msg_if_bad)
{
if (val > maximum_signed_value_of_type(off_t))
die("%s", msg_if_bad);
return (off_t) val;
}
...
off_t delta_len = off_t_or_die(len, "enormous delta");
postimage_len = apply_delta(delta_len, input, ...);
What do you think?
Jonathan
next prev parent reply other threads:[~2012-01-31 19:21 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-01-31 18:48 [PATCH] vcs-svn: Fix some compiler warnings Ramsay Jones
2012-01-31 19:20 ` Jonathan Nieder [this message]
2012-01-31 20:14 ` Junio C Hamano
2012-02-02 4:14 ` Junio C Hamano
2012-02-02 10:41 ` [PATCH/RFC 0/3] " Jonathan Nieder
2012-02-02 10:59 ` [PATCH 1/3] vcs-svn: rename check_overflow arguments for clarity Jonathan Nieder
2012-02-02 11:05 ` Dmitry Ivankov
2012-02-02 11:16 ` Jonathan Nieder
2012-02-02 11:25 ` David Barr
2012-02-02 11:27 ` Jonathan Nieder
2012-02-02 18:56 ` Junio C Hamano
2012-02-02 11:03 ` [PATCH 2/3] vcs-svn: allow import of > 4GiB files Jonathan Nieder
2012-02-02 11:06 ` [PATCH 3/3] vcs-svn: suppress a -Wtype-limits warning Jonathan Nieder
2012-02-02 22:18 ` Ramsay Jones
2012-02-02 18:24 ` [PATCH] vcs-svn: Fix some compiler warnings Ramsay Jones
2012-02-02 18:53 ` Jonathan Nieder
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20120131192053.GC12443@burratino \
--to=jrnieder@gmail.com \
--cc=davidbarr@google.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=ramsay@ramsay1.demon.co.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.