blob: 4912ee5506bd667fcafd89529bdffaceac379ed3 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
/* Test to verify that valid calls to common restrict-qualified built-in
functions declared with no prototype are checked for overlap, and that
invalid calls are ignored.
{ dg-do compile }
{ dg-options "-O2 -Wrestrict" } */
typedef __SIZE_TYPE__ size_t;
#if __cplusplus
extern "C" {
#define NO_PROTO ...
#else
#define NO_PROTO /* empty */
#endif
void* memcpy ();
char* strncpy ();
#if __cplusplus
} /* extern "C" */
#endif
void test_memcpy_warn (char *d)
{
memcpy (d, d + 2, 3); /* { dg-warning "accessing 3 bytes at offsets 0 and 2 overlaps 1 byte at offset 2" } */
}
void test_memcpy_nowarn (char *d)
{
memcpy (d, d + 2, "");
}
void test_strncpy_warn (char *d)
{
strncpy (d + 1, d + 3, 5); /* { dg-warning "accessing 5 bytes at offsets 1 and 3 overlaps 2 bytes at offset 3" } */
}
void test_strncpy_nowarn (char *d)
{
strncpy (d + 1, d + 3, "");
}
|