]> git.ipfire.org Git - thirdparty/gcc.git/blobdiff - gcc/tree-ssa-forwprop.c
Merge from trunk.
[thirdparty/gcc.git] / gcc / tree-ssa-forwprop.c
index a826137aabdc482d1125621941b56998f54f0980..e8a92ed6c16fa32addd462d2f6c0406bbe3f351b 100644 (file)
@@ -823,9 +823,9 @@ forward_propagate_addr_expr_1 (tree name, tree def_rhs,
       if ((def_rhs_base = get_addr_base_and_unit_offset (TREE_OPERAND (def_rhs, 0),
                                                         &def_rhs_offset)))
        {
-         double_int off = mem_ref_offset (lhs);
+         offset_int off = mem_ref_offset (lhs);
          tree new_ptr;
-         off += double_int::from_shwi (def_rhs_offset);
+         off += def_rhs_offset;
          if (TREE_CODE (def_rhs_base) == MEM_REF)
            {
              off += mem_ref_offset (def_rhs_base);
@@ -835,7 +835,7 @@ forward_propagate_addr_expr_1 (tree name, tree def_rhs,
            new_ptr = build_fold_addr_expr (def_rhs_base);
          TREE_OPERAND (lhs, 0) = new_ptr;
          TREE_OPERAND (lhs, 1)
-           = double_int_to_tree (TREE_TYPE (TREE_OPERAND (lhs, 1)), off);
+           = wide_int_to_tree (TREE_TYPE (TREE_OPERAND (lhs, 1)), off);
          tidy_after_forward_propagate_addr (use_stmt);
          /* Continue propagating into the RHS if this was not the only use.  */
          if (single_use_p)
@@ -914,9 +914,9 @@ forward_propagate_addr_expr_1 (tree name, tree def_rhs,
       if ((def_rhs_base = get_addr_base_and_unit_offset (TREE_OPERAND (def_rhs, 0),
                                                         &def_rhs_offset)))
        {
-         double_int off = mem_ref_offset (rhs);
+         offset_int off = mem_ref_offset (rhs);
          tree new_ptr;
-         off += double_int::from_shwi (def_rhs_offset);
+         off += def_rhs_offset;
          if (TREE_CODE (def_rhs_base) == MEM_REF)
            {
              off += mem_ref_offset (def_rhs_base);
@@ -926,7 +926,7 @@ forward_propagate_addr_expr_1 (tree name, tree def_rhs,
            new_ptr = build_fold_addr_expr (def_rhs_base);
          TREE_OPERAND (rhs, 0) = new_ptr;
          TREE_OPERAND (rhs, 1)
-           = double_int_to_tree (TREE_TYPE (TREE_OPERAND (rhs, 1)), off);
+           = wide_int_to_tree (TREE_TYPE (TREE_OPERAND (rhs, 1)), off);
          fold_stmt_inplace (use_stmt_gsi);
          tidy_after_forward_propagate_addr (use_stmt);
          return res;
@@ -1447,8 +1447,8 @@ constant_pointer_difference (tree p1, tree p2)
                {
                  p = TREE_OPERAND (q, 0);
                  off = size_binop (PLUS_EXPR, off,
-                                   double_int_to_tree (sizetype,
-                                                       mem_ref_offset (q)));
+                                   wide_int_to_tree (sizetype,
+                                                     mem_ref_offset (q)));
                }
              else
                {
@@ -2791,7 +2791,7 @@ associate_pointerplus (gimple_stmt_iterator *gsi)
   if (gimple_assign_rhs1 (def_stmt) != ptr)
     return false;
 
-  algn = double_int_to_tree (TREE_TYPE (ptr), ~tree_to_double_int (algn));
+  algn = wide_int_to_tree (TREE_TYPE (ptr), wi::bit_not (algn));
   gimple_assign_set_rhs_with_ops (gsi, BIT_AND_EXPR, ptr, algn);
   fold_stmt_inplace (gsi);
   update_stmt (stmt);
@@ -2953,8 +2953,10 @@ combine_conversions (gimple_stmt_iterator *gsi)
          tree tem;
          tem = fold_build2 (BIT_AND_EXPR, inside_type,
                             defop0,
-                            double_int_to_tree
-                              (inside_type, double_int::mask (inter_prec)));
+                            wide_int_to_tree
+                            (inside_type,
+                             wi::mask (inter_prec, false,
+                                       TYPE_PRECISION (inside_type))));
          if (!useless_type_conversion_p (type, inside_type))
            {
              tem = force_gimple_operand_gsi (gsi, tem, true, NULL_TREE, true,