aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/function-tests.cc1
-rw-r--r--gcc/selftest.h1
-rw-r--r--gcc/value-relation.cc25
3 files changed, 26 insertions, 1 deletions
diff --git a/gcc/function-tests.cc b/gcc/function-tests.cc
index 846226d..39970b2 100644
--- a/gcc/function-tests.cc
+++ b/gcc/function-tests.cc
@@ -583,6 +583,7 @@ test_ranges ()
push_cfun (fun);
range_tests ();
range_op_tests ();
+ relation_tests ();
build_cfg (fndecl);
convert_to_ssa (fndecl);
diff --git a/gcc/selftest.h b/gcc/selftest.h
index 1abec2d..20d522a 100644
--- a/gcc/selftest.h
+++ b/gcc/selftest.h
@@ -244,6 +244,7 @@ extern void predict_cc_tests ();
extern void pretty_print_cc_tests ();
extern void range_tests ();
extern void range_op_tests ();
+extern void relation_tests ();
extern void gimple_range_tests ();
extern void read_rtl_function_cc_tests ();
extern void rtl_tests_cc_tests ();
diff --git a/gcc/value-relation.cc b/gcc/value-relation.cc
index b8fa765..6f8a1b7 100644
--- a/gcc/value-relation.cc
+++ b/gcc/value-relation.cc
@@ -115,7 +115,7 @@ relation_kind rr_union_table[VREL_LAST][VREL_LAST] = {
{ VREL_VARYING, VREL_VARYING, VREL_VARYING, VREL_VARYING, VREL_VARYING,
VREL_VARYING, VREL_VARYING, VREL_VARYING },
// VREL_UNDEFINED
- { VREL_VARYING, VREL_LT, VREL_LE, VREL_GT, VREL_GE, VREL_UNDEFINED,
+ { VREL_VARYING, VREL_UNDEFINED, VREL_LT, VREL_LE, VREL_GT, VREL_GE,
VREL_EQ, VREL_NE },
// VREL_LT
{ VREL_VARYING, VREL_LT, VREL_LT, VREL_LE, VREL_NE, VREL_VARYING, VREL_LE,
@@ -1718,3 +1718,26 @@ equiv_relation_iterator::get_name (relation_kind *rel)
}
return NULL_TREE;
}
+
+#if CHECKING_P
+#include "selftest.h"
+
+namespace selftest
+{
+void
+relation_tests ()
+{
+ // Verify commutativity of relation_intersect and relation_union.
+ for (relation_kind r1 = VREL_VARYING; r1 < VREL_PE8;
+ r1 = relation_kind (r1 + 1))
+ for (relation_kind r2 = VREL_VARYING; r2 < VREL_PE8;
+ r2 = relation_kind (r2 + 1))
+ {
+ ASSERT_EQ (relation_intersect (r1, r2), relation_intersect (r2, r1));
+ ASSERT_EQ (relation_union (r1, r2), relation_union (r2, r1));
+ }
+}
+
+} // namespace selftest
+
+#endif // CHECKING_P