July 24, 2018 Re: Comparing D vs C++ (wierd behaviour of C++) | ||||
---|---|---|---|---|
| ||||
Posted in reply to Patrick Schluter | On Tuesday, 24 July 2018 at 21:03:00 UTC, Patrick Schluter wrote:
> On Tuesday, 24 July 2018 at 19:39:10 UTC, Ecstatic Coder wrote:
>>> He gets different results with and without optimization because without optimization the result of the calculation is spilled to the i unsigned int and then reloaded for the print call. This save and reload truncated the value to its real value. In the optimized version, the compiler removed the spill and the overflowed value contained in the register is printed as is.
>>
>> Btw you are actually confirming what I said.
>>
>> if (i != 0xFFFFFFFF) ...
>>
>> In the optimized version, when the 64 bits "i" value is compared to a 32 bits constant, the test fails...
>>
>> Proof that the value is stored in a **64** bits register, not 32...
>
> We're nitpicking over vocabulary. For me buffer != register. Buffer is something in memory in my mental model (or is hardware like the store buffer between register and the cache) but never would I denominate a register as a buffer.
Pick the word you prefer, the i value is stored in a 64 bits "place", hence the weird behavior.
|
Copyright © 1999-2021 by the D Language Foundation