Mercurial > hg > CbC > CbC_gcc
comparison gcc/testsuite/gcc.dg/Wrestrict-6.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/83640 - ice in generic_overlap, at | |
2 gimple-ssa-warn-restrict.c:814 | |
3 Test to verify that a pointer offset range whose upper bound is less | |
4 than its lower bound (when interpreted as a signed integer) is handled | |
5 correctly. | |
6 { dg-do compile } | |
7 { dg-options "-O2 -Wrestrict" } */ | |
8 | |
9 #include "range.h" | |
10 | |
11 extern char* strcpy (char*, const char*); | |
12 extern char* stpcpy (char*, const char*); | |
13 | |
14 void sink (void*); | |
15 | |
16 void warn_2_smax_p2 (void) | |
17 { | |
18 char a[7] = "01234"; | |
19 | |
20 char *d = a; | |
21 | |
22 ptrdiff_t i = UR (2, DIFF_MAX + (size_t)2); | |
23 | |
24 strcpy (d, d + i); /* { dg-warning "accessing between 0 and 4 bytes at offsets 0 and \\\[2, 7] may overlap up to 2 bytes at offset 2" } */ | |
25 | |
26 sink (d); | |
27 } | |
28 | |
29 void nowarn_3_smax_p2 (void) | |
30 { | |
31 char a[7] = "12345"; | |
32 | |
33 char *d = a; | |
34 | |
35 ptrdiff_t i = UR (3, DIFF_MAX + (size_t)2); | |
36 | |
37 strcpy (d, d + i); | |
38 | |
39 sink (d); | |
40 } | |
41 | |
42 void warn_2u_smax_p2 (void) | |
43 { | |
44 char a[7] = "23456"; | |
45 | |
46 char *d = a; | |
47 | |
48 size_t i = UR (2, DIFF_MAX + (size_t)2); | |
49 | |
50 strcpy (d, d + i); /* { dg-warning "accessing between 0 and 4 bytes at offsets 0 and \\\[2, 7] may overlap up to 2 bytes at offset 2" } */ | |
51 | |
52 sink (d); | |
53 } | |
54 | |
55 void nowarn_3u_smax_p2 (void) | |
56 { | |
57 char a[7] = "34567"; | |
58 | |
59 char *d = a; | |
60 | |
61 size_t i = UR (3, DIFF_MAX + (size_t)2); | |
62 | |
63 strcpy (d, d + i); | |
64 | |
65 sink (d); | |
66 } |