https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69438
--- Comment #5 from Abe <abe_skolnik at yahoo dot com> --- Further analysis shows that the ICE is still present after adding a trivial default constructor to the type and making the functions "go through the motions" of creating an object of the requisite type and "return"ing it at their ends even though they call a "noreturn" callee before arriving at their "proper" return statements. Also, this ICE is present at "-Os" in addition to "-O2" and "-O3" [and _not_ present at "-O0" and "-O1"]. __attribute__((noreturn)) void V(int); struct R{R(){} R(const R&r){}}; R f(){R x; V(0); return x;} R c(){R x; V(0); return x;}