annotate gcc/testsuite/gcc.dg/Wstringop-overflow-24.c @ 145:1830386684a0

gcc-9.2.0
author anatofuz
date Thu, 13 Feb 2020 11:34:05 +0900
parents
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 middle-end/83859 - attribute to establish relation between parameters
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
2 for buffer and its size
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
3 Test to verify that -Wstringop-overflow warnings are issued even with
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
4 no optimization for calls to user-defined functions with attribute
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
5 access and with constant out-of-bounds arguments.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
6 { dg-do compile }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
7 { dg-options "-O0 -Wall" } */
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
8
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
9 #define INT_MAX __INT_MAX__
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
10 #define INT_MIN (-INT_MAX - 1)
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
11
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
12 #define rdonly __attribute__ ((access (read_only)))
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
13 #define RDONLY(...) __attribute__ ((access (read_only, __VA_ARGS__)))
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
14 #define WRONLY(...) __attribute__ ((access (write_only, __VA_ARGS__)))
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
15 #define RDWR(...) __attribute__ ((access (read_write, __VA_ARGS__)))
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
16
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
17 typedef __INT32_TYPE__ int32_t;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
18
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
19 extern const char s1[1], s2[2], s3[3];
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
20 extern char d1[1], d2[2], d3[3];
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
21
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
22 /* Exercise that null pointers are allowed in functions declared with
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
23 the attribute without a size operand. */
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
24
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
25 RDONLY (1) void
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
26 rd1_int (const int32_t*); // { dg-message "in a call to function 'rd1_int' declared with attribute 'read_only \\\(1\\\)'" }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
27
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
28 void test_rd1_int (void)
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
29 {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
30 rd1_int (0);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
31
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
32 int32_t i = 0;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
33 rd1_int (&i);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
34
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
35 rd1_int ((int32_t*)s1); // { dg-warning "reading 4 bytes from a region of size 1" }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
36 }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
37
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
38 /* Exercise null pointer detection in functions declared with
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
39 the attribute and with non-zero size. */
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
40
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
41 RDONLY (2, 1) void
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
42 rd2_1 (int, const void*); // { dg-message "in a call to function 'rd2_1' declared with attribute 'read_only \\\(2, 1\\\)" }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
43
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
44 void test_rd2_1 (void)
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
45 {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
46 rd2_1 (0, 0);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
47 rd2_1 (1, "");
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
48 rd2_1 (1, 0); // { dg-warning "argument 2 is null but the corresponding size argument 1 value is 1" }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
49 }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
50
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
51 WRONLY (3, 1) void
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
52 wr3_1 (int, int, void*); // { dg-message "in a call to function 'wr3_1' declared with attribute 'write_only \\\(3, 1\\\)" }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
53
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
54 void test_wr3_1 (void)
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
55 {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
56 wr3_1 (0, 0, 0);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
57 wr3_1 (1, 0, d1);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
58 wr3_1 (2, 1, 0); // { dg-warning "argument 3 is null but the corresponding size argument 1 value is 2" }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
59 }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
60
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
61
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
62 /* Exercise pointer to an incomplete type other than void. */
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
63
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
64 struct Incomplete;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
65 extern struct Incomplete inc;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
66
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
67 RDONLY (1) void
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
68 rd_inc (const struct Incomplete*);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
69
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
70 void test_rd_inc (const struct Incomplete *pinc)
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
71 {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
72 rd_inc (0);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
73
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
74 rd_inc (pinc);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
75 rd_inc ((const struct Incomplete*)s1);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
76
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
77 rd_inc ((const struct Incomplete*)&s1[1]);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
78 // { dg-warning "'rd_inc' reading 1 byte from a region of size 0" "past-the-end pointer" { target *-*-* } .-1 }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
79 }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
80
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
81 RDONLY (1, 2) void
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
82 rd1_2_inc (const struct Incomplete*, unsigned);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
83
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
84 void test_rd1_2_inc (const struct Incomplete *pinc)
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
85 {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
86 rd1_2_inc (0, 0);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
87 rd1_2_inc (0, 1); // { dg-warning "argument 1 is null but the corresponding size argument 2 value is 1" }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
88
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
89 rd1_2_inc (pinc, 1);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
90 rd1_2_inc (&inc, 1);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
91
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
92 rd1_2_inc (pinc, 123);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
93 rd1_2_inc (&inc, 456);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
94
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
95 rd1_2_inc ((const struct Incomplete*)s3, 4);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
96 // { dg-warning "'rd1_2_inc' reading 4 bytes from a region of size 3" "small buffer cast to incomplete" { target *-*-* } .-1 }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
97 }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
98
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
99
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
100 /* Verify the handling of two attributes sharing the same size operand . */
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
101
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
102 RDONLY (1, 3) WRONLY (2, 3) void
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
103 rd1_3_wr2_3 (const void*, void*, int);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
104
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
105 void test_rd1_3_wr2_3 (void)
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
106 {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
107 rd1_3_wr2_3 (s1, d1, 0);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
108 rd1_3_wr2_3 (s1, d1, 1);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
109
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
110 rd1_3_wr2_3 (s1, d1, 2);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
111 // { dg-warning "'rd1_3_wr2_3' reading 2 bytes from a region of size 1" "read" { target *-*-* } .-1 }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
112 // { dg-warning "'rd1_3_wr2_3' writing 2 bytes into a region of size 1" "write" { target *-*-* } .-2 }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
113
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
114 rd1_3_wr2_3 (s1, d2, 2);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
115 // { dg-warning "'rd1_3_wr2_3' reading 2 bytes from a region of size 1" "read" { target *-*-* } .-1 }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
116
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
117 rd1_3_wr2_3 (s2, d1, 2);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
118 // { dg-warning "'rd1_3_wr2_3' writing 2 bytes into a region of size 1" "write" { target *-*-* } .-1 }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
119 }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
120
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
121
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
122 /* Verify the handling of multiple attributes of the same kind with
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
123 out-of-order operands. */
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
124
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
125 RDONLY (1, 6) RDONLY (2, 5) RDONLY (3, 4) void
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
126 rd1_6_2_5_3_4 (const void *s1, const void *s2, const void *s3,
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
127 int n3, int n2, int n1);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
128
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
129 void test_rd1_6_2_5_3_4 (void)
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
130 {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
131 rd1_6_2_5_3_4 (s1, s2, s3, 4, 2, 1); // { dg-warning "reading 4 bytes from a region of size 3" }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
132 rd1_6_2_5_3_4 (s1, s2, s3, 3, 5, 1); // { dg-warning "reading 5 bytes from a region of size 2" }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
133 rd1_6_2_5_3_4 (s1, s2, s3, 3, 2, 6); // { dg-warning "reading 6 bytes from a region of size 1" }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
134 }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
135
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
136
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
137 /* Verify the handling of multiple attributes of different kinds with
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
138 out-of-order operands. */
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
139
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
140 RDONLY (1, 6) WRONLY (2, 5) RDONLY (3, 4) void
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
141 rd1_6_wr2_5_rd3_4 (const void *s1, void *d2, const void *s3,
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
142 int n3, int n2, int n1);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
143
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
144 void test_rd1_6_wr2_5_rd3_4 (void)
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
145 {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
146 rd1_6_wr2_5_rd3_4 (s1, d2, s3, 7, 2, 1); // { dg-warning "reading 7 bytes from a region of size 3" }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
147 rd1_6_wr2_5_rd3_4 (s1, d2, s3, 3, 8, 1); // { dg-warning "writing 8 bytes into a region of size 2" }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
148 rd1_6_wr2_5_rd3_4 (s1, d2, s3, 3, 2, 9); // { dg-warning "reading 9 bytes from a region of size 1" }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
149 }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
150
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
151
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
152 RDONLY (6, 1) WRONLY (5, 2) RDWR (4, 3) void
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
153 rd6_1_wr5_2_rd4_3 (int n1, int n2, int n3,
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
154 void *d3, void *d2, const void *s1);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
155
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
156 void test_rd6_1_wr5_2_rd4_3 (void)
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
157 {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
158 rd6_1_wr5_2_rd4_3 (7, 2, 1, d1, d2, s3); // { dg-warning "reading 7 bytes from a region of size 3" }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
159 rd6_1_wr5_2_rd4_3 (3, 8, 1, d1, d2, s3); // { dg-warning "writing 8 bytes into a region of size 2" }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
160 rd6_1_wr5_2_rd4_3 (3, 2, 9, d1, d2, s3); // { dg-warning "writing 9 bytes into a region of size 1" }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
161 }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
162
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
163
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
164 RDONLY (1, 3) WRONLY (2, 4) void
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
165 rd1_3_wr2_4 (const void*, void*, int, int);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
166
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
167 void test_rd1_3_wr2_4 (const void *s, void *d, int n1, int n2)
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
168 {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
169 rd1_3_wr2_4 (s, d, 1, 2);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
170 rd1_3_wr2_4 (s, d, 123, 456);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
171 rd1_3_wr2_4 (s, d, INT_MAX, INT_MAX);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
172 rd1_3_wr2_4 (s, d, -1, 2); // { dg-warning "argument 3 value -1 is negative" }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
173
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
174 const char s11[11] = "0123456789";
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
175
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
176 rd1_3_wr2_4 (s11, d, 11, n2);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
177 rd1_3_wr2_4 (s11, d, 12, n2); // { dg-warning "'rd1_3_wr2_4' reading 12 bytes from a region of size 11" }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
178 }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
179
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
180
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
181 /* Verify that function pointers are handled. */
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
182
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
183 RDONLY (1) void (*pfrd1)(const void*, const void*);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
184
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
185 void test_pfrd1 (void)
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
186 {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
187 pfrd1 (0, 0);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
188 pfrd1 ("", "");
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
189
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
190 pfrd1 ("", "" + 1);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
191 pfrd1 ("" + 1, ""); // { dg-warning "reading 1 byte from a region of size 0" }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
192 }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
193
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
194
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
195 WRONLY (4, 3) void (*pfwr4_3)(int, const char*, int, int32_t*);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
196
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
197 void test_pfwr4_3 (void)
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
198 {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
199 pfwr4_3 (0, 0, 0, 0);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
200
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
201 int32_t i;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
202 pfwr4_3 (3, "", 0, &i + 1);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
203 pfwr4_3 (5, "", 1, &i + 1); // { dg-warning "writing 4 bytes into a region of size 0" }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
204 }