re PR c++/28250 (ICE with invalid catch)

PR c++/28250
	PR c++/28257
	PR c++/28259
	PR c++/28267
	* toplev.c (compile_file): Return early on errorcount or sorrycount.
	* cgraphunit.c (cgraph_finalize_compilation_unit): Likewise.
	(cgraph_optimize): Likewise.

	PR c++/28250
	* g++.dg/eh/catch4.C: New test.

	PR c++/28257
	* g++.dg/other/qual1.C: New test.

	PR c++/28259
	* g++.dg/inherit/error2.C: New test.

	PR c++/28267
	* g++.dg/other/new1.C: New test.

	* g++.dg/warn/pr23075.C: Remove obsolete test.
	* g++.old-deja/g++.brendan/crash52.C: Remove dg-warning marker.
	* g++.old-deja/g++.jason/report.C: Remove dg-warning marker.

From-SVN: r115866
This commit is contained in:
Volker Reichelt 2006-08-01 23:45:11 +00:00 committed by Volker Reichelt
parent d2b815074b
commit 413803d3d8
11 changed files with 87 additions and 10 deletions

View File

@ -1,3 +1,13 @@
2006-08-01 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
PR c++/28250
PR c++/28257
PR c++/28259
PR c++/28267
* toplev.c (compile_file): Return early on errorcount or sorrycount.
* cgraphunit.c (cgraph_finalize_compilation_unit): Likewise.
(cgraph_optimize): Likewise.
2006-08-01 Stuart Hastings <stuart@apple.com>
* rtl.h (UINTVAL) New.

View File

@ -1018,6 +1018,9 @@ cgraph_finalize_compilation_unit (void)
static struct cgraph_node *first_analyzed;
static struct cgraph_varpool_node *first_analyzed_var;
if (errorcount || sorrycount)
return;
finish_aliases_1 ();
if (!flag_unit_at_a_time)
@ -1466,6 +1469,9 @@ ipa_passes (void)
void
cgraph_optimize (void)
{
if (errorcount || sorrycount)
return;
#ifdef ENABLE_CHECKING
verify_cgraph ();
#endif

View File

@ -1,3 +1,21 @@
2006-08-01 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
PR c++/28250
* g++.dg/eh/catch4.C: New test.
PR c++/28257
* g++.dg/other/qual1.C: New test.
PR c++/28259
* g++.dg/inherit/error2.C: New test.
PR c++/28267
* g++.dg/other/new1.C: New test.
* g++.dg/warn/pr23075.C: Remove obsolete test.
* g++.old-deja/g++.brendan/crash52.C: Remove dg-warning marker.
* g++.old-deja/g++.jason/report.C: Remove dg-warning marker.
2006-07-31 Mark Mitchell <mark@codesourcery.com>
PR c++/28523

View File

@ -0,0 +1,8 @@
// PR c++/28250
// { dg-do compile }
void foo()
{
try { throw; }
catch () {} // { dg-error "type-specifier" }
}

View File

@ -0,0 +1,16 @@
// PR c++/28259
// { dg-do compile }
struct A
{
virtual A* foo();
};
struct B : virtual A; // { dg-error "before" }
struct C : A
{
virtual B* foo();
};
B* C::foo() { return 0; }

View File

@ -0,0 +1,14 @@
// PR c++/28267
// { dg-do compile }
struct A
{
A();
void* operator new(__SIZE_TYPE__, int = X); // { dg-error "not declared" }
void operator delete(void*, int);
};
void foo()
{
new A;
}

View File

@ -0,0 +1,11 @@
// PR c++/28257
// { dg-do compile }
struct A
{
int i;
void foo()
{
int A::i = i; // { dg-error "extra qualification|not a static member" }
}
};

View File

@ -7,8 +7,3 @@ foo (void)
{
return; // { dg-error "with no value" }
} // { dg-bogus "control reaches end" }
int
bar (void)
{
} // { dg-warning "control reaches end" }

View File

@ -10,5 +10,4 @@ public:
A &f(A &a) {// { dg-error "" } new decl.*
std::cout << "Blah\n";
} // { dg-warning "" } no return
}

View File

@ -56,7 +56,7 @@ bar2 baz (X::Y y) // { dg-error "" } in this context
bar2 wa [5];
wa[0] = baz(f);
undef2 (1); // { dg-error "" } implicit declaration
} // { dg-warning "" } no return
}
int ninny ()
{
@ -71,4 +71,4 @@ int ninny ()
int darg (char X::*p)
{
undef3 (1); // { dg-error "" } implicit declaration
} // { dg-warning "" } no return
}

View File

@ -1006,7 +1006,7 @@ compile_file (void)
what's left of the symbol table output. */
timevar_pop (TV_PARSE);
if (flag_syntax_only)
if (flag_syntax_only || errorcount || sorrycount)
return;
lang_hooks.decls.final_write_globals ();