1 // Verify that if explicit prototype for builtin is present without throw(),
2 // both the normal builtin and __builtin_* variant are expected to be
3 // able to throw exceptions.
4 // { dg-do compile }
5 // { dg-options "-fdump-tree-eh" }
6
7 extern "C" int printf (const char *, ...);
8
9 extern void callme (void) throw();
10
11 int
foo(int i)12 foo (int i)
13 {
14 try {
15 printf ("foo %d\n", i);
16 } catch (...) {
17 callme();
18 }
19 }
20
21 int
bar(int i)22 bar (int i)
23 {
24 try {
25 __builtin_printf ("foo %d\n", i);
26 } catch (...) {
27 callme();
28 }
29 }
30
31 /* { dg-final { scan-tree-dump-times "resx" 2 "eh" } } */
32 /* { dg-final { cleanup-tree-dump "eh" } } */
33