postincrement behaviour (differences between dmd and gdc)
Jonathan M Davis
jmdavisProg at gmx.com
Wed Apr 20 02:53:48 PDT 2011
> This was partially discussed before some time ago -
> http://www.digitalmars.com/d/archives/digitalmars/D/postincrement_behaviour
> _differences_between_dmd_and_gdc_47334.html
>
>
> The following statement has different behaviours in dmd and gdc.
>
> int x;
> x = x++;
>
>
> Where the backend for DMD interprets it as:
>
> tmp = x;
> x++;
> x = tmp;
>
> And the backend for GDC interprets it as:
>
> x = x;
> x++;
>
>
> Skipping all undefined behaviour/which one is correct talk, an alternative
> suggestion would be to treat such nonsensical code as an error - like
> "Cannot modify the value of a variable twice in the same expression." - as
> this kind of thing I would expect to be almost always a bug.
Actually, I would have expected postincrement and preincrement to be identical
in this case. It was my understanding that the entire expression to the right
of the assignment operator was evaluated before the assignment was made, but I
guess I could see how that could be open to interpretation with regards to the
postincrement operator.
Regardless, I think that making this sort of case an error would make good
sense.
- Jonathan M Davis
More information about the Digitalmars-d
mailing list