http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48814
--- Comment #1 from Richard Guenther <rguenth at gcc dot gnu.org> 2011-04-29 09:56:08 UTC --- 6.5.16/4 "The order of evaluation of the operands is unspecified." The gimplifier is responsible for this semantic detail of GENERIC (that matches C for its sequence point rules). Can you explain the rationale why the behavior is not simply undefined? The sequence point before the call does not make the evaluation order of the assignment operands defined.