[Toybox] Towards find cleanup

Felix Janda felix.janda at posteo.de
Thu Apr 11 14:17:59 PDT 2013


On 04/10/13 at 07:34pm, Rob Landley wrote:
snip
> > I think that some function parameters should be made const and that
> > the code could be made less repetitive.
> 
> I specify "static" because it allows the compiler to produce better  
> code, but I've never found "const" to actually produce better code. The  
> compiler's optimizer does liveness analysis, it can tell when you don't  
> actually change a value after it's assigned to. In theory const lets  
> the compiler do some of this across translation units, but that's what  
> link time optimization is for these days.
> 
> In addition, const's syntax is unfortunately subtle when pointers are  
> involved. Is the pointer what's const, is what it points to that's  
> const (it binds left except at the left edge...), how about a pointer  
> to a pointer, or pointer to an array...
> 
> I also haven't seen it interface well with the actual read-only  
> sections ELF can produce. There's an -mebedded-data compiler flag that  
> says to put data in the .rodata section. The main use of .rodata is to  
> strings constants in there by default. Yet those strings aren't  
> "const", you can assign a string constant to a regular char * without  
> the compiler ever complaining. (And not being able to do so would  
> pretty fundamentally break C.)
> 
> What const really seems like to me is a leakage from C++'s "public,  
> private, protected" into C. It's a language facility that assumes  
> programmers can't trust themselves or their successors to get it right.

I'd thought telling the compiler stuff can't hurt. Thanks for the
detailed explainations.

> So I tend to remove "const" from the code when I can. It doesn't  
> justify its existence: if we're not supposed to modify the value from  
> here, then don't do it. I trust the programmer to not suck, and I trust  
> reviewers to catch it when they screw up.

I'll keep that in mind.

> Rob

Felix


More information about the Toybox mailing list