1 /* PR tree-optimization/81346 */
2 /* { dg-do run { target int32plus } } */
3 /* { dg-options "-O2" } */
7 #define INT_MAX __INT_MAX__
8 #define INT_MIN (-__INT_MAX__ - 1)
10 extern void abort (void);
15 if (__CHAR_BIT__
!= 8 || __SIZEOF_INT__
!= 4)
17 #define TEST(fn1, fn2, v1, v2) \
19 int w1 = v1; int w2 = v2; \
20 int in = 1; if (w1 > w2) { in = w1; w1 = w2; w2 = in; in = 0; } \
21 if (w1 != INT_MIN) { if (fn1 (w1 - 1) != !in || fn2 (w1 - 1) != !in) abort (); } \
22 if (fn1 (w1) != in || fn2 (w1) != in) abort (); \
23 if (fn1 (w2) != in || fn2 (w2) != in) abort (); \
24 if (w2 != INT_MAX) { if (fn1 (w2 + 1) != !in || fn2 (w2 + 1) != !in) abort (); } \
26 TEST (f00
, f01
, -2147441939, INT_MAX
);
27 TEST (f02
, f03
, 2147441940, INT_MAX
);
28 TEST (f04
, f05
, INT_MIN
, 2147441939);
29 TEST (f06
, f07
, INT_MIN
, -2147441940);
30 TEST (f08
, f09
, INT_MIN
, -2147441940);
31 TEST (f10
, f11
, 2147441940, INT_MAX
);
32 TEST (f12
, f13
, -2147441939, INT_MAX
);
33 TEST (f14
, f15
, INT_MIN
, 2147441939);
34 TEST (f16
, f17
, -224, INT_MAX
);
35 TEST (f18
, f19
, 240, INT_MAX
);
36 TEST (f20
, f21
, -239, INT_MAX
);
37 TEST (f22
, f23
, 225, INT_MAX
);
38 TEST (f24
, f25
, INT_MIN
, -240);
39 TEST (f26
, f27
, INT_MIN
, 224);
40 TEST (f28
, f29
, INT_MIN
, -225);
41 TEST (f30
, f31
, INT_MIN
, 239);
42 TEST (f32
, f33
, -239, -225);
43 TEST (f34
, f35
, 225, 239);
44 TEST (f36
, f37
, -225, -239);
45 TEST (f38
, f39
, 239, 225);
46 TEST (f40
, f41
, INT_MIN
, 2147441939);
47 TEST (f42
, f43
, INT_MIN
, -2147441940);
48 TEST (f44
, f45
, -2147441939, INT_MAX
);
49 TEST (f46
, f47
, 2147441940, INT_MAX
);
50 TEST (f48
, f49
, INT_MIN
, -2147441940);
51 TEST (f50
, f51
, 2147441940, INT_MAX
);
52 TEST (f52
, f53
, -2147441939, INT_MAX
);
53 TEST (f54
, f55
, INT_MIN
, 2147441939);
54 TEST (f56
, f57
, INT_MIN
, -240);
55 TEST (f58
, f59
, INT_MIN
, 224);
56 TEST (f60
, f61
, INT_MIN
, -225);
57 TEST (f62
, f63
, INT_MIN
, 239);
58 TEST (f64
, f65
, -224, INT_MAX
);
59 TEST (f66
, f67
, 240, INT_MAX
);
60 TEST (f68
, f69
, -239, INT_MAX
);
61 TEST (f70
, f71
, 225, INT_MAX
);
62 TEST (f72
, f73
, -239, -225);
63 TEST (f74
, f75
, 225, 239);
64 TEST (f76
, f77
, -225, -239);
65 TEST (f78
, f79
, 239, 225);
66 TEST (f80
, f81
, INT_MIN
, -15);
67 TEST (f82
, f83
, 15, INT_MAX
);
68 TEST (f84
, f85
, INT_MIN
, 14);
69 TEST (f86
, f87
, -14, INT_MAX
);
70 TEST (f88
, f89
, 15, INT_MAX
);
71 TEST (f90
, f91
, INT_MIN
, -15);
72 TEST (f92
, f93
, -14, INT_MAX
);
73 TEST (f94
, f95
, INT_MIN
, 14);
74 TEST (f96
, f97
, -14, 14);
75 TEST (f98
, f99
, -14, 14);
76 TEST (f100
, f101
, 14, -14);
77 TEST (f102
, f103
, 14, -14);