131
|
1 /* PR sanitizer/81281 */
|
|
2 /* { dg-do compile } */
|
|
3 /* { dg-options "-O2 -fdump-tree-optimized" } */
|
|
4 /* { dg-final { scan-tree-dump-not "p_\[0-9]*\\(D\\)" "optimized" } } */
|
|
5
|
|
6 typedef __SIZE_TYPE__ size_t;
|
|
7 typedef __INTPTR_TYPE__ T;
|
|
8
|
|
9 T
|
|
10 f1 (char *p, size_t a, size_t b)
|
|
11 {
|
|
12 char *c = p + 1;
|
|
13 size_t d = a + 2;
|
|
14 size_t e = b + 3;
|
|
15 T f = (T) (p + a);
|
|
16 T g = (T) (p + b);
|
|
17 return f - g;
|
|
18 }
|
|
19
|
|
20 T
|
|
21 f2 (char *p, size_t a, size_t b)
|
|
22 {
|
|
23 size_t c = a + 1;
|
|
24 char *d = p + 2;
|
|
25 size_t e = b + 3;
|
|
26 T f = (T) (p + a);
|
|
27 T g = (T) (p + b);
|
|
28 return f - g;
|
|
29 }
|
|
30
|
|
31 T
|
|
32 f3 (char *p, size_t a, size_t b)
|
|
33 {
|
|
34 size_t c = b + 1;
|
|
35 char *d = p + 2;
|
|
36 size_t e = a + 3;
|
|
37 T f = (T) (p + a);
|
|
38 T g = (T) (p + b);
|
|
39 return f - g;
|
|
40 }
|
|
41
|
|
42 T
|
|
43 f4 (char *p, size_t a)
|
|
44 {
|
|
45 char *c = p + 1;
|
|
46 size_t d = a + 2;
|
|
47 T f = (T) (p + a);
|
|
48 T g = (T) p;
|
|
49 return f - g;
|
|
50 }
|
|
51
|
|
52 T
|
|
53 f5 (char *p, size_t a)
|
|
54 {
|
|
55 size_t c = a + 1;
|
|
56 char *d = p + 2;
|
|
57 T f = (T) (p + a);
|
|
58 T g = (T) p;
|
|
59 return f - g;
|
|
60 }
|
|
61
|
|
62 T
|
|
63 f6 (char *p, size_t a)
|
|
64 {
|
|
65 char *c = p + 1;
|
|
66 size_t d = a + 2;
|
|
67 T f = (T) p;
|
|
68 T g = (T) (p + a);
|
|
69 return f - g;
|
|
70 }
|
|
71
|
|
72 T
|
|
73 f7 (char *p, size_t a)
|
|
74 {
|
|
75 size_t c = a + 1;
|
|
76 char *d = p + 2;
|
|
77 T f = (T) p;
|
|
78 T g = (T) (p + a);
|
|
79 return f - g;
|
|
80 }
|