// PR target/29487 // { dg-do link } // { dg-options "-O2" } /* This function is not defined. The compiler should optimize away all calls to it. */ extern void undefined () throw (); extern void f1(); inline void f2() { f1(); } /* This function will be COMDAT if not inlined. */ inline void f1() {} /* This function will be COMDAT. */ template void f3() { if (false) throw 3; } inline void f4() { if (false) throw 7; } int main () { try { f1(); f2(); f3(); f4(); } catch (...) { /* The compiler should recognize that none of the functions above can throw exceptions, and therefore remove this code as unreachable. */ undefined (); } }