aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAldy Hernandez <aldyh@redhat.com>2020-08-03 18:30:30 +0200
committerAldy Hernandez <aldyh@redhat.com>2020-08-03 18:31:29 +0200
commit6c4763fa5b55f6e883ed7077b67c6175c2da63d1 (patch)
treeda1e451e715ead7879a97741bfe461fde48c274a /gcc
parentc56684fd61223abd45854270cd1e83ab2f07148c (diff)
downloadgcc-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')
-rw-r--r--gcc/range-op.cc19
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.