Avoid shifting by amounts larger than target int in irange self-tests.
authorAldy Hernandez <aldyh@redhat.com>
Mon, 3 Aug 2020 16:30:30 +0000 (18:30 +0200)
committerAldy Hernandez <aldyh@redhat.com>
Mon, 3 Aug 2020 16:31:29 +0000 (18:31 +0200)
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.

gcc/range-op.cc

index c62e3977ce535e2acdae7a68058e773130170b5d..b7b708b488b71ea6e0c39771c96b934567c83209 100644 (file)
@@ -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.