On Dec 19, 2006, at 6:33 PM, Dave Korn wrote:
On 20 December 2006 02:28, Andrew Pinski wrote:
Paul Brook wrote:
Compiler can optimize it any way it wants,
as long as result is the same as unoptimized one.
We have an option for that. It's called -O0.
Pretty much all optimization will change the behavior of your
program.
Now that's a bit TOO strong a statement, critical optimizations like
register allocation and instruction scheduling will generally not
change
the behavior of the program (though the basic decision to put
something
in a register will, and *surely* no one suggests avoiding this
critical
optimization).
Actually they will with multi threaded program, since you can have
a case
where it works and now it is broken because one thread has speed
up so much
it writes to a variable which had a copy on another thread's stack.
Why isn't that just a buggy program with wilful disregard for the
use of
correct synchronisation techniques?
It is that, as well as a program that features a result that is
different from unoptimized code.