Mercurial > hg > CbC > CbC_gcc
comparison 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 |
comparison
equal
deleted
inserted
replaced
68:561a7518be6b | 111:04ced10e8804 |
---|---|
1 /* PR c/78673 - sprintf missing attribute nonnull on destination argument | |
2 Test to verify that calls to user-defined functions declared with | |
3 the "nonnull" function attribute are diagnosed. */ | |
4 /* { dg-do compile } */ | |
5 /* { dg-options "-O2 -Wnonnull" } */ | |
6 | |
7 #define N(...) __attribute__ ((nonnull (__VA_ARGS__))) | |
8 | |
9 void N (1) f1_1 (void*); | |
10 | |
11 void N (1) f2_1 (void*, void*); | |
12 void N (1) N (2) f2_1_2 (void*, void*); | |
13 | |
14 void N (1) N (3) f3_1_3 (void*, void*, void*); | |
15 | |
16 void N (1, 2) N (4) g4_1_2_4 (void*, void*, void*, void*); | |
17 void N (1, 3) N (4) g4_1_3_4 (void*, void*, void*, void*); | |
18 void N (2, 3, 4) g4_2_3_4 (void*, void*, void*, void*); | |
19 | |
20 void N () g4_all (void*, void*, void*, void*); | |
21 | |
22 void N (1, 3, 5, 7, 11, 13) | |
23 g16_1_3_5_7_11_13 (void*, void*, void*, void*, | |
24 void*, void*, void*, void*, | |
25 void*, void*, void*, void*, | |
26 void*, void*, void*, void*); | |
27 | |
28 void* null (void) { return 0; } | |
29 | |
30 void test (void) | |
31 { | |
32 void *p0 = null (); | |
33 void *px = &px; | |
34 | |
35 f1_1 (p0); /* { dg-warning "argument 1 null where non-null expected " } */ | |
36 f1_1 (px); | |
37 | |
38 f2_1 (p0, px); /* { dg-warning "argument 1 null" } */ | |
39 f2_1 (px, p0); | |
40 f2_1 (p0, p0); /* { dg-warning "argument 1 null" } */ | |
41 | |
42 f2_1_2 (p0, px); /* { dg-warning "argument 1 null" } */ | |
43 f2_1_2 (px, p0); /* { dg-warning "argument 2 null" } */ | |
44 f2_1_2 (p0, p0); /* { dg-warning "argument 1 null" } */ | |
45 /* { dg-warning "argument 2 null" "argument 2" { target *-*-* } .-1 } */ | |
46 | |
47 f3_1_3 (p0, px, px); /* { dg-warning "argument 1 null" } */ | |
48 f3_1_3 (px, p0, px); | |
49 f3_1_3 (px, px, p0); /* { dg-warning "argument 3 null" } */ | |
50 f3_1_3 (p0, p0, px); /* { dg-warning "argument 1 null" } */ | |
51 f3_1_3 (px, p0, p0); /* { dg-warning "argument 3 null" } */ | |
52 f3_1_3 (p0, p0, p0); /* { dg-warning "argument 1 null" } */ | |
53 /* { dg-warning "argument 3 null" "argument 3" { target *-*-* } .-1 } */ | |
54 | |
55 g4_1_2_4 (p0, px, px, px); /* { dg-warning "argument 1 null" } */ | |
56 g4_1_2_4 (px, p0, px, px); /* { dg-warning "argument 2 null" } */ | |
57 g4_1_2_4 (px, px, p0, px); | |
58 g4_1_2_4 (px, px, px, p0); /* { dg-warning "argument 4 null" } */ | |
59 | |
60 g4_1_3_4 (p0, px, px, px); /* { dg-warning "argument 1 null" } */ | |
61 g4_1_3_4 (px, p0, px, px); | |
62 g4_1_3_4 (px, px, p0, px); /* { dg-warning "argument 3 null" } */ | |
63 g4_1_3_4 (px, px, px, p0); /* { dg-warning "argument 4 null" } */ | |
64 | |
65 g4_2_3_4 (p0, px, px, px); | |
66 g4_2_3_4 (px, p0, px, px); /* { dg-warning "argument 2 null" } */ | |
67 g4_2_3_4 (px, px, p0, px); /* { dg-warning "argument 3 null" } */ | |
68 g4_2_3_4 (px, px, px, p0); /* { dg-warning "argument 4 null" } */ | |
69 | |
70 g4_all (p0, px, px, px); /* { dg-warning "argument 1 null" } */ | |
71 g4_all (px, p0, px, px); /* { dg-warning "argument 2 null" } */ | |
72 g4_all (px, px, p0, px); /* { dg-warning "argument 3 null" } */ | |
73 g4_all (px, px, px, p0); /* { dg-warning "argument 4 null" } */ | |
74 | |
75 g16_1_3_5_7_11_13 (px, px, px, px, px, px, px, px, | |
76 px, px, px, px, px, px, px, px); | |
77 | |
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" } */ | |
79 } |