diff options
author | Martin Liska <mliska@suse.cz> | 2022-02-28 11:58:01 +0100 |
---|---|---|
committer | Martin Liska <mliska@suse.cz> | 2022-02-28 13:58:41 +0100 |
commit | 1060d06b4df8836135ed15d020afbd3637dc625b (patch) | |
tree | 84d525726195996f7a1309527c83c5356ca00001 /gcc | |
parent | 800b3191c7506259a7452bde26b0b5ca3810c0cd (diff) | |
download | gcc-1060d06b4df8836135ed15d020afbd3637dc625b.zip gcc-1060d06b4df8836135ed15d020afbd3637dc625b.tar.gz gcc-1060d06b4df8836135ed15d020afbd3637dc625b.tar.bz2 |
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.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/main.cc | 6 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/pr104648.C | 9 |
2 files changed, 12 insertions, 3 deletions
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" } */ +}; |