https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113757
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords|needs-reduction | --- Comment #6 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Reduced a little further without the undefinedness but with a noreturn function in use (which is important for the ICE here): ``` long size(); struct ll { virtual int hh(); }; ll *slice_owner; int ll::hh() { __builtin_exit(0); } int nn() { if (size()) return 0; return slice_owner->hh(); } int (*a)() = nn; ``` Note the decl a is needed to force nn to have its address taken (simulating a virtual function).