diff options
author | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2011-05-09 18:36:31 +0000 |
---|---|---|
committer | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2011-05-09 18:36:31 +0000 |
commit | e4c0337862a3d76255d4ad7be49b4435910ede1e (patch) | |
tree | f657c3abe40e08379f4708214ebd384c11b6fe20 /gcc/fold-const.c | |
parent | 805d6a7592f18617e4dda5f839dfd02618aaf779 (diff) | |
download | gcc-e4c0337862a3d76255d4ad7be49b4435910ede1e.zip gcc-e4c0337862a3d76255d4ad7be49b4435910ede1e.tar.gz gcc-e4c0337862a3d76255d4ad7be49b4435910ede1e.tar.bz2 |
fold-const.c (fold_range_test): Pass LOC to build_range_check.
* fold-const.c (fold_range_test): Pass LOC to build_range_check.
(fold_ternary_loc): Use expr_location_or.
From-SVN: r173588
Diffstat (limited to 'gcc/fold-const.c')
-rw-r--r-- | gcc/fold-const.c | 18 |
1 files changed, 5 insertions, 13 deletions
diff --git a/gcc/fold-const.c b/gcc/fold-const.c index a42921b6..ab68eab 100644 --- a/gcc/fold-const.c +++ b/gcc/fold-const.c @@ -4822,7 +4822,7 @@ fold_range_test (location_t loc, enum tree_code code, tree type, if ((lhs == 0 || rhs == 0 || operand_equal_p (lhs, rhs, 0)) && merge_ranges (&in_p, &low, &high, in0_p, low0, high0, in1_p, low1, high1) - && 0 != (tem = (build_range_check (UNKNOWN_LOCATION, type, + && 0 != (tem = (build_range_check (loc, type, lhs != 0 ? lhs : rhs != 0 ? rhs : integer_zero_node, in_p, low, high)))) @@ -13332,9 +13332,7 @@ fold_ternary_loc (location_t loc, enum tree_code code, tree type, TREE_OPERAND (arg0, 1)) && !HONOR_SIGNED_ZEROS (TYPE_MODE (TREE_TYPE (op2)))) { - location_t loc0 = EXPR_LOCATION (arg0); - if (loc0 == UNKNOWN_LOCATION) - loc0 = loc; + location_t loc0 = expr_location_or (arg0, loc); tem = fold_truth_not_expr (loc0, arg0); if (tem && COMPARISON_CLASS_P (tem)) { @@ -13349,9 +13347,7 @@ fold_ternary_loc (location_t loc, enum tree_code code, tree type, if (truth_value_p (TREE_CODE (arg0)) && tree_swap_operands_p (op1, op2, false)) { - location_t loc0 = EXPR_LOCATION (arg0); - if (loc0 == UNKNOWN_LOCATION) - loc0 = loc; + location_t loc0 = expr_location_or (arg0, loc); /* See if this can be inverted. If it can't, possibly because it was a floating-point inequality comparison, don't do anything. */ @@ -13500,9 +13496,7 @@ fold_ternary_loc (location_t loc, enum tree_code code, tree type, && truth_value_p (TREE_CODE (arg0)) && truth_value_p (TREE_CODE (arg1))) { - location_t loc0 = EXPR_LOCATION (arg0); - if (loc0 == UNKNOWN_LOCATION) - loc0 = loc; + location_t loc0 = expr_location_or (arg0, loc); /* Only perform transformation if ARG0 is easily inverted. */ tem = fold_truth_not_expr (loc0, arg0); if (tem) @@ -13516,9 +13510,7 @@ fold_ternary_loc (location_t loc, enum tree_code code, tree type, && truth_value_p (TREE_CODE (arg0)) && truth_value_p (TREE_CODE (op2))) { - location_t loc0 = EXPR_LOCATION (arg0); - if (loc0 == UNKNOWN_LOCATION) - loc0 = loc; + location_t loc0 = expr_location_or (arg0, loc); /* Only perform transformation if ARG0 is easily inverted. */ tem = fold_truth_not_expr (loc0, arg0); if (tem) |