]> git.ipfire.org Git - thirdparty/gcc.git/blobdiff - gcc/tree-ssa-reassoc.c
Merge in trunk.
[thirdparty/gcc.git] / gcc / tree-ssa-reassoc.c
index 538a8ef0e4a25e874b97ff9dc1f772544b2f3b53..df34bc29ffcbbf9780b9e79cfb50a7ec224ff65a 100644 (file)
@@ -1046,13 +1046,13 @@ decrement_power (gimple stmt)
       arg1 = gimple_call_arg (stmt, 1);
       c = TREE_REAL_CST (arg1);
       power = real_to_integer (&c) - 1;
-      real_from_integer (&cint, VOIDmode, power, 0, 0);
+      real_from_integer (&cint, VOIDmode, power, SIGNED);
       gimple_call_set_arg (stmt, 1, build_real (TREE_TYPE (arg1), cint));
       return power;
 
     CASE_FLT_FN (BUILT_IN_POWI):
       arg1 = gimple_call_arg (stmt, 1);
-      power = TREE_INT_CST_LOW (arg1) - 1;
+      power = tree_to_hwi (arg1) - 1;
       gimple_call_set_arg (stmt, 1, build_int_cst (TREE_TYPE (arg1), power));
       return power;
 
@@ -3622,8 +3622,7 @@ acceptable_pow_call (gimple stmt, tree *base, HOST_WIDE_INT *exponent)
        return false;
 
       *exponent = real_to_integer (&c);
-      real_from_integer (&cint, VOIDmode, *exponent,
-                        *exponent < 0 ? -1 : 0, 0);
+      real_from_integer (&cint, VOIDmode, *exponent, SIGNED);
       if (!real_identical (&c, &cint))
        return false;
 
@@ -3633,10 +3632,10 @@ acceptable_pow_call (gimple stmt, tree *base, HOST_WIDE_INT *exponent)
       *base = gimple_call_arg (stmt, 0);
       arg1 = gimple_call_arg (stmt, 1);
 
-      if (!host_integerp (arg1, 0))
+      if (!tree_fits_shwi_p (arg1))
        return false;
 
-      *exponent = TREE_INT_CST_LOW (arg1);
+      *exponent = tree_to_shwi (arg1);
       break;
 
     default: