As far as I can tell the wording in C++11 doesn't mention the "value computation" of preincrement and predecrement in relation to the update:
[expr.pre.incr]
1 The operand of prefix ++ is modified by adding 1, or set to true if it
is bool (this use is deprecated). The operand shall be a modifiable
lvalue. The type of the operand shall be an arithmetic type or a
pointer to a completely-defined object type. The result is the updated
operand; it is an lvalue, and it is a bit-field if the operand is a
bit-field. If x is not of type bool, the expression ++x is equivalent
to x+=1.
There is nothing in the above paragraph from which I'd conclude the modification has to come first. An implementation may very well compute the updated value (and use it) prior to writing it into the object by the next sequence point.
In which case we will have ourselves a side-effect that is indeterminately sequenced with another modification. So I'd say since the standard doesn't specify if there is a side-effect, nor how such potential side-effect is to be sequenced, the whole thing is undefined by omission.
With C++17, we of course get well defined sequencing with or without this potential side-effect.