From 1060d06b4df8836135ed15d020afbd3637dc625b Mon Sep 17 00:00:00 2001 From: Martin Liska Date: Mon, 28 Feb 2022 11:58:01 +0100 Subject: 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. --- gcc/main.cc | 6 +++--- gcc/testsuite/g++.dg/pr104648.C | 9 +++++++++ 2 files changed, 12 insertions(+), 3 deletions(-) create mode 100644 gcc/testsuite/g++.dg/pr104648.C (limited to 'gcc') diff --git a/gcc/main.cc b/gcc/main.cc index f9dd6b2..4ba28b7 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 0000000..b8b7c28 --- /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" } */ +}; -- cgit v1.1