https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69438
--- Comment #7 from Abe <abe_skolnik at yahoo dot com> --- Further analysis shows that the ICE "needs" the user-provided copy ctor; eliminating it, as shown below, eliminates the ICE too. __attribute__((noreturn)) void V(int); struct R{R(){}}; R f(){V(0); return R();} R c(){V(0); return R();}