On Thursday, 31 July 2014 at 15:37:23 UTC, Daniel Gibson wrote:
Am 31.07.2014 17:26, schrieb Artur Skawina via Digitalmars-d:
On 07/31/14 15:44, Daniel Gibson via Digitalmars-d wrote:
And don't forget this (rather old) case:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=8537
(I really don't get why anyone would want such an
optimization: I want an optimizer to use clever inlining, use
SSE etc where it makes sense and stuff like that - but not to
remove code I wrote.)
That is actually not a bug, but a perfectly valid
optimization. The
compiler isn't clairvoyant and can not know that some data
that you
wrote, but never read back, matters.
I don't want the compiler to care about that. When I tell it to
write something, I want it to do that, even if it might look
like nonsense (if anything, it could create a warning).
The thing is: I don't want a compiler to remove code I wrote
just because it "thinks" it's superfluous.
The idea that the compiler simply lowers your code to
well-written assembly died decades ago. The job of an optimiser
is to *not* use your code but instead to compile a program that
is equivalent to yours but faster/smaller. What is equivalent is
defined by the language spec.