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