annotate gcc/testsuite/gcc.dg/warn-sprintf-no-nul-2.c @ 152:2b5abeee2509

update gcc11
author anatofuz
date Mon, 25 May 2020 07:50:57 +0900
parents 1830386684a0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
145
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
1 /* PR tree-optimization/87756 - missing unterminated argument warning
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
2 using address of a constant character
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
3 { dg-do compile }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
4 { dg-options "-O2 -Wall -ftrack-macro-expansion=0" } */
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
5
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
6 int sprintf (char*, const char*, ...);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
7
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
8 extern char* dest (void);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
9 extern void sink (int, ...);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
10
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
11 #define D dest ()
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
12 #define T(expr) sink (0, (expr))
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
13
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
14
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
15 const char cnul = '\0';
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
16 const char cnonul = 'a';
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
17 const char str3[] = "123";
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
18
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
19 const struct
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
20 {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
21 char a, b, s[3];
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
22 } s1 = { '\0', 'b', "123" },
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
23 s2[2] = {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
24 { '\0', 'c', "12" },
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
25 { 'd', '\0', "123" }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
26 };
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
27
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
28 void test_sprintf_s (void)
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
29 {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
30 T (sprintf (D, "%s", &cnul));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
31 T (sprintf (D, "%s", &cnonul)); /* { dg-warning "nul-terminated" } */
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
32 T (sprintf (D, "%.1s", &cnonul));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
33 T (sprintf (D, "%.2s", &cnonul)); /* { dg-warning "nul-terminated" } */
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
34
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
35 T (sprintf (D, "%s", &s1.a));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
36 T (sprintf (D, "%s", &s1.b)); /* { dg-warning "nul-terminated" } */
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
37 T (sprintf (D, "%.1s", &s1.b));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
38 T (sprintf (D, "%.2s", &s1.b)); /* { dg-warning "nul-terminated" } */
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
39 T (sprintf (D, "%s", s1.s)); /* { dg-warning "nul-terminated" } */
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
40 T (sprintf (D, "%.3s", s1.s));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
41 T (sprintf (D, "%.4s", s1.s)); /* { dg-warning "nul-terminated" } */
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
42
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
43 T (sprintf (D, "%.2s", s1.s + 1));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
44 T (sprintf (D, "%.3s", s1.s + 1)); /* { dg-warning "nul-terminated" } */
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
45
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
46 T (sprintf (D, "%s", &s2[0].a));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
47 T (sprintf (D, "%s", &s2[0].b)); /* { dg-warning "nul-terminated" } */
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
48 T (sprintf (D, "%.1s", &s2[0].b));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
49 T (sprintf (D, "%.2s", &s2[0].b)); /* { dg-warning "nul-terminated" } */
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
50 T (sprintf (D, "%s", s2[0].s));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
51 T (sprintf (D, "%.3s", s2[0].s));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
52 T (sprintf (D, "%.4s", s2[0].s));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
53
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
54 T (sprintf (D, "%.2s", s2[0].s + 1));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
55 T (sprintf (D, "%.3s", s2[0].s + 1));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
56
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
57 T (sprintf (D, "%s", &s2[1].a)); /* { dg-warning "nul-terminated" } */
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
58 T (sprintf (D, "%.1s", &s2[1].a));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
59 T (sprintf (D, "%.2s", &s2[1].a)); /* { dg-warning "nul-terminated" } */
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
60 T (sprintf (D, "%s", &s2[1].b));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
61 T (sprintf (D, "%s", s2[1].s)); /* { dg-warning "nul-terminated" } */
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
62 T (sprintf (D, "%.3s", s2[1].s));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
63 T (sprintf (D, "%.4s", s2[1].s)); /* { dg-warning "nul-terminated" } */
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
64
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
65 T (sprintf (D, "%.2s", s2[1].s + 1));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
66 T (sprintf (D, "%.3s", s2[1].s + 1)); /* { dg-warning "nul-terminated" } */
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
67
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
68 T (sprintf (D, "%s", &str3[3]));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
69 T (sprintf (D, "%s", &str3[4])); /* { dg-warning "\\\[-Warray-bounds" } */
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
70 }