https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106862
--- Comment #2 from David Binderman <dcb314 at hotmail dot com> --- Reduced C++ code seems to be: extern fprintf(char); struct string { string(char); }; struct { call(); replace(string); } vsllib; struct ListNode { ListNode(); }; struct TestNode { TestNode(int); }; typedef struct { *node; } YYSTYPE; int vsldebug, VSLLib_parse_vsln, VSLLib_parse_vslvsp_4294967293_0_0; VSLLib_parse() { YYSTYPE *vslvsp; vslnewstate: switch (VSLLib_parse_vsln) { case 13: vslvsp = 0; case 6: string(""); case 35: delete vslvsp; VSLLib_parse_vslvsp_4294967293_0_0 &&vslvsp[0].node ? new ListNode : 0; case 72: delete vslvsp; case 75: vslvsp ? vsllib.call() : 0; case 9: vsllib.call(); case 1: vsllib.call(); case 3: vsllib.call(); case 5: vsllib.call(); case 7: vsllib.call(); case 0: vsllib.call(); case 2: VSLLib_parse_vslvsp_4294967293_0_0 &&vslvsp[0].node ? new TestNode(new int) : 0; string func_name = vsllib.replace(func_name) && vsllib.replace(0); delete vslvsp; } ++vslvsp; if (vsldebug) fprintf(""); goto vslnewstate; }