1 /* Verify that attribute returns_nonnull on global and local function
2 declarations is merged.
3 { dg-do compile }
4 { dg-options "-Wall -fdump-tree-optimized -fdelete-null-pointer-checks" } */
5
6 void foo (void);
7
8
9 void frnn_local_local (void)
10 {
11 __attribute__ ((returns_nonnull)) void* frnn1 (void);
12
13 if (!frnn1 ())
14 foo ();
15 }
16
17 void gnr_local_local (void)
18 {
19 void* frnn1 (void);
20
21 if (!frnn1 ())
22 foo ();
23 }
24
25 void frnn_local_global (void)
26 {
27 __attribute__ ((returns_nonnull)) void* frnn2 (void);
28
29 if (!frnn2 ())
30 foo ();
31 }
32
33 void* frnn2 (void);
34
35 void gnr_local_global (void)
36 {
37 if (!frnn2 ())
38 foo ();
39 }
40
41 __attribute__ ((returns_nonnull)) void* frnn3 (void);
42
43 void frnn_global_local (void)
44 {
45 if (!frnn3 ())
46 foo ();
47 }
48
49 void gnr_global_local (void)
50 {
51 void* frnn3 (void);
52
53 if (!frnn3 ())
54 foo ();
55 }
56
57
58 /* { dg-final { scan-tree-dump-not "foo" "optimized" } } */