1// { dg-do assemble  }
2// Test that we notice unfortunate handler ordering.
3
4struct A { };
5struct B: public A { };
6struct C: private A { };
7
8void f();
9void g()
10{
11  try { f(); }
12  catch (...) { }		// { dg-error "" } ... followed by others
13  catch (A*) { }
14
15  try { f(); }
16  catch (A*) { }		// { dg-warning "" } A* before B*
17  catch (B*) { }		// { dg-warning "" } A* before B*
18
19  try { f(); }
20  catch (A*) { }
21  catch (C*) { }		// no warning; A is private base
22}
23