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

Re: [RFH] gcc constant expression warning...

From
Daniel Barkalow <barkalow@iabervon.org>
Date
Oct 28, 2007, 16:28 UTC
Message-ID
<Pine.LNX.4.64.0710281204350.7345@iabervon.org>
In-Reply-To
<87ir4rletv.fsf@mid.deneb.enyo.de>
On Sun, 28 Oct 2007, Florian Weimer wrote:
Show 12 quoted lines
> * Junio C. Hamano:
> 
> > The offending lines are:
> >
> >         if (idx_size != min_size) {
> >                 /* make sure we can deal with large pack offsets */
> >                 off_t x = 0x7fffffffUL, y = 0xffffffffUL;
> >                 if (x > (x + 1) || y > (y + 1)) {
> >                         munmap(idx_map, idx_size);
> 
> x and y must be unsigned for this test to work (signed overflow is
> undefined).

I believe the test is trying to determine if signed addition on numbers of a certain size is safe in this environment. Doing the test with unsigned variables would cause the test to give a predictable but irrelevant result. I think gcc is being annoying in assuming that signed overflow doesn't occur (even when it must), rather than assuming that the result of signed overflow is some arbitrary and likely not useful value. If we have an overflow possible with off_t in the way we'd use it, then one of those tests should be automatically true due to the limited size of the type (except that I think the test should be >= instead of >). I think we should be able to assume that the result of a signed overflow, whatever undefined value it is, is a possible value of its type and therefore not more than the maximum value of its type, but gcc may be screwing this up.

It's probably best just to test the size of off_t.
	-Daniel
*This .sig left intentionally blank*
Previous: Florian WeimerNext: Antti-Juhani Kaijanaho
Message 3 of 8 in “[RFH] gcc constant expression warning...”
  1. Junio C HamanoOct 28, 2007
  2. Florian WeimerOct 28, 2007
  3. Daniel BarkalowOct 28, 2007
  4. Antti-Juhani KaijanahoOct 28, 2007
  5. Linus TorvaldsOct 28, 2007
  6. Nicolas PitreOct 29, 2007
  7. Stephen RothwellOct 29, 2007
  8. Linus TorvaldsOct 29, 2007

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.