[fpc-devel] Const optimization is a serious bug

Chad Berchek ad100 at vobarian.com
Sat Jul 9 18:12:51 CEST 2011


Wow, thanks for the insults guys. I didn't realize I was so stupid.

You missed my point too, BTW. According to the link given:

"A constant argument is passed by reference if its size is larger than a 
pointer."

So you always know what the size of a pointer is? If I have this record:

TMyRec = record
   I: Integer;
end;

Is that passed by value or ref? Is someone compiling on 32-bit or 64? 
You don't know, and neither does anyone. And that is my point about why 
having it defined is important.

I can't even remember the last time I used C++. My point in mentioning 
it was only to demonstrate by analogy what could happen if the same 
ambiguity present in the Pascal construct was present in other 
well-known languages.

All the argument that such "bug" could exist with shortstrings and 
records as well is because nobody can say for sure whether they are 
supposed to be passed by value or by ref--it could be either. With 
constref, there is no ambiguity. You know it will be by ref, hence there 
is no question as to whether it's a bug. Otherwise it's just a matter of 
opinion.

I guess my brain is way to tiny to get past the notion that a "write 
once, compile anywhere" programming language should be defined in such a 
way that the meaning of the program doesn't spontaneously change 
depending on the compilation platform.



More information about the fpc-devel mailing list