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