re PR tree-optimization/59358 (Infinite loop generated with >=O2)
PR tree-optimization/59358 * tree-vrp.c (union_ranges): To check for the partially overlapping ranges or adjacent ranges, also compare *vr0max with vr1max. * gcc.c-torture/execute/pr59358.c: New test. From-SVN: r205607
This commit is contained in:
parent
165b9e9352
commit
5ef0de9b1f
|
@ -1,4 +1,11 @@
|
|||
2013-12-02 Sterling Augustine <saugustine@google.com>
|
||||
2013-12-02 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR tree-optimization/59358
|
||||
* tree-vrp.c (union_ranges): To check for the partially
|
||||
overlapping ranges or adjacent ranges, also compare *vr0max
|
||||
with vr1max.
|
||||
|
||||
2013-12-02 Sterling Augustine <saugustine@google.com>
|
||||
|
||||
* dwarf2out.c (output_pubnames): Use comp_unit_die ()->die_offset
|
||||
when there isn't a skeleton die.
|
||||
|
|
|
@ -1,5 +1,8 @@
|
|||
2013-12-02 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR tree-optimization/59358
|
||||
* gcc.c-torture/execute/pr59358.c: New test.
|
||||
|
||||
PR lto/59326
|
||||
* gcc.target/i386/i386.exp (check_effective_target_avx2): Move to...
|
||||
* lib/target-supports.exp (check_effective_target_avx2): ... here.
|
||||
|
|
|
@ -0,0 +1,44 @@
|
|||
/* PR tree-optimization/59358 */
|
||||
|
||||
__attribute__((noinline, noclone)) int
|
||||
foo (int *x, int y)
|
||||
{
|
||||
int z = *x;
|
||||
if (y > z && y <= 16)
|
||||
while (y > z)
|
||||
z *= 2;
|
||||
return z;
|
||||
}
|
||||
|
||||
int
|
||||
main ()
|
||||
{
|
||||
int i;
|
||||
for (i = 1; i < 17; i++)
|
||||
{
|
||||
int j = foo (&i, 16);
|
||||
int k;
|
||||
if (i >= 8 && i <= 15)
|
||||
k = 16 + (i - 8) * 2;
|
||||
else if (i >= 4 && i <= 7)
|
||||
k = 16 + (i - 4) * 4;
|
||||
else if (i == 3)
|
||||
k = 24;
|
||||
else
|
||||
k = 16;
|
||||
if (j != k)
|
||||
__builtin_abort ();
|
||||
j = foo (&i, 7);
|
||||
if (i >= 7)
|
||||
k = i;
|
||||
else if (i >= 4)
|
||||
k = 8 + (i - 4) * 2;
|
||||
else if (i == 3)
|
||||
k = 12;
|
||||
else
|
||||
k = 8;
|
||||
if (j != k)
|
||||
__builtin_abort ();
|
||||
}
|
||||
return 0;
|
||||
}
|
|
@ -7758,7 +7758,8 @@ union_ranges (enum value_range_type *vr0type,
|
|||
}
|
||||
else if ((operand_less_p (vr1min, *vr0max) == 1
|
||||
|| operand_equal_p (vr1min, *vr0max, 0))
|
||||
&& operand_less_p (*vr0min, vr1min) == 1)
|
||||
&& operand_less_p (*vr0min, vr1min) == 1
|
||||
&& operand_less_p (*vr0max, vr1max) == 1)
|
||||
{
|
||||
/* [ ( ] ) or [ ]( ) */
|
||||
if (*vr0type == VR_RANGE
|
||||
|
@ -7792,7 +7793,8 @@ union_ranges (enum value_range_type *vr0type,
|
|||
}
|
||||
else if ((operand_less_p (*vr0min, vr1max) == 1
|
||||
|| operand_equal_p (*vr0min, vr1max, 0))
|
||||
&& operand_less_p (vr1min, *vr0min) == 1)
|
||||
&& operand_less_p (vr1min, *vr0min) == 1
|
||||
&& operand_less_p (vr1max, *vr0max) == 1)
|
||||
{
|
||||
/* ( [ ) ] or ( )[ ] */
|
||||
if (*vr0type == VR_RANGE
|
||||
|
|
Loading…
Reference in New Issue