https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79232
--- Comment #5 from Jakub Jelinek <jakub at gcc dot gnu.org> --- On the C++, the question really is what C++17 wants with comma expression on the lhs used as lvalue and what should be done for C++14 and earlier. Shouldn't COMPOUND_EXPR be handled like before for -fstrong-eval-order={none,some}? For (a ? b : c) = d; and -fstrong-eval-order=all, if all of a, b, c, d have side-effects, in what order they should be evaluated? Right now g++ will turn that into a ? (b = d) : (c = d); and thus evaluate a's side-effects first, then d's and then either b's or c's. Shouldn't it be evaluated by taking address of b and d and evaluating a only after d's side-effects? And then similar question about COMPOUND_EXPR: (e, (a ? b : c)) = d; Or can it be (e, a) ? (b = d) : (c = d); ? Jason?