diff options
author | Aldy Hernandez <aldyh@redhat.com> | 2020-05-17 13:56:55 +0200 |
---|---|---|
committer | Aldy Hernandez <aldyh@redhat.com> | 2020-05-17 13:56:55 +0200 |
commit | e7e785dfec360573c2e8a700ef570a22359410c5 (patch) | |
tree | d86a6c6a2208226e607e9f69170ec5e1d7e25ad9 /gcc/tree-vrp.c | |
parent | 8bfc81876f9325891a52d036a9c454d0c81b3033 (diff) |
Revert previous patch:
2020-05-17 Aldy Hernandez <aldyh@redhat.com>
* tree-vrp.c (operand_less_p): Move to...
* vr-values.c (operand_less_p): ...here.
* tree-vrp.h (operand_less_p): Remove.
Diffstat (limited to 'gcc/tree-vrp.c')
-rw-r--r-- | gcc/tree-vrp.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c index f8191facaf9..4b5df543c00 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, |