Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 05 Sep 2011 18:43:45 +0200
From:      Matthias Andree <matthias.andree@gmx.de>
To:        freebsd-ports@freebsd.org
Subject:   Re: reasons for rewriting regular memory
Message-ID:  <4E64FC41.2080702@gmx.de>
In-Reply-To: <4e6491d0.MNLKNzL63JK0kXDG%perryh@pluto.rain.com>
References:  <20110725155920.GA83490@freebsd.org>	<4E631DBF.9000106@yandex.ru> <20110904101252.526de5ef@nonamehost.>	<4E632A09.8060904@FreeBSD.org> <20110904114550.71c63078@nonamehost.>	<4E63516B.7000805@FreeBSD.org>	<20110904130659.7a94cce8@raksha.tavi.co.uk> <4E637DD8.50700@gmx.de> <4e6491d0.MNLKNzL63JK0kXDG%perryh@pluto.rain.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Am 05.09.2011 11:09, schrieb perryh@pluto.rain.com:
> Matthias Andree <matthias.andree@gmx.de> wrote:
>>> I agree, but I can think of another valid exception. System with
>>> Hamming correction on the memory, gets a single bit (correctable)
>>> error. Need to rewrite the memory contents to reset all the parity
>>> bits!
>> That's a matter of the EDAC stuff, not the business of applications.
> 
> True, but it may explain why clang does not flag "*x = *x;" when it
> does flag "x = x;".  A compiler cannot know the context in which the
> compiled code will be used.

And a compiler is free to optimize either away unless the storage class
is "volatile", so the original point stands:

> BTW I agree that an understanding is needed of _why_ the code in
> question was included.  

Which waits on the original author.

On the other issue:

> I have seen "x = x;" -- x being a formal
> parameter -- used to prevent an "unused argument" warning in a
> function which did not in fact need the argument in question, but
> had to declare it for uniformity with other functions pointed to
> by the same function pointer type.

The portable and concise solution is to cast unused arguments to void,
as in this example:

int f(int used, int unused) {
  (void)unused; // avoids warnings

  // ...
  // now do something with used
  // ...

  return 42;
}



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4E64FC41.2080702>