annotate gcc/testsuite/g++.dg/warn/Wstringop-truncation-2.C @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
131
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
1 // PR tree-optimization/84468 - bogus -Wstringop-truncation despite
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
2 // assignment after conditional strncpy
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
3 // Compile with -g to verify the warning deals properly with debug
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
4 // statements.
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
5 // { dg-do compile }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
6 // { dg-options "-O2 -Wstringop-truncation -g" }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
7
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
8 extern "C" char* strncpy (char*, const char*, __SIZE_TYPE__);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
9
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
10 char d[3];
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
11
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
12 void g ();
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
13
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
14 void fnowarn1 (const char *s)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
15 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
16 // Update dummy but never actually use it so it's eliminated
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
17 // but causes debugging statements to be emitted for each
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
18 // modification.
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
19 int dummy = 0;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
20
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
21 try
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
22 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
23 g ();
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
24 strncpy (d, s, sizeof d); // { dg-bogus "\\\[-Wstringop-truncation]" }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
25 ++dummy;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
26 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
27 catch (...)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
28 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
29 ++dummy;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
30 d[0] = 0;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
31 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
32
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
33 ++dummy;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
34 d[sizeof d - 1] = 0;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
35 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
36
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
37 void fnowarn2 (const char *s)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
38 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
39 int dummy = 0;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
40
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
41 try
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
42 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
43 g ();
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
44 strncpy (d, s, sizeof d);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
45 ++dummy;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
46 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
47 catch (...)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
48 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
49 ++dummy;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
50 return;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
51 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
52
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
53 ++dummy;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
54 d[sizeof d - 1] = 0;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
55 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
56
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
57 void fnowarn3 (const char *s)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
58 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
59 int dummy = 0;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
60
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
61 try
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
62 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
63 g ();
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
64 strncpy (d, s, sizeof d);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
65 ++dummy;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
66 try
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
67 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
68 ++dummy;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
69 d[sizeof d - 1] = 0;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
70 g ();
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
71 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
72 catch (...)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
73 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
74 ++dummy;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
75 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
76 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
77 catch (...)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
78 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
79 ++dummy;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
80 return;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
81 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
82
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
83 ++dummy;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
84 d[sizeof d - 1] = 0;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
85 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
86
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
87 void fnowarn4 (const char *s)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
88 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
89 int dummy = 0;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
90
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
91 try
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
92 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
93 g ();
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
94 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
95 catch (...)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
96 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
97 strncpy (d, s, sizeof d); // { dg-bogus "\\\[-Wstringop-truncation]" "bug 84468" { xfail *-*-*} }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
98 ++dummy;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
99 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
100
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
101 ++dummy;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
102 d[sizeof d - 1] = 0;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
103 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
104
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
105 void fwarn1 (const char *s)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
106 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
107 int dummy = 0;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
108
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
109 try
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
110 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
111 ++dummy;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
112 g ();
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
113 ++dummy;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
114 strncpy (d, s, sizeof d); // { dg-warning "\\\[-Wstringop-truncation]" }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
115 ++dummy;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
116 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
117 catch (...)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
118 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
119 ++dummy;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
120 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
121
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
122 ++dummy;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
123 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
124
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
125 void fwarn2 (const char *s)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
126 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
127 int dummy = 0;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
128
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
129 try
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
130 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
131 ++dummy;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
132 strncpy (d, s, sizeof d); // { dg-warning "\\\[-Wstringop-truncation]" }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
133 ++dummy;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
134 g ();
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
135 ++dummy;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
136 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
137 catch (...)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
138 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
139 ++dummy;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
140 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
141
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
142 ++dummy;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
143 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
144
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
145 void fwarn3 (const char *s)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
146 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
147 int dummy = 0;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
148
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
149 try
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
150 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
151 ++dummy;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
152 g ();
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
153 ++dummy;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
154 strncpy (d, s, sizeof d); // { dg-warning "\\\[-Wstringop-truncation]" }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
155 ++dummy;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
156 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
157 catch (...)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
158 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
159 ++dummy;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
160 d[0] = 0;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
161 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
162
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
163 ++dummy;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
164 }