From e7e785dfec360573c2e8a700ef570a22359410c5 Mon Sep 17 00:00:00 2001 From: Aldy Hernandez Date: Sun, 17 May 2020 13:56:55 +0200 Subject: [PATCH] Revert previous patch: 2020-05-17 Aldy Hernandez * tree-vrp.c (operand_less_p): Move to... * vr-values.c (operand_less_p): ...here. * tree-vrp.h (operand_less_p): Remove. --- gcc/ChangeLog | 9 +++++++++ gcc/tree-vrp.c | 26 ++++++++++++++++++++++++++ gcc/tree-vrp.h | 1 + gcc/vr-values.c | 26 -------------------------- 4 files changed, 36 insertions(+), 26 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5c90953..60ff1ff 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,14 @@ 2020-05-17 Aldy Hernandez + Revert: + 2020-05-17 Aldy Hernandez + + * tree-vrp.c (operand_less_p): Move to... + * vr-values.c (operand_less_p): ...here. + * tree-vrp.h (operand_less_p): Remove. + +2020-05-17 Aldy Hernandez + * tree-vrp.c (operand_less_p): Move to... * vr-values.c (operand_less_p): ...here. * tree-vrp.h (operand_less_p): Remove. diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c index f8191fa..4b5df54 100644 --- a/gcc/tree-vrp.c +++ b/gcc/tree-vrp.c @@ -685,6 +685,32 @@ build_symbolic_expr (tree type, tree sym, bool neg, tree inv) return build2 (pointer_p ? POINTER_PLUS_EXPR : PLUS_EXPR, type, t, inv); } +/* Return + 1 if VAL < VAL2 + 0 if !(VAL < VAL2) + -2 if those are incomparable. */ +int +operand_less_p (tree val, tree val2) +{ + /* LT is folded faster than GE and others. Inline the common case. */ + if (TREE_CODE (val) == INTEGER_CST && TREE_CODE (val2) == INTEGER_CST) + return tree_int_cst_lt (val, val2); + else if (TREE_CODE (val) == SSA_NAME && TREE_CODE (val2) == SSA_NAME) + return val == val2 ? 0 : -2; + else + { + int cmp = compare_values (val, val2); + if (cmp == -1) + return 1; + else if (cmp == 0 || cmp == 1) + return 0; + else + return -2; + } + + return 0; +} + /* Compare two values VAL1 and VAL2. Return -2 if VAL1 and VAL2 cannot be compared at compile-time, diff --git a/gcc/tree-vrp.h b/gcc/tree-vrp.h index b74fe00..aa8201f 100644 --- a/gcc/tree-vrp.h +++ b/gcc/tree-vrp.h @@ -116,6 +116,7 @@ extern bool range_int_cst_p (const value_range *); extern int compare_values (tree, tree); extern int compare_values_warnv (tree, tree, bool *); +extern int operand_less_p (tree, tree); void range_fold_unary_expr (value_range *, enum tree_code, tree type, const value_range *, tree op0_type); diff --git a/gcc/vr-values.c b/gcc/vr-values.c index f7cba16..2e3a078 100644 --- a/gcc/vr-values.c +++ b/gcc/vr-values.c @@ -1104,32 +1104,6 @@ vr_values::check_for_binary_op_overflow (enum tree_code subcode, tree type, return true; } -/* Return - 1 if VAL < VAL2 - 0 if !(VAL < VAL2) - -2 if those are incomparable. */ -static int -operand_less_p (tree val, tree val2) -{ - /* LT is folded faster than GE and others. Inline the common case. */ - if (TREE_CODE (val) == INTEGER_CST && TREE_CODE (val2) == INTEGER_CST) - return tree_int_cst_lt (val, val2); - else if (TREE_CODE (val) == SSA_NAME && TREE_CODE (val2) == SSA_NAME) - return val == val2 ? 0 : -2; - else - { - int cmp = compare_values (val, val2); - if (cmp == -1) - return 1; - else if (cmp == 0 || cmp == 1) - return 0; - else - return -2; - } - - return 0; -} - /* Try to derive a nonnegative or nonzero range out of STMT relying primarily on generic routines in fold in conjunction with range data. Store the result in *VR */ -- 2.7.4