43 lines
726 B
C
43 lines
726 B
C
// 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 <typename T>
|
|
void f3() {
|
|
if (false)
|
|
throw 3;
|
|
}
|
|
|
|
inline void f4() {
|
|
if (false)
|
|
throw 7;
|
|
}
|
|
|
|
int main () {
|
|
try {
|
|
f1();
|
|
f2();
|
|
f3<int>();
|
|
f4();
|
|
} catch (...) {
|
|
/* The compiler should recognize that none of the functions above
|
|
can throw exceptions, and therefore remove this code as
|
|
unreachable. */
|
|
undefined ();
|
|
}
|
|
}
|