PR tree-optimization/81303
[official-gcc.git] / gcc / testsuite / gcc.dg / tree-ssa / vrp96.c
blobf225f221f1d4e086134535371803fc791fbd5261
1 /* PR tree-optimization/65170 */
2 /* { dg-do compile { target int128 } } */
3 /* { dg-options "-O2 -fdump-tree-vrp1" } */
5 typedef unsigned __int128 T;
6 extern void link_error (void);
7 extern void required_check (void);
10 foo (T b, T c)
12 T a;
13 b &= 0xffffffffffffffffULL;
14 c &= 0xffffffffffffffffULL;
15 if (b < 7 || c < 7)
16 return 0;
17 a = b * c;
18 if (a < 49 || a > (((T) 0xfffffffffffffffeULL << 64) | 1))
19 link_error ();
20 return a;
24 bar (T b, T c)
26 T a;
27 b &= 0xffffffffffffffffULL;
28 c &= 0xffffffffffffffffULL;
29 if (b < 7 || c < 7)
30 return 0;
31 a = b * c;
32 if (a == 49)
33 required_check ();
34 return a;
38 baz (T b, T c)
40 T a;
41 b &= 0xffffffffffffffffULL;
42 c &= 0xffffffffffffffffULL;
43 if (b < 7 || c < 7)
44 return 0;
45 a = b * c;
46 if (a == (((T) 0xfffffffffffffffeULL << 64) | 1))
47 required_check ();
48 return a;
51 /* { dg-final { scan-tree-dump-not "link_error" "vrp1" } } */
52 /* { dg-final { scan-tree-dump-times "required_check" 2 "vrp1" } } */