On Friday, 1 April 2016 at 01:19:01 UTC, Timon Gehr wrote:
On 01.04.2016 00:52, deadalnix wrote:


DMD optimizes malloc because the only reason it would have to return a different pointer would be internal state (and in fact, it indeed has
internal state).

It's the other way around. Without the "optimization" there is no way for a 'pure' function to return a reference to the same mutable memory block independent of its arguments more than once. In the end it is up to the spec, but IMO compiler optimizations should not be able to introduce mutable aliasing that was not there before. (Even for immutable references, sharing the same result is moot, as D supports checking for reference equality.)

I can see the logic. Yet, the only thing that can be returned if no state is exposed is either a constant or something computed from 1 (cast(void*) 1).

But yeah, the optimization should probably not be done if the return type is mutable.


Reply via email to