diff options
author | Aldy Hernandez <aldyh@redhat.com> | 2020-08-03 18:30:30 +0200 |
---|---|---|
committer | Aldy Hernandez <aldyh@redhat.com> | 2020-08-03 18:31:29 +0200 |
commit | 6c4763fa5b55f6e883ed7077b67c6175c2da63d1 (patch) | |
tree | da1e451e715ead7879a97741bfe461fde48c274a /gcc/range-op.cc | |
parent | c56684fd61223abd45854270cd1e83ab2f07148c (diff) | |
download | gcc-6c4763fa5b55f6e883ed7077b67c6175c2da63d1.zip gcc-6c4763fa5b55f6e883ed7077b67c6175c2da63d1.tar.gz gcc-6c4763fa5b55f6e883ed7077b67c6175c2da63d1.tar.bz2 |
Avoid shifting by amounts larger than target int in irange self-tests.
gcc/ChangeLog:
PR tree-optimization/96430
* range-op.cc (operator_tests): Do not shift by 31 on targets with
integer's smaller than 32 bits.
Diffstat (limited to 'gcc/range-op.cc')
-rw-r--r-- | gcc/range-op.cc | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/gcc/range-op.cc b/gcc/range-op.cc index c62e397..b7b708b 100644 --- a/gcc/range-op.cc +++ b/gcc/range-op.cc @@ -3527,15 +3527,16 @@ operator_tests () } // signed: ~[-1] = OP1 >> 31 - { - widest_irange lhs (INT (-1), INT (-1), VR_ANTI_RANGE); - widest_irange shift (INT (31), INT (31)); - widest_irange op1; - op_rshift.op1_range (op1, integer_type_node, lhs, shift); - widest_irange negatives = range_negatives (integer_type_node); - negatives.intersect (op1); - ASSERT_TRUE (negatives.undefined_p ()); - } + if (TYPE_PRECISION (integer_type_node) > 31) + { + widest_irange lhs (INT (-1), INT (-1), VR_ANTI_RANGE); + widest_irange shift (INT (31), INT (31)); + widest_irange op1; + op_rshift.op1_range (op1, integer_type_node, lhs, shift); + widest_irange negatives = range_negatives (integer_type_node); + negatives.intersect (op1); + ASSERT_TRUE (negatives.undefined_p ()); + } } // Run all of the selftests within this file. |