[Toybox] PM: code style, was: Re: New Subscriber

Frank Bergmann toybox at tuxad.com
Wed Feb 15 04:45:14 PST 2012


Hi Rob,

On Wed, Feb 15, 2012 at 06:10:38AM -0600, Rob Landley wrote:
> > ... at least it is better readable if you use this nice kernel macros
> > __likely() and unlikely(). ;-)
> 
[...]
> http://lwn.net/Articles/419102/
> http://lwn.net/Articles/404103/
> http://lwn.net/Articles/444336/
> http://lwn.net/Articles/166172/

- I guess my smilies are far too small ;-)
- I just mentioned the kernel macro which uses the gcc-function
  __builtin_expect which is useful if you don't use gcc-profiling and you
  are pretty sure about your optimization (reduce branches by falling
  through a conditional branch in most cases)
- your references are about prefetch, manually prefetches shouldn't be
  done, of course I fully agree

> > Did I wrote "IMHO"? ;-) K&R IMHO doesn't know anything about void. A
> > pointer char* was the universal pointer which may be "converted" (without
> > explicit casting) to any other pointer and vice versa. C99 (and the
> > standard before it) IMHO introduced void at least for this role. And IMHO
> > a non-explicit cast is only allowed for void* and not for char* anymore.
> 
> This is the _compiler_ goign overboard with microoptimizations, if you
> ask me.  I treat it the same way I treat the "may be used uninitialized,
> even though it isn't in this case" warning.  (Which you can apparently
> disable with "int x=x;" in your declarations, which is a syntax
> specifically to tell it to shut up about that, but still way too magic
> for my tastes.)

Full ACK, but you mixed up two points.
You asked me about sort.c, char**, char* and void*. I only said that IMHO
void* may be converted without casting to any other pointer. The
old-fashioned K&R C doesn't know void and uses char* for this "role"
(IMHO).

Frank




More information about the Toybox mailing list