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 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140
|
/* PR tree-optimization/69097 */
/* { dg-do compile } */
/* { dg-options "-O2 -fdump-tree-optimized" } */
/* All the x % -y below should be optimized into x % y, as
it should never be INT_MIN % -(-1). */
/* { dg-final { scan-tree-dump-not "-y" "optimized" } } */
int
f1 (int x, int y)
{
if (x == -__INT_MAX__ - 1)
__builtin_unreachable ();
return x % -y;
}
int
f2 (int x, int y)
{
if (x < -__INT_MAX__)
__builtin_unreachable ();
return x % -y;
}
int
f3 (int x, int y)
{
if (y == -1)
__builtin_unreachable ();
return x % -y;
}
int
f4 (int x, int y)
{
if (y < 0)
__builtin_unreachable ();
return x % -y;
}
int
f5 (int x, int y)
{
if (y >= -1)
__builtin_unreachable ();
return x % -y;
}
int
f6 (int x, int y)
{
if (y < 0 || y > 24)
__builtin_unreachable ();
return x % -y;
}
int
f7 (int x, int y)
{
if (y <= -17 || y >= -1)
__builtin_unreachable ();
return x % -y;
}
int
f8 (int x, int y)
{
if (y >= -13 && y <= 15)
__builtin_unreachable ();
return x % -y;
}
int
f9 (int x, int y)
{
return x % -(y & ~4);
}
int
f10 (int x, int y)
{
if (x != -__INT_MAX__ - 1)
return x % -y;
return 34;
}
int
f11 (int x, int y)
{
if (x >= -__INT_MAX__)
return x % -y;
return 34;
}
int
f12 (int x, int y)
{
if (y != -1)
return x % -y;
return 34;
}
int
f13 (int x, int y)
{
if (y >= 0)
return x % -y;
return 34;
}
int
f14 (int x, int y)
{
if (y < -1)
return x % -y;
return 34;
}
int
f15 (int x, int y)
{
if (y >= 0 && y <= 24)
return x % -y;
return 34;
}
int
f16 (int x, int y)
{
if (y > -17 && y < -1)
return x % -y;
return 34;
}
int
f17 (int x, int y)
{
if (y < -13 || y > 15)
return x % -y;
return 34;
}
|