git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] vcs-svn: Fix some compiler warnings

From
Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Date
Feb 2, 2012, 18:24 UTC
Message-ID
<4F2AD4CF.7020303@ramsay1.demon.co.uk>
In-Reply-To
<20120131192053.GC12443@burratino>
Jonathan Nieder wrote:
Show 11 quoted lines
> 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.

I didn't check, but I would assume so. I would prefer not to loose any chance at optimizing the code, but in this case, given that we are talking about a fatal error path, I don't think it is much of a loss.

> The -Wtype-limits warning also triggers in some other perfectly
> reasonable situations: see <http://gcc.gnu.org/PR51712>.
[...]
Show 6 quoted lines
>> 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).

Thanks for the above references, and for taking the time to track them down.

Show 19 quoted lines
> 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?

An static inline function was actually my first thought (although I had something more like Junio's suggestion [elsewhere in this thread] in mind), but I didn't want to place it in git-compat-util.h and could not find a suitable place in the vcs-svn directory.

Hmm, I will send a v2 patch along these lines ...

ATB, Ramsay Jones

Previous: Ramsay JonesNext: Jonathan Nieder
Message 15 of 16 in “vcs-svn: Fix some compiler warnings”
  1. vcs-svn: Fix some compiler warningsRamsay Jones, Jan 31, 2012
  2. Jonathan NiederJan 31, 2012
  3. Junio C HamanoJan 31, 2012
  4. Junio C HamanoFeb 2, 2012
  5. 0/3 Re: [PATCH] vcs-svn: Fix some compiler warningsJonathan Nieder, Feb 2, 2012
  6. 1/3 vcs-svn: rename check_overflow arguments for clarityJonathan Nieder, Feb 2, 2012
  7. Dmitry IvankovFeb 2, 2012
  8. Jonathan NiederFeb 2, 2012
  9. David BarrFeb 2, 2012
  10. Jonathan NiederFeb 2, 2012
  11. Junio C HamanoFeb 2, 2012
  12. 2/3 vcs-svn: allow import of > 4GiB filesJonathan Nieder, Feb 2, 2012
  13. 3/3 vcs-svn: suppress a -Wtype-limits warningJonathan Nieder, Feb 2, 2012
  14. Ramsay JonesFeb 2, 2012
  15. Ramsay JonesFeb 2, 2012
  16. Jonathan NiederFeb 2, 2012

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.