]> gcc.gnu.org Git - gcc.git/commitdiff
Add relational self-tests.
authorAndrew MacLeod <amacleod@redhat.com>
Thu, 17 Jun 2021 17:40:05 +0000 (13:40 -0400)
committerAndrew MacLeod <amacleod@redhat.com>
Tue, 22 Jun 2021 12:11:46 +0000 (08:11 -0400)
* range-op.cc (range_relational_tests): New.
(range_op_tests): Call range_relational_tests.

gcc/range-op.cc

index 92b314df9dd4de79a1146662ebb13cfafe24571c..1692a096e20413623a945ac63e36269dd0d54375 100644 (file)
@@ -4244,6 +4244,30 @@ range_op_bitwise_and_tests ()
   ASSERT_FALSE (res.contains_p (INT (0)));
 }
 
+static void
+range_relational_tests ()
+{
+  int_range<2> lhs (unsigned_char_type_node);
+  int_range<2> op1 (UCHAR (8), UCHAR (10));
+  int_range<2> op2 (UCHAR (20), UCHAR (20));
+
+  // Never wrapping additions mean LHS > OP1.
+  tree_code code = op_plus.lhs_op1_relation (lhs, op1, op2);
+  ASSERT_TRUE (code == GT_EXPR);
+
+  // Most wrapping additions mean nothing...
+  op1 = int_range<2> (UCHAR (8), UCHAR (10));
+  op2 = int_range<2> (UCHAR (0), UCHAR (255));
+  code = op_plus.lhs_op1_relation (lhs, op1, op2);
+  ASSERT_TRUE (code == VREL_NONE);
+
+  // However, always wrapping additions mean LHS < OP1.
+  op1 = int_range<2> (UCHAR (1), UCHAR (255));
+  op2 = int_range<2> (UCHAR (255), UCHAR (255));
+  code = op_plus.lhs_op1_relation (lhs, op1, op2);
+  ASSERT_TRUE (code == LT_EXPR);
+}
+
 void
 range_op_tests ()
 {
@@ -4251,6 +4275,7 @@ range_op_tests ()
   range_op_lshift_tests ();
   range_op_bitwise_and_tests ();
   range_op_cast_tests ();
+  range_relational_tests ();
 }
 
 } // namespace selftest
This page took 0.065845 seconds and 5 git commands to generate.