Mercurial > hg > CbC > CbC_gcc
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 } |