This is the mail archive of the
libstdc++@gcc.gnu.org
mailing list for the libstdc++ project.
sequence point across assignment
- From: Anthony Shipman <als at iinet dot net dot au>
- To: libstdc++ <libstdc++ at gcc dot gnu dot org>
- Date: Thu, 12 Nov 2015 11:33:13 +1100
- Subject: sequence point across assignment
- Authentication-results: sourceware.org; auth=none
I had some code:
states_[ix].next_ = compileStep(vec);
The compileStep() function pushed something onto states_
which caused its internal memory to be reallocated. As a result
the returned value was copied to the wrong place. It appears
that the left hand side is reduced to an address before the
call is made.
The compiler is g++ (SUSE Linux) 4.8.3 with options
g++ -g -O0 -Wall -m64 -std=gnu++11 -fpic
Have I strayed into undefined behaviour or is the compiler
being silly? (Might this a consequence of the return value
optimisation)?