https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63940
--- Comment #2 from Andreas Schwab <sch...@linux-m68k.org> --- This looks bogus (from cxx_eval_binary_expression): if (lhs == orig_lhs && rhs == orig_rhs) return t; Just because both operands are self-evaluating doesn't mean we can return the unfolded expression.