https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65525

--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> ---
Ah, and that was me:

2011-08-12  Richard Guenther  <rguent...@suse.de>

       * call.c (build_over_call): Instead of memcpy use an
       assignment of two MEM_REFs.

which implements memcpy as *(char[n])ptr1 = *(char[n])ptr2;

But we ask

#4  0x000000000097fdb9 in potential_rvalue_constant_expression (
    t=<compound_expr 0x7ffff6a377a8>)
    at /space/rguenther/src/svn/trunk/gcc/cp/constexpr.c:4478
(gdb) p debug_generic_expr (expression)
MEM[(struct A *)&y] = MEM[(struct A *)(const struct A &) (const struct A *)
&a];, y

so I wonder why we look at the side-effects at all?  That is, why does
COMPOUND_EXPR handling not return false on side-effects early?

Reply via email to