Steven Schveighoffer Wrote:

> As long as the spec says changing length may expand the array to hold enough 
> space, the optimizer can't, because the optimization would change the side 
> effects of the function.  An optimizer should not change the outcome or side 
> effects of a function.  It's not unheard of for an optimizer to eliminate 
> important operations that it thinks are invalid, but in that case, it's a 
> broken optimizer, I don't see why we would add this case.

This is all true for user-defined data types, but array is totally under 
compiler's control. What optimizations are acceptable depends only on the 
interpretation of the language spec. In particular the sequence

a.length -= 1;
a.length += 1;

as a whole does not result in stomping, so why would it be wrong to optimize it 
away? I claim it's perfectly legitimate. 

Reply via email to