On Friday, 29 August 2014 at 05:55:18 UTC, Ola Fosheim Gr wrote:
On Friday, 29 August 2014 at 05:31:02 UTC, deadalnix wrote:
If the value in unspecified, rather than the behavior
undefined, it means that no load or store can be optimized
away or reordered, unless the compiler can prove that is won't
fault.
I'm talking about doubtful optimization to gain 0.5% here, but
that everything single variable except locals must be
considered volatile in the C sense.
Why is that? If the value is unspecified then you can assume a
random value, so no single store is needed unless explicitly
volatile?
Wrapping semantics is also bad for optimization, though. You
cannot reduce length < length+N to true in generic code, so you
need to establish bounds on x or create multiple execution
paths. This is usually silly when using a 64 bit int...
Because, if you don't have undefined BEHAVIOR, you can't change
the BEHAVIOR. So you have to prove that store/loads won't fault
before doing anything with them. As per spec. Or you'll change
the BEHAVIOR.