1 // { dg-do compile }
2 // { dg-options "-foptimize-sibling-calls -fcompare-debug" }
3 
4 typedef union gimple_statement_d *gimple;
5 typedef gimple gimple_seq_node;
6 typedef struct {
7     gimple_seq_node ptr;
8     void *seq;
9     void *bb;
10 } gimple_stmt_iterator;
11 struct gimple_statement_base {
12     gimple next;
13 };
14 union gimple_statement_d {
15     struct gimple_statement_base gsbase;
16 };
gsi_start_1(gimple stmt)17 static inline gimple_stmt_iterator gsi_start_1 (gimple stmt)
18 {
19   gimple_stmt_iterator i;
20   i.ptr = stmt;
21   return i;
22 }
23 bool gimple_may_fallthru (gimple);
gimple_try_catch_may_fallthru(gimple stmt)24 static bool gimple_try_catch_may_fallthru (gimple stmt)
25 {
26   gimple_stmt_iterator i = gsi_start_1 (stmt);
27   for (; i.ptr; i.ptr = i.ptr->gsbase.next)
28     {
29       if (gimple_may_fallthru (i.ptr))
30 	return true;
31     }
32 }
gimple_stmt_may_fallthru(gimple stmt,bool x)33 bool gimple_stmt_may_fallthru (gimple stmt, bool x)
34 {
35   if (x)
36     return gimple_may_fallthru (stmt);
37   else
38     return gimple_try_catch_may_fallthru (stmt);
39 }
40