diff options
author | Nathan Sidwell <nathan@acm.org> | 2015-08-11 12:34:43 +0000 |
---|---|---|
committer | Nathan Sidwell <nathan@gcc.gnu.org> | 2015-08-11 12:34:43 +0000 |
commit | 8299dd5cbb6fbb756f0ad2f4dbff31c549e00837 (patch) | |
tree | af86e77b2c0ba60ccadff98269b63e61f2dd9844 /gcc | |
parent | a6810021afdc4e05a44d7c56682eebe9452c359d (diff) | |
download | gcc-8299dd5cbb6fbb756f0ad2f4dbff31c549e00837.zip gcc-8299dd5cbb6fbb756f0ad2f4dbff31c549e00837.tar.gz gcc-8299dd5cbb6fbb756f0ad2f4dbff31c549e00837.tar.bz2 |
* tree-vrp.c (simplify_abs_using_ranges): Simplify.
From-SVN: r226779
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 2 | ||||
-rw-r--r-- | gcc/tree-vrp.c | 30 |
2 files changed, 11 insertions, 21 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3a07816..cb2d6a0 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,7 @@ 2015-08-11 Nathan Sidwell <nathan@acm.org> + * tree-vrp.c (simplify_abs_using_ranges): Simplify. + * tree-ssa-phiopt.c (minmax_replacement): Create new ssa name if we're not the only contributor to target phi. diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c index 31a9d21..d51acaa 100644 --- a/gcc/tree-vrp.c +++ b/gcc/tree-vrp.c @@ -9152,37 +9152,25 @@ simplify_div_or_mod_using_ranges (gimple stmt) static bool simplify_abs_using_ranges (gimple stmt) { - tree val = NULL; tree op = gimple_assign_rhs1 (stmt); - tree type = TREE_TYPE (op); value_range_t *vr = get_value_range (op); - if (TYPE_UNSIGNED (type)) - { - val = integer_zero_node; - } - else if (vr) + if (vr) { + tree val = NULL; bool sop = false; val = compare_range_with_value (LE_EXPR, vr, integer_zero_node, &sop); if (!val) { + /* The range is neither <= 0 nor > 0. Now see if it is + either < 0 or >= 0. */ sop = false; - val = compare_range_with_value (GE_EXPR, vr, integer_zero_node, + val = compare_range_with_value (LT_EXPR, vr, integer_zero_node, &sop); - - if (val) - { - if (integer_zerop (val)) - val = integer_one_node; - else if (integer_onep (val)) - val = integer_zero_node; - } } - if (val - && (integer_onep (val) || integer_zerop (val))) + if (val) { if (sop && issue_strict_overflow_warning (WARN_STRICT_OVERFLOW_MISC)) { @@ -9198,10 +9186,10 @@ simplify_abs_using_ranges (gimple stmt) } gimple_assign_set_rhs1 (stmt, op); - if (integer_onep (val)) - gimple_assign_set_rhs_code (stmt, NEGATE_EXPR); - else + if (integer_zerop (val)) gimple_assign_set_rhs_code (stmt, SSA_NAME); + else + gimple_assign_set_rhs_code (stmt, NEGATE_EXPR); update_stmt (stmt); return true; } |