From: Martin Liska Date: Mon, 28 Feb 2022 10:58:01 +0000 (+0100) Subject: Fix error recovery in toplev::finalize. X-Git-Tag: basepoints/gcc-13~903 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=1060d06b4df8836135ed15d020afbd3637dc625b;p=thirdparty%2Fgcc.git Fix error recovery in toplev::finalize. PR ipa/104648 gcc/ChangeLog: * main.cc (main): Use flag_checking instead of CHECKING_P and run toplev::finalize only if there is not error seen. gcc/testsuite/ChangeLog: * g++.dg/pr104648.C: New test. --- diff --git a/gcc/main.cc b/gcc/main.cc index f9dd6b2af58b..4ba28b7de53f 100644 --- a/gcc/main.cc +++ b/gcc/main.cc @@ -37,9 +37,9 @@ main (int argc, char **argv) true /* init_signals */); int r = toplev.main (argc, argv); -#if CHECKING_P - toplev.finalize (); -#endif + + if (flag_checking && !seen_error ()) + toplev.finalize (); return r; } diff --git a/gcc/testsuite/g++.dg/pr104648.C b/gcc/testsuite/g++.dg/pr104648.C new file mode 100644 index 000000000000..b8b7c2864cf2 --- /dev/null +++ b/gcc/testsuite/g++.dg/pr104648.C @@ -0,0 +1,9 @@ +// { dg-do compile } +// { dg-options "-fvtable-verify=preinit" } + +struct A {}; +struct B : virtual A +{ + B () {}; + B () {}; /* { dg-error "cannot be overloaded with" } */ +};