annotate gcc/testsuite/gcc.dg/nonnull-4.c @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents
children 84e7813d76e9
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 /* PR c/78673 - sprintf missing attribute nonnull on destination argument
kono
parents:
diff changeset
2 Test to verify that calls to user-defined functions declared with
kono
parents:
diff changeset
3 the "nonnull" function attribute are diagnosed. */
kono
parents:
diff changeset
4 /* { dg-do compile } */
kono
parents:
diff changeset
5 /* { dg-options "-O2 -Wnonnull" } */
kono
parents:
diff changeset
6
kono
parents:
diff changeset
7 #define N(...) __attribute__ ((nonnull (__VA_ARGS__)))
kono
parents:
diff changeset
8
kono
parents:
diff changeset
9 void N (1) f1_1 (void*);
kono
parents:
diff changeset
10
kono
parents:
diff changeset
11 void N (1) f2_1 (void*, void*);
kono
parents:
diff changeset
12 void N (1) N (2) f2_1_2 (void*, void*);
kono
parents:
diff changeset
13
kono
parents:
diff changeset
14 void N (1) N (3) f3_1_3 (void*, void*, void*);
kono
parents:
diff changeset
15
kono
parents:
diff changeset
16 void N (1, 2) N (4) g4_1_2_4 (void*, void*, void*, void*);
kono
parents:
diff changeset
17 void N (1, 3) N (4) g4_1_3_4 (void*, void*, void*, void*);
kono
parents:
diff changeset
18 void N (2, 3, 4) g4_2_3_4 (void*, void*, void*, void*);
kono
parents:
diff changeset
19
kono
parents:
diff changeset
20 void N () g4_all (void*, void*, void*, void*);
kono
parents:
diff changeset
21
kono
parents:
diff changeset
22 void N (1, 3, 5, 7, 11, 13)
kono
parents:
diff changeset
23 g16_1_3_5_7_11_13 (void*, void*, void*, void*,
kono
parents:
diff changeset
24 void*, void*, void*, void*,
kono
parents:
diff changeset
25 void*, void*, void*, void*,
kono
parents:
diff changeset
26 void*, void*, void*, void*);
kono
parents:
diff changeset
27
kono
parents:
diff changeset
28 void* null (void) { return 0; }
kono
parents:
diff changeset
29
kono
parents:
diff changeset
30 void test (void)
kono
parents:
diff changeset
31 {
kono
parents:
diff changeset
32 void *p0 = null ();
kono
parents:
diff changeset
33 void *px = &px;
kono
parents:
diff changeset
34
kono
parents:
diff changeset
35 f1_1 (p0); /* { dg-warning "argument 1 null where non-null expected " } */
kono
parents:
diff changeset
36 f1_1 (px);
kono
parents:
diff changeset
37
kono
parents:
diff changeset
38 f2_1 (p0, px); /* { dg-warning "argument 1 null" } */
kono
parents:
diff changeset
39 f2_1 (px, p0);
kono
parents:
diff changeset
40 f2_1 (p0, p0); /* { dg-warning "argument 1 null" } */
kono
parents:
diff changeset
41
kono
parents:
diff changeset
42 f2_1_2 (p0, px); /* { dg-warning "argument 1 null" } */
kono
parents:
diff changeset
43 f2_1_2 (px, p0); /* { dg-warning "argument 2 null" } */
kono
parents:
diff changeset
44 f2_1_2 (p0, p0); /* { dg-warning "argument 1 null" } */
kono
parents:
diff changeset
45 /* { dg-warning "argument 2 null" "argument 2" { target *-*-* } .-1 } */
kono
parents:
diff changeset
46
kono
parents:
diff changeset
47 f3_1_3 (p0, px, px); /* { dg-warning "argument 1 null" } */
kono
parents:
diff changeset
48 f3_1_3 (px, p0, px);
kono
parents:
diff changeset
49 f3_1_3 (px, px, p0); /* { dg-warning "argument 3 null" } */
kono
parents:
diff changeset
50 f3_1_3 (p0, p0, px); /* { dg-warning "argument 1 null" } */
kono
parents:
diff changeset
51 f3_1_3 (px, p0, p0); /* { dg-warning "argument 3 null" } */
kono
parents:
diff changeset
52 f3_1_3 (p0, p0, p0); /* { dg-warning "argument 1 null" } */
kono
parents:
diff changeset
53 /* { dg-warning "argument 3 null" "argument 3" { target *-*-* } .-1 } */
kono
parents:
diff changeset
54
kono
parents:
diff changeset
55 g4_1_2_4 (p0, px, px, px); /* { dg-warning "argument 1 null" } */
kono
parents:
diff changeset
56 g4_1_2_4 (px, p0, px, px); /* { dg-warning "argument 2 null" } */
kono
parents:
diff changeset
57 g4_1_2_4 (px, px, p0, px);
kono
parents:
diff changeset
58 g4_1_2_4 (px, px, px, p0); /* { dg-warning "argument 4 null" } */
kono
parents:
diff changeset
59
kono
parents:
diff changeset
60 g4_1_3_4 (p0, px, px, px); /* { dg-warning "argument 1 null" } */
kono
parents:
diff changeset
61 g4_1_3_4 (px, p0, px, px);
kono
parents:
diff changeset
62 g4_1_3_4 (px, px, p0, px); /* { dg-warning "argument 3 null" } */
kono
parents:
diff changeset
63 g4_1_3_4 (px, px, px, p0); /* { dg-warning "argument 4 null" } */
kono
parents:
diff changeset
64
kono
parents:
diff changeset
65 g4_2_3_4 (p0, px, px, px);
kono
parents:
diff changeset
66 g4_2_3_4 (px, p0, px, px); /* { dg-warning "argument 2 null" } */
kono
parents:
diff changeset
67 g4_2_3_4 (px, px, p0, px); /* { dg-warning "argument 3 null" } */
kono
parents:
diff changeset
68 g4_2_3_4 (px, px, px, p0); /* { dg-warning "argument 4 null" } */
kono
parents:
diff changeset
69
kono
parents:
diff changeset
70 g4_all (p0, px, px, px); /* { dg-warning "argument 1 null" } */
kono
parents:
diff changeset
71 g4_all (px, p0, px, px); /* { dg-warning "argument 2 null" } */
kono
parents:
diff changeset
72 g4_all (px, px, p0, px); /* { dg-warning "argument 3 null" } */
kono
parents:
diff changeset
73 g4_all (px, px, px, p0); /* { dg-warning "argument 4 null" } */
kono
parents:
diff changeset
74
kono
parents:
diff changeset
75 g16_1_3_5_7_11_13 (px, px, px, px, px, px, px, px,
kono
parents:
diff changeset
76 px, px, px, px, px, px, px, px);
kono
parents:
diff changeset
77
kono
parents:
diff changeset
78 g16_1_3_5_7_11_13 (px, p0, px, p0, px, p0, px, p0, p0, p0, px, p0, p0, p0, p0, p0); /* { dg-warning "argument 13 null" } */
kono
parents:
diff changeset
79 }